2017-09-12 10 views
0

特定のHWデバイスの間のBluetooth低エネルギー通信を処理する前景サービスをで開発しました。Androidサービスと他のプロジェクトのアクティビティとの間の通信

このサービスは、サービスを管理するためのいくつかのパラメータを設定することができます。とにかく、それも殺されたactiviyで動作します。

サービスにもBootReceiverが含まれており、デバイスの起動時に起動されます。

さて、私の目的は別のプロジェクト一つ以上のactivityesとを作成することで、それらの一つはに持っているサービスとexcangeデータと通信します。

私は、ネット上のaswerのために見てきたし、それらの結果である:

  • バインドおよびインタフェース

この1つは正しいものであるように思えるが、それは多くの複雑ですそれは少しのデータのために多くのコードを必要とします。

  • 放送受信機

放送受信機は、実装が簡単ですが、私は、例えば、それぞれの100msをブルートゥースから一部のデータを読み込む必要がある場合は?私はこれが正しい方法だとは思わない。

このような通信を実装する正しい方法はどれですか?我々は、アプリケーション間でデータを共有するには、いくつかの方法を持っているアンドロイドで

+0

「aidl」と試すhttps://developer.android.com/guide/components/aidl.html –

+0

この種の通信にはaidlを使用することをお勧めしますか?とにかくそれを読むよ、ありがとう –

+0

はい、あなたは他のアプリケーションからサービスにアクセスする必要があります –

答えて

1

、依存だ - あなたがアプリケーション、サイバー問題、バッテリー消費量とタイミングの問題の間で共有したいんどのように多くのデータ:

1)することはできデータを共有するには、両方のアプリでaidlを使用してください。オブジェクトを送信できないことに注意してください。データをパーセル可能またはバイト配列に変換する必要があります。プロ - 短いデータのための素晴らしいソリューション。

2)SharedPreferencesと両方のアプリケーションで同じandroid:sharedUserId = "android.uid.share"を使用します。バッテリーの消費とタイミングの問題で、大きなデータを共有するのには適していません。

3)クライアント/サーバーモデルを使用し、ボットアプリケーションでプロのユニークソケットを開くことができます。信頼性が高く、安全性が確保され、バッテリ寿命が短くなります。

4)ブロードキャストレシーバ - 潜在的にタイミングの問題があるため、[推奨しません]。

5)sdcardで共有ファイルを使用する - 推奨しません。

+0

私の場合、私は小さなデータ、オブジェクト、ブールと整数を送信する必要があります。しかし、本当に速く、随分と。あなたは助けをお勧めしますか? –

+0

はい、その場合、aidlはアプリケーション間で通信する最善の方法です。 –

関連する問題