ここで述べたように、画面がオフにonStop()
なると、現在のアクティビティの が呼び出されます。が呼び出されたときonStop()
に、画面のオン/オフの状態を確認する必要があります。そのため、これらのアクション ( AND ) をActivity
登録して、現在のオン/オフの状態を記録しました (そして、それらは適切に機能し、ログに記録しました!)。
しかし、画面をオフにして でオン/オフの状態を確認すると、画面がオンになっていると表示されます。なぜ?受信者は呼び出される前に受信する必要があると思いますが、何が問題なのですか?BroadcastReceiver
ACTION_SCREEN_ON
ACTION_SCREEN_OFF
onStop
ACTION_SCREEN_OFF
onStop
質問する
26617 次
3 に答える
73
この目的で PowerManager システム サービスの使用を試みることができます。例と公式ドキュメントを次に示します(このメソッドは API レベル 7 で追加されたことに注意してください)。
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = pm.isScreenOn();
編集:
isScreenOn() メソッドは非推奨の API レベル 21 です。代わりに isInteractive を使用する必要があります。
boolean isScreenOn = pm.isInteractive();
http://developer.android.com/reference/android/os/PowerManager.html#isInteractive()
于 2013-10-13T21:23:38.957 に答える
0
PowerManager pm = (PowerManager) mMainActivity.getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = Utils.hasLollipop() ? pm.isInteractive() : pm.isScreenOn();
于 2019-12-19T04:18:05.137 に答える