ACTION_USER_PRESENT
,ACTION_SCREEN_ON
およびACTION_SCREEN_OFF
をサービス内に登録しました。ここで「n秒後に自動的にロックする」とACTION_USER_PRESENTが受信されない
IntentFilter screenStateFilter = new IntentFilter();
screenStateFilter.addAction(Intent.ACTION_USER_PRESENT);
screenStateFilter.addAction(Intent.ACTION_SCREEN_ON);
screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF);
mReceiver = new ScreenReceiver();
registerReceiver(mReceiver, screenStateFilter);
いくつかの状況です:私は電源ボタンを押すと、ACTION_SCREEN_ON
とACTION_SCREEN_OFF
の両方が受信されない:
はなし =ユーザーズ "画面ロック" [正しいです] 。
[正しい]ユーザーズ "画面ロック" = スワイプ:私は電源ボタンを押すと、ロック画面が表示されていると
ACTION_SCREEN_ON
が受信されます。ロック解除後、ACTION_USER_PRESENT
が届きます。[正しい]ユーザーズ "画面ロック" = パターン/ PIN /パスワード & すぐに自動的に = をロック:私は電源ボタンを押すと、ロック画面が表示されていると
ACTION_SCREEN_ON
が受信される。ロック解除後、ACTION_USER_PRESENT
が届きます。[正しくない]ユーザーズ "画面ロック" = パターン/ PIN /パスワード & 自動的 = 15秒ロック:私は15秒後に画面をロックし、ロックを解除するとを、ロック画面が表示され、
ACTION_SCREEN_ON
が受信されます。ロック解除後、ACTION_USER_PRESENT
が届きます。 しかし、私が画面をロックして15秒前にロックを解除すると、ロック画面は表示されません(期待通り)が、ACTION_SCREEN_ON
だけが受信されます。 ACTION_USER_PRESENTは受信されません。
それでは、どのように私は、メソッドがとき(ユーザーロック解除画面)/(画面がまだロック解除されACTION_SCREEN_ON
)と呼ばれることを確認することができます。
私は
KeyguardManager mKeyguard = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if (!mKeyguard.inKeyguardRestrictedInputMode()) {
if (action.equals(Intent.ACTION_SCREEN_ON)) {
// Call method
}
}
if (action.equals(Intent.ACTION_USER_PRESENT)) {
// Call method
}
を試みた。しかしこの方法は、上記の3 [正しい]状況中に2回呼び出されます。
注は: