AndroidのBluetoothLeScannerのsetReportDelayの目的は何ですか? なぜレポートが遅れて届くのか想像できません...
3 に答える
Android公式サイトより:
setReportDelay()reportDelayMillisは次のパラメータを取りますreportDelayMillis。
レポートの遅延 (ミリ秒)。結果がすぐに通知されるようにするには、0 に設定します。値が 0 より大きい場合、スキャン結果はキューに入れられ、要求された遅延の後、または内部バッファーがいっぱいになったときに配信されます。
あなたの質問に来ます:
AndroidのBluetoothLeScannerのsetReportDelayの目的は何ですか? なぜレポートが遅れて届くのか想像できません... |
私が理解しているように、これの目的は、非常に短い時間スキャンすると、すべてdevices/beaconsが見つかるわけではなく、2回目のスキャンでスキャン中に別のものが咳をする可能性があることです。
例:
3 つbeaconsあり、 に対して 2 つの異なるスキャンを行ったとします1s。最初のスキャンでは単一のビーコンのみが検出されましたが、2 回目のスキャンでは他のビーコンも検出されました。遅延を設定するとqueue、それらすべてが表示され、すべてを表示できるようになります。そうしないと、単一のビーコンが表示されることもあれば、すべてのビーコンが表示されることもあれば、2 つのビーコンが表示されることもありますfrequency。
Listsこの目的にも使用できるため、 abeaconが見つかったら、それらを に追加しlist、いくつかの後に表示しますdelay( を使用Handler/Timer)。しかし、これにはさらに多くの作業が必要になります。したがって、おそらくこの関数で簡略化されています
setReportDelay() > 0 の場合、スキャナーは結果をキューに入れ、通常の onScanResult() ではなく、ScanCallback から onBatchScanResults() を起動します。
これは、数秒ごとに UI の更新を行う必要がある場合に非常に便利です。アナウンス パケットが到着するたびに UI を更新するのではなく、単純に結果を遅らせることができます。また、より完全な結果セットが得られます。
デバイスがこれをサポートできる必要があることに注意してください。見る