Android的闹钟实现机制很简单, 只需要调用AlarmManager.Set()方法将闹钟设置提交给系统,当闹钟时间到后,系统会按照我们的设定发送指定的广播消息,我们写一个广播去接收消息做相应处理即可。
第一步是设置闹钟:
private static String MY_ALARM_ACTION = "android.alarm.test.action";
/**
* 设置闹钟
* @param context
* @param firstTriggerTimeMillis 首次触发时间 (单位毫秒)
* @param periodTimeMillis 间隔时间
*/
private void setAlarmTime(Context context, long firstTriggerTimeMillis, long periodTimeMillis) {
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(MY_ALARM_ACTION);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, firstTriggerTimeMillis, periodTimeMillis, sender);
}
/**
* 闹钟接收
* @author Antony
* @date 2014-7-23
*/
public static class MyAlarmReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
if (MY_ALARM_ACTION.equals(intent.getAction())) {
Logcat.e("接收一次闹钟消息!");
//TODO 在这里写相关处理
return;
}
}
}
当然Receiver是需要在Mainfest.xml中注册的,我的注册信息如下:
第三步就是再写一个开机广播接收器:
写法与MyAlarmReceiver类似,可做为内部类也可单独列为一个类来写。在开机广播接收器中调用设置闹钟的方法即可。
这样每次手机重启后又会重新设置闹钟,闹钟就不会出现中断了。当然我这里设置的是以固定时间间隔重复运行的闹钟,因需求而定了。
闹钟实现 原理就这些了,至于具体的界面显示及提示方式等,每个人想法都有不同,就不再说了。