2013年3月28日木曜日

Android アプリケーション間FIFO通信


Androidにて複数アプリ間でデータのやりとりをするためにFIFOサービスを実装してみた。
実際にはAIDLを使えばええやん ・・ なのだが。

たとえばTCP通信をこのサービスで行い、やり取りした情報を他の複数アプリにばら撒くなどという使い方に利用できる。
このようにFIFOサービスを使うことで、複数アプリ間でデータの共通化が可能となる。

FIFOサービスの使用例


FIFOサービスの構成は以下のようにしている。
外部アプリとはAIDLでやり取りを行うために準備した。
実際のFIFOの制御は速度向上のためC++(JNI)で記述している。
またFIFOの本数は、ラッパークラスを配列で複数実装することにより対応できている。

FIFOサービス構成

実際のソースコードはここに置いている。
ソース一式はこちらから

 fifo.zip : このFIFOサービスを実現している環境一式
 fifotest.zip : このFIFOサービスと接続し、データをやり取りするためのテスト環境一式

fifotestはボタン1でFIFOへのデータ書き出し、ボタン2でFIFOからのデータ読出しを行います。

Androidによるデータの共有化、アプリケーション間FIFO通信などに利用してください。
JNIの部分を変更することで、SharedMemory(共有メモリ)のような使い方もできます。

ソースは理解できるかな? 慣れないとなかなか難しいかもしれませんね。
開発環境全体をダウンロードできるようにしていますので、Eclipseで動作確認してみてください。

動作原理がわかれば簡単です。がんばってトライしてみてください。

0 件のコメント:

コメントを投稿