2011-07-20

在 Android 裡讓鬧鐘設定撐過關機(AlarmManager)

鬧鐘設定在系統關機後即消失無蹤,所以必須在設定鬧鐘時,將鬧鐘設定資訊存放到「某個地方」,然後在系統開機時,透過 receiver 去檢查是否有鬧鐘資訊需要重新設定。

系統在開機時會放送 android.intent.action.BOOT_COMPLETED 這個廣播訊息,這就是 receiver 要監聽的。

Receiver 註冊如下:
<receiver android:name=".TestReboot">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>
Receiver 程式如下:
public class TestReboot extends BroadcastReceiver {

 private static final String TAG = "TestReboot";

 @Override
 public void onReceive(Context ctx, Intent intent) {
  Log.d(TAG, "intent=" + intent);
  // 讀資料,重新啟動鬧鐘
  SendAlarmTester tester = new SendAlarmTester(ctx);
  tester.sendRepeatingAlarm();
 }
}
另外有兩個比較少發生而會影響到鬧鐘的狀況,就是更改系統時間或時區,都得重新設定鬧鐘,其廣播訊息分別為 android.intent.action.ACTION_TIME_CHANGED 與 android.intent.action.ACTION_TIMEZONE_CHANGED。

所以這個鬧鐘功能無法在關機時運作?只能在待機時有作用?

沒有留言:

張貼留言