API で何ができるかはわかりませんが、これの基礎となる Bluetooth Host Controller Interface (HCI) コマンドは「Inquiry Command」です。
これにより、一定時間および/または一定数の応答でデバイスについて問い合わせることができます。
私は Bluetooth の初心者であり、専門家ではありませんが...
低電力モードの Bluetooth デバイスから少なくとも 1 つの応答を取得するには 1.28 秒かかるため、照会時間はその期間の倍数で最大 61.44 秒 (48 期間) になるため、時間範囲は 1 (1.28 秒) になります。秒) ~ 48 (61.44 秒)。
ただし、1.28 秒以内に応答できるデバイスがいくつかある可能性があります。
また、受け入れる応答の数 (1..255) または 0 を指定して無制限にすることもできます (例: 時間がなくなるまで)。
お探しのデバイスが見つかった場合は、お問い合わせをキャンセルすることもできます。
Bluetooth 2.1 + EDR ファームウェアを搭載した CSR bluetooth チップを使用してデスクから非科学的なテストを行い、チップ UART を介したデバッグ出力でチップ上で照会を実行します。各問い合わせを 10 回実行し、結果の平均を取得しました。
- 1 回の問い合わせ時間 (1.28 秒) で、平均 10 個の一意の Bluetooth アドレスが得られました。
- 5 回の問い合わせ時間 (6.4 秒) で、平均 23 個の一意の Bluetooth アドレスが得られました。
- 10 回の問い合わせ時間 (12.8 秒) で、平均 29 個の一意の Bluetooth アドレスが得られました。
私は「ユニーク」と言いますが、実際には結果は同じアドレスを何度も何度も繰り返しました。
ただし、この周辺 (私のオフィス) の Bluetooth デバイスのほとんどは低電力モードではないため、これは「現実世界」を代表するものではありません。おそらく、PC、ラップトップ、およびテスト キットをデバイスのクラスで除外できたと思います。それは、携帯電話、発見可能なヘッドセットなどを取得します...
照会を RSSI と組み合わせて、信号が最も強いデバイスを取得することもできますが、それらが必ずしも最も近いとは限りません。
あなたのシナリオでは、時間とデバイスの数に基づいて照会を行うことができます (例: 4 * 1.28 秒または 10 台のデバイス)。
要約すると、問い合わせを行うことができる最短時間は 1.28 秒で、10+/- になる可能性があります。エリア内のデバイスが起きており、近くにある場合。
Bluetooth 環境が飽和している場合、または (同じ部屋で電子レンジが使用されている) 場合、範囲内のすべてのデバイスを見つけるのに時間がかかることがあります。