2011-05-16 104 views
2

在我的鬧鐘我用下面的代碼,以使能信號:安卓:AlarmManager陷阱

Intent i = new Intent(AlarmReciever.ACTION_WAKEUP); 
i.putExtra(AlarmDao.ID_COLUMN, a.getId()); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(
         context, a.getId(), i, PendingIntent.FLAG_CANCEL_CURRENT);  
Calendar cal = a.getNextAlarm(); 
if(cal!=null){ 
    AlarmManager alarmManager = (AlarmManager) 
         context.getSystemService(context.ALARM_SERVICE); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); 
    if(toast) showToast(context, cal); 
} 

我的接收器開始服務,可以播放音樂,並顯示「關機」對話框。

context.startService(wakePlayer); 
context.startActivity(wakeWindow); 

此代碼的問題是有時會失敗。我的意思是它不啓動音樂並顯示對話框。有沒有人遇到同樣的問題?

+0

你有在Android的logcat的一些錯誤? – 2011-05-16 10:00:46

回答

1

也許你需要使用WakeLock。請檢查以下內容:

+0

對不起,沒有提到它。我已經在「wakeWindow」活動中使用了喚醒鎖。但服務(表演音樂)不開始。這很奇怪,因爲我從我的廣播接收器開始服務!不是來自活動。 – Nick 2011-05-16 10:31:57

+1

我可以請推薦在您的廣播接收器中使用WakeLock嗎?並且不要釋放它。當你的「wakeWindow」結束時你可以釋放鎖。您可能不需要在「wakePlayer」或「wakeWindow」中使用WakeLock。我不確定這是否對您的案例有意義。 請參考:[警報示例](https://github.com/commonsguy/cw-advandroid/tree/master/SystemServices/Alarm) – domx 2011-05-17 03:10:25