我有一個活動,從警報廣播接收器調用,它每N秒播放一次通知聲音。早在我有以下的代碼活動的onCreate功能定時器任務僅在手機醒來時才起作用
repeating_notification_sound_timer.schedule(ring_the_buzzer_task, 0, 1000 * N);
:這是用下面的代碼實現
pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG");
wakeLock.acquire();
這一切都工作得很好,只要手機是醒着在警報被觸發時。但是,如果手機睡着了,通知聲音只播放一次,永遠不會再播放。該程序不會崩潰或報告任何錯誤。它就好像repeat_notification_sound_timer只能被困擾一次!有任何想法嗎?
編輯:這裏是設置在第一時間報警代碼:
static void set_alarm(long alarm_time_in_millis,Context cont,AlarmManager alarm_manager,String str)
{
Intent launchIntent = new Intent(cont, to_call_when_alarm_goes_off.class);
launchIntent.putExtra("string_passed_in_bundle", str);
launchIntent.setAction(to_call_when_alarm_goes_off.CUSTOM_INTENT);
PendingIntent pIntent = PendingIntent.getBroadcast(cont,0, launchIntent, 0);
alarm_manager.cancel(pIntent);
alarm_manager.set(AlarmManager.RTC_WAKEUP,alarm_time_in_millis, pIntent);
}
編輯:在清單中,我有:
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
您需要閱讀以下文檔:「*如果您持有部分喚醒鎖,CPU將繼續運行,不管任何定時器,甚至在用戶按下電源按鈕後,CPU將運行,但用戶仍然可以使用電源按鈕讓設備進入睡眠狀態。「 – njzk2
@ njzk2:我的喚醒鎖碼應該是什麼樣子? – Mick
該文檔看起來非常直截了當:如果你想要cpu運行,因此你的計時器被執行,你需要一個局部喚醒 – njzk2