3

センサー入力をリッスンする長期サービスがあります。バッテリーの電力を節約するために、ACTION_SCREEN_OFF でセンサーのサンプリングを停止し、ACTION_SCREEN_ON で再び開始しました。

ただし、多くの場合、ロック画面の時計をちらっと見て(現在の時刻を確認するために)携帯電話の電源を入れてから、電話のロックを解除せずに再び電源を切ります。その場合、すぐにシャットダウンするためだけにセンサーをスピンアップする理由はありません。

したがって、ブロードキャストリスナーで ACTION_SCREEN_ON を ACTION_USER_PRESENT に置き換えてみました。これは 1 つの特別なケースを除いては正常に機能しました。画面がオフになり、電源ボタン (またはホーム ボタン) を同時に押すと、ロック画面がスキップされます。ACTION_USER_PRESENT は受信されず、ACTION_SCREEN_ON のみが受信されます。

ACTION_SCREEN_ON を受信したときに、画面ロックがアクティブかどうかを知り、後で ACTION_USER_PRESENT を期待する方法はありますか? または、ロック画面がスキップされた場合、ACTION_USER_PRESENT を待たずに先に進み、すぐにサンプリングを再開しますか?

4

1 に答える 1

3

Android 4.4 までは、画面がオンでロック画面が無効になっている場合、ACTION_SCREEN_ON のみが発生します。Android 5.0 以降、この場合、ACTION_SCREEN_ON と ACTION_USER_PRESENT の両方が発生します。

于 2016-01-16T16:22:34.690 に答える