使用AlarmManager 多次定时提醒

实现多次定时提醒的原理是:  在添加时间点后, 需要将所添加的时间点保存在文件或数据库中。 在这里使用SharedPreferences 来保存时间点,key和value都是时间点.然后使用AlarmManager 每隔1分钟扫描一次,在扫描过程中从文件获得当前时间(时:分)的value,如果成功获得value,则说明当前时间为时间点,需要播放声音文件,否则继续扫描.

本例使用BroadcastReceiver 来处理定时提醒任务, BroadcastReceiver 类的代码如下:

public class AlarmReceiver extends BroadcastReceiver  {
@Override
public void onReceive(Context context, Intent intent)  {
SharedPreferences sharedPreferences = context.getSharedPreferences("alarm_record", Activity.MODE_PRIVATE);
String hour = String.valueOf(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));
String minute = String.valueOf(Calendar.getInstance().get(Calendar.MINUTE));

// 从XML 文件夹获得描述当前时间点的value
String time = sharedPreferences.getString(hour + ":" + minute, null);
if (time != null)  {
//播放声音
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.ring);
mediaPlayer.start();
}} }

在Main.java 类中关键代码:

sharedPreferences = getSharedPreferences("alarm_record",Activity.MODE_PRIVATE);

AlarmManager  am =  (AlarmManager)getSystemService(Context.ALARM_SERVICE);

Intent  intent   =  new Intent(this,AlarmReceiver.class);

//创建封装 BroadcastReceiver 的 pendingIntent 对象

PendingIntent  pendingIntent  =  PendingIntent.getBroadcast(this,0,intent,0);

//  开始定时器,  每 1分钟执行一次

am.setRepeating(AlarmManager.RTC,0,60000,pendingIntent);

在AndroidManifest.xml配置如下: <receiver  android:name=".AlarmReceiver"   android:enabled="true"  />

示意图

具体代码见  ch08_multialarm工程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值