2011-10-15 81 views
1

我想創建一個生日提醒應用程序。我將個人姓名,出生日期和生日信息保存在數據庫中。我想在該日期自動發送消息。 任何人都可以提出一個想法來做到這一點。這裏可以使用共享偏好嗎?可以將特定的ID在特定的日期傳遞給數據庫,以便向其DOB上的人發送問候語。 任何人都可以請建議一個想法來處理在這種情況下的多個警報。如何在android中設置多個鬧鐘

回答

4

忽略這樣的事實,即有多個應用程序可以做到這一點(作爲免責聲明,我已經發布了一個完全適用於that的應用程序),我就是這麼做的。

簡單的步驟:

  1. 設置鬧鐘當您收到一個報警搶喚醒鎖
  2. 鍛鍊,如果任何生日會今天
  3. 發生喚醒設備每天一次
  4. 如果是發送/排隊等
  5. 設置報警是明天
消息

您還需要重新啓動設備,因爲設備重新引導時任何警報都將被銷燬。在這種情況下,只是有意向的BOOT_COMPLETED呼叫到上面的步驟在第2

我報警代碼:

long alarmTime = System.currentTimeMillis()+(24*60*60*1000); 
AlarmManager alarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE); 
Intent intent = new Intent("<package name>.WAKEUP_ALARM"); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_ONE_SHOT); 
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmTime, pendingIntent); 

其實我每一天在指定固定時間點,說上午05點左右醒了設備,並計算出當天可能需要完成的工作,但這相對容易處理(並且出於其他原因在我的應用的其他地方發生)。

雖然您可以爲下一年的所有生日設置鬧鐘,但是當設備重新啓動並且用戶更改了任何設備時,您可能必須將鬧鐘丟掉,這是浪費時間。

如果你真的想通過報警來傳遞數據庫ID簡單地把它添加到意圖:(?假設SMS消息)

Intent intent = new Intent("<package name>.WAKEUP_ALARM"); 
intent.putExtra("DatabaseKey", 1); 

發送消息自動要求你有SEND_SMS許可,您發送短信在後臺 - 像這樣stackoverflow answer

+0

嗨,感謝您的評論。你能否說多個報警是否可以保存在待處理的意圖中?或者說,我們一次只能設置一個鬧鐘,然後如果只有一個鬧鐘,我們可以設置其他鬧鐘。所有警報是否在未決意圖隊列中?你可以幫我嗎。 – Matthew

+1

您可以指定多個警報(如果您將來要處理一天或兩天以上的事件,這是一個非常糟糕的主意),但是您需要使用上面的代碼來設置警報的時間和時間不同這個位「PendingIntent.getBroadcast(context,0,intent)」爲每個要檢索的警報更改0,否則最終將檢索相同的未決意圖。由於警報距離太遠,您可以不保證他們會觸發它,只有一個警報,然後設置更多的警報會更有效率。 – zeetoobiker