特定の時間にイベントを受信するために Android AlarmManager を使用しています。
alarm_manager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarm_manager.set(AlarmManager.RTC_WAKEUP, target_time, pending_intent);
保留中のインテントは次のように作成されます。
pending_intent = createPendingResult(PENDING_INTENT_ID, new Intent(), 0);
電話がオフのときにアラームをトリガーするために、部分的なウェイクロックを取得します。
power_manager = (PowerManager)getSystemService(POWER_SERVICE);
wake_lock = power_manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, getString(R.string.app_name));
wake_lock.acquire();
イベントは onActivityResult コールバックで処理されます。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
私の問題は、アクティビティを開始してから電話の電源ボタンを押すと (画面がオフになり、ロックされる)、ユーザーが電話を再度オンにして画面のロックを解除するまでイベントが配信されないことです。
ロック画面と関係があると思います(おそらく画面がロックされているため、Androidは意図が何もしないと判断しますか?)-しかし、私の問題に関する情報はほとんどまたはまったく見つかりません。部分的な wake lock では、画面をオフにしたかどうか、または画面がロックされているかどうかに関係なく、onActivityResult が呼び出されることを期待しますが、明らかにそうではありません。
誰かが私が間違っている場所を指摘できますか?