15

Android 2.1 携帯電話で作成したリモート デバイスへの Bluetooth 接続の信号強度を知る必要があります。SDK から、リモート デバイスを検出した時点で RSSI を特定できることがわかります。しかし、その RSSI 値を経時的に更新する方法がわかりません。

誰か手を貸してくれませんか?ありがとう!!

4

2 に答える 2

16

SDKからRSSIを取得する唯一の方法です。ペアリングされたデバイスの信号の強度を定期的に監視するだけでは役に立たないため、少し不便です。

ただし、方法はありますが、SDKから外れています。ネイティブAPI(NDKを使用)を使用して、Android(およびほとんどすべてのLinuxシステム)の基盤となるBluetoothフレームワークであるBluezAPIによって提供される関数を呼び出すことができます。問題の関数は(Bluezスタックの一部)hci_read_rssi()によって提供されます。libbluetooth.soそれを使用する方法を学ぶために、Hcidumpツールソース(Bluezに付属)を見ることができます。関数にJNIラッパーコードを記述して、ペアリングされたデバイスの信号強度を取得できます。

この方法を使用することには2つの欠点があります。

  • RSSIを測定するには、最初にリモートデバイスに接続し、少なくとも低レベルで接続し(この接続には認証は必要ありません)、呼び出し後に接続を解放する必要がありhci_read_rssi()ます。他の無線通信手段が提供するように、これはビーコンからRSSIを測定するよりも遅いです(GSMまたはWIFI)
  • リモートBluetoothデバイスへの低レベル接続には、Androidスーパーユーザー権限が必要です。したがって、ハッキングされていない電話で実行できる書き込みとアプリケーションについては忘れてください(通常、rootアクセスがなく、Motorola Droid / Milestoneのようなものは、取得しようとすると保証が無効になります)。
于 2010-03-02T08:03:02.807 に答える