5

私は iBeacon にはかなり慣れていませんが、iBeacon を使用して情報と動作する Android アプリケーションを取得するために 1 日を費やしました。

Android iBeacon Library のサンプルを偶然見つけて試してみました。私は最新のaarファイル(0.7.3)を使用し、基本的にそれらの例を新しいプロジェクトにコピーして貼り付けました。AirLocate (Dev Center の Apple のコードからコンパイル) を備えた iPad を使用してビーコンを作成し、コードを起動しました。

私の問題は、ロジックなしで常に変動する範囲です。たとえば、iPad から 0.5 メートル離れた場所に電話 (この場合は Nexus 5、オリジナルの ROM、変更なし) を配置すると、次のような対策が得られます。

  • 0.01m
  • 0.03m
  • 0.07m
  • 0.48m
  • 0.01m
  • 0.02m

AirLocate を搭載した別の iPad を使用すると、より安定した現実的な測定値が得られます。問題の原因としてビーコンを除外します。

Nexus 7 2013 (元の ROM、変更なし) でテストを行いましたが、同じ問題が発生しました。wifiが問題を引き起こす可能性があることを読んだので、無効にしましたが、それでも同じです。PlayストアのRadius Networksアプリケーションにも同じ問題があります:iBeacon Locate

他の誰かがこのライブラリに問題があるかどうか疑問に思っていましたか? この問題を解決するためにできることはありますか? そのような問題を引き起こさない、私が使用できる別のライブラリを知っていますか?

どんな助けでも大歓迎です。前もって感謝します。

4

1 に答える 1

13

表示される変動の大部分は、Android が Bluetooth LE からの信号強度測定へのアクセスを許可する方法の制限が原因です。残念ながら、Android に変更を加えることなく、これについてできることはあまりありません。

iOS CoreLocation と Android iBeacon ライブラリの両方で、距離の推定値は推定値にすぎず、信号強度測定値のノイズによる変動により、推定値が跳ね返ります。

iOS CoreLocation の実装はクローズド ソースであるため、Android iBeacon ライブラリのアルゴリズムは iOS CoreLocation のアルゴリズムと同じではありません。意図は、それらが同様の方法で動作することです。Android iBeacon ライブラリは、80 パーセンタイル測定値の 10 秒間の移動平均に基づいています (たとえば、平均のために上位と下位の 10 パーセンタイル測定値は破棄されます)。計算の詳細は、次の場所で確認できます。

protected static double calculateAccuracy(int txPower, double rssi) {
  if (rssi == 0) {
    return -1.0; // if we cannot determine accuracy, return -1.
  }

  double ratio = rssi*1.0/txPower;
  if (ratio < 1.0) {
    return Math.pow(ratio,10);
  }
  else {
    double accuracy =  (0.89976)*Math.pow(ratio,7.7095) + 0.111;    
    return accuracy;
  }
}   

Android では、Bluetooth LE スキャン API はスキャンごとに 1 つの信号強度測定のみを許可します。iOS では、ブロードキャストされた広告ごとに異なる測定値を取得できます。デフォルトでは、Android iBeacon ライブラリは、フォアグラウンドにあるときに 1.1 秒ごとに 1 回の Bluetooth スキャンを実行するため、1.1 秒ごとに 1 回の測定が可能になります。そのため、1 秒間に 30 回送信する iBeacon がある場合 (iBeacon として動作する iOS デバイスのように)、iOS は 10 秒間に 300 サンプルを取得でき、Android は 9 のみです。アンドロイドで。繰り返しになりますが、オペレーティング システムを変更しない限り、これについてできることはほとんどありません。

ユースケースによっては、より多くのサンプルを長期間にわたって含むカスタム計算を実装することで、Android での距離推定のノイズを減らすことができる場合があります。これは、ユース ケースで見積もりを迅速に更新する必要がない場合にのみ適切です。これに興味がある場合は、オープン ソース ライブラリで機能リクエストを開くことができます。

于 2014-01-24T18:48:32.047 に答える