2013-04-16 62 views
0

我想在特定時間每天設置通知/警報。請注意,這些時間可能與日常不同。例如,我有一個數據庫,每天有5個不同的條目/時間,例如上午6點,下午1點30分,下午4點30分,晚上7點30分,下午10點。我想爲這些時間設置鬧鐘。第二天這些時間可能會有所不同。他們可能會關閉2-5分鐘或更長時間。 基本上我不能每天在同一時間設置一個重複報警。我需要檢查我的數據庫中的條目,以瞭解我應該在什麼時間安排它。使用alarmManager設置每日不規則警報

什麼是做這件事的好方法。我查看了一些堆棧溢出問題以設置多個警報。但是,我該怎麼做呢?我應該只閱讀整個星期的數據庫條目,即每天5次,連續7天。並共同設置35個警報?或者我應該一次設置一個鬧鐘。當這個警報被解僱時,只需從數據庫中讀取下一個條目並安排一次警報。

回答

1

寫一個服務,每天在特定時間從數據庫中提取5個值。

然後使用不同的唯一ID在AlarmManger中添加多個條目。

在特定的時間添加報警:

Calendar calendar = Calendar.getInstance(); 

//9 AM 
calendar.set(Calendar.HOUR_OF_DAY, 9); 
calendar.set(Calendar.MINUTE, 0); 
calendar.set(Calendar.SECOND, 0); 
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, YourClass.class), PendingIntent.FLAG_UPDATE_CURRENT); 
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi); 

設置多個報警:

AlarmManager[] alarmManager=new AlarmManager[24]; 
intentArray = new ArrayList<PendingIntent>(); 
for(f=0;f<arr2.length;f++){ 
    Intent intent = new Intent(AlarmR.this, Riciving.class); 
    pi=PendingIntent.getBroadcast(AlarmR.this, f,intent, 0); 

    alarmManager[f] = (AlarmManager) getSystemService(ALARM_SERVICE); 
    alarmManager[f].set(AlarmManager.RTC_WAKEUP,arr2[f] ,pi); 

    intentArray.add(pi); 

} 

希望這應該工作。

+0

謝謝,我會試試看。如果我想取消並重新安排,該怎麼辦?例如。用戶可以改變每天5次改變的設置。 – fzansari

+0

您可以添加設置或編輯服務設置。要更改或重新安排它,只需編輯它,然後重新開始。它會工作。一些應用程序「auto sms」google play store使用相同的概念。試着這樣做。 – John

+0

@John你在arr2中有什麼?實際上我需要實現這一點。 –