2016-08-03 15 views
1

私のアンドロイドアプリケーションは、手動ボタンを押して停止することを求める前に、結果をスキャンするためにAndroidのBLE接続速度の問題

BluetoothAdapter.startLeScan() 

を使用しています。

このタイプの態度は、接続時間の時間に影響しますか?

私は、Bluetoothサービスがバインドされているときにスキャンがブロックされていると思っています。これは正しいですか?

接続時間は時々異なります。平均で約1〜2秒かかりますが、時には5〜6秒かそれ以上の時間がかかります。なぜこれが起こるはずですか?

答えて

1

このタイプの態度は、接続時間の時間に影響しますか?

時には多分。接続手順は、そのデバイスが接続状態に入った後にconnect-requestを送信することによって開始されます。デバイスが接続状態になる前に手動でスキャンを停止すると、接続を中断することがあります。

私は、Bluetoothサービスが 書き込みに任意のコードなしで接続確立後、バインドさ およびブロック解除されたときにスキャンがブロックされていると思います。これは正しいですか?

はい、そうです。

接続時間は随時です。約1〜2秒程度かかりますが、時には約5〜6秒かそれ以上の時間がかかります。 なぜこれが起こるはずですか?

多くの理由があり、最初に大きな理由の1つと考えることができます。それはBLEデバイスの特別な動作モードです。彼らは常に活発ではなく、定期的に活動しています。たとえば、10秒間に100msの間アクティブになり、他の9.9秒でスリープします。 BLEデバイスがスリープ状態に入ったときにスキャンを開始すると、9.9秒以上が必要になります。

第2に、問題はお使いのAndroid搭載端末に原因がある可能性があります。それが接続要求を送信し、他のタスクまたはイベントが接続手順を中断する可能性があることを確認します。

第3に、干渉があるかどうかですか?たぶんWIFIやUSB 3.0。

+0

返信いただきありがとうございます。しかし、私はまだ最後のものを完全に理解することはできません。それはスキャンすることではなく、接続することです。私が使っているデバイスは決して眠らないと思う。スキャンを開始すると、スキャナのコールバックが0.1秒ごとに呼び出されます。 – March3April4

+0

@ March3April4接続が開始されると、スニッファを使用してエアパケットをキャプチャできます。これらのパケットに基づいて、問題が発生する可能性があります。 –