2012-10-01 37 views
1

我有一個活動,從警報廣播接收器調用,它每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" /> 
+0

您需要閱讀以下文檔:「*如果您持有部分喚醒鎖,CPU將繼續運行,不管任何定時器,甚至在用戶按下電源按鈕後,CPU將運行,但用戶仍然可以使用電源按鈕讓設備進入睡眠狀態。「 – njzk2

+0

@ njzk2:我的喚醒鎖碼應該是什麼樣子? – Mick

+0

該文檔看起來非常直截了當:如果你想要cpu運行,因此你的計時器被執行,你需要一個局部喚醒 – njzk2

回答

0

如果你想有一些東西可以跟蹤很長一段時間的時間,或者當應用程序處於後臺時,您確實需要使用服務。

+0

不知道我是否理解...我的主應用程序設置了一個鬧鐘...之後,應用程序可以關閉,手機可以重新啓動 - 各種各樣。只有當警報觸發廣播接收器時,纔會創建一個意圖,我的活動將首次執行。該活動每隔幾秒響一次,直到用戶按下標有「停止」的大按鈕。 – Mick

+0

他意味着對於一個後臺任務,你真的想使用一個服務,而不是一個活動。 活動在這裏是爲了您的應用程序的具有用戶界面的部分。 服務在這裏讓你創建後臺操作。 – Teovald

+0

此活動不會在後臺運行,並且它有一個用戶界面 - 一個帶有單詞stop的大按鈕。 – Mick

1

您需要將您的AlarmManager警報設置爲喚醒警戒,否則廣播將等待直到您的手機被其他事物喚醒爲止。

甲醚RTC_WAKEUP

ELAPSED_REALTIME_WAKEUP

對於細節請提供您的報警代碼。

+0

請參閱編輯。但請注意,警報被觸發,我的活動被調用 - 通知聲音正在播放 - 問題是它只播放一次。 – Mick

+0

那麼你可能有一個喚醒鎖的問題,那麼你是否具有喚醒鎖所需的權限?你在報警發生時檢查了logcat嗎? – Jug6ernaut

+0

請參閱編輯至OP。我監視了日誌,但看不到任何明顯的東西。 – Mick

相關問題