周囲のすべての周辺機器が送信していることを確認する必要があるため、継続的な BLE スキャンを実行する必要があるアプリケーションを開発しました。それらの 1 つまたは複数が送信を停止した場合、アプリはアラートを生成する必要があります。私はいくつかの電話でそれをテストしました:
1 - Android 5.1.1 搭載の Samsung Note 4 2 - Android 6.0 搭載の Honor 8 3 - Android 6.0.1 搭載の LG Nexus 5 4 - Android 6.0.1 搭載の Samsung Note 4 5 - Android 6.0.1 搭載の Samsung J5
PHONES 4 および 5 でのみ、BLE 周辺機器の検出は、デバイスがロックされている場合と比べて、デバイスが「起動」している場合とは異なる動作をするようです。特に、電源ボタンを押してデバイスがロック状態になると、電話機は周辺機器の検出を停止します。少なくとも、検出は非常に低い頻度でトリガーされます。電源ボタンをもう一度押すと (ピンを入力してロック解除モードに戻ります)、BLE 検出が再び開始され、継続的に実行されます。
スキャンを実行するサービスは完全に稼働していますが、単にスキャンを実行していません。
この奇妙な動作は、携帯電話 4 および 5 (Samsung with Android 6.0.1) でのみ発生します。異なる Android バージョンの同じ電話、および異なる電話の同じ Android バージョンは影響を受けないようです。
さまざまな回避策を試しましたが、成功しませんでした:
- Android 設定とアプリのソース コードの両方から、アプリの Android Doze Mode を無効にする
- さまざまな ScanSettings オプションの使用: ScanMode、NumOfMatches、MatchMode など</li>
- スキャン サービスに高いウェイクロック レベルを与える
誰も同じ問題を抱えたことがありますか?
編集:Android 4.4.2を搭載したSamsung Note 2でもテスト済みで問題ありません