標籤:
主要分三步:1. 設定鬧鈴時間;2. 接收鬧鈴事件廣播;3. 重開機後重新計算並設定鬧鈴時間; 1. 設定鬧鈴時間(毫秒)
private void setAlarmTime(Context context,long timeInMillis) { AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(”android.alarm.demo.action“); PendingIntent sender = PendingIntent.getBroadcast( context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); int interval = 60 * 1000;//鬧鈴間隔, 這裡設為1分鐘鬧一次,在第2步我們將每隔1分鐘收到一次廣播 am.setRepeating(AlarmManager.RTC_WAKEUP, timeInMillis, interval, sender) }
2. 接收鬧鈴事件廣播
public class AlarmReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (”android.alarm.demo.action“.equals(intent.getAction())) { //第1步中設定的鬧鈴時間到,這裡可以彈出鬧鈴提示並播放響鈴 //可以繼續設定下一次鬧鈴時間; return; } }}
當然,Receiver是需要在Manifest.xml中註冊的:
<receiver android:name="AlarmReceiver"> <intent-filter> <action android:name="android.alarm.demo.action" /> </intent-filter></receiver>
3. 重開機後重新計算並設定鬧鈴時間 當然要有一個BootReceiver:
public class BootReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(Intent.ACTION_BOOT_COMPLETED)) { //重新計算鬧鈴時間,並調第一步的方法設定鬧鈴時間及鬧鈴間隔時間 } }}
當然,也需要註冊:
<receiver android:name="BootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter></receiver>
鬧鐘實現原理其實就這麼多,至於具體的細節比如鬧鈴時間儲存及計算, 介面顯示及鬧鈴提示方式,每個人的想法做法都會不一樣
Android 設定鬧鈴步驟和基礎代碼