2017-01-06 13 views
4

周辺機器からデータを受信するためにBluetooth Low Energyを使用するアンドロイドアプリケーションを開発しています。 デバイス自体が広告メッセージの一部としてデータを送信し、いつでもメッセージを送信できます。 したがって、アプリケーションはBLEデバイスを連続的にスキャンすることによって動作します。 画面がONになると、アプリケーションは意図したとおりにスキャン結果を受け取ります。 画面がOFFの場合、スキャン結果は5秒ごとにのみ受信されます。 私は携帯電話がバッテリーの寿命を最適化しようとしていると思うが、このアプリはミッションクリティカルなので、メッセージを失う余裕はない。画面がオフのときにBluetooth低エネルギースキャン結果の配信が減少する

「フォアグラウンドサービス」として設定されているサービスによってスキャンが行われるため、OSは重要であることを認識します。 サービスはPowerManager.PARTIAL_WAKE_LOCKも取得しますが、それは役に立たないようです。 アプリケーションはバッテリ最適化から除外され、Dozeモードまたはディープスリープモードには入りません。 アプリケーションは、次のScanSettingsを使用している:私はギャラクシーS7で働いています

ScanSettings.SCAN_MODE_LOW_LATENCY 
ScanSettings.CALLBACK_TYPE_ALL_MATCHES 
ScanSettings.MATCH_MODE_AGGRESSIVE 
ScanSettings.MATCH_NUM_MAX_ADVERTISEMENT 

が、私は同じ動作がギャラクシーS7エッジで起こると言われています。 私は他の非Samsungデバイスでテストしており、意図したとおりに動作します(画面がオフの場合、スキャン結果が継続的に受信されます)。

質問:私が開発者として、画面がオフになってもBTアダプターがスキャン結果を継続的に送信できるようにするにはどうすればよいですか?

答えて

1

画面がオフの場合、Samsungは自動的にスキャンモードをlow_powerに変更します。それはAndroid OS上でのカスタマイズなので、残念ながらそれを変更することはできません。

関連する問題