遇到一个需求
新设一个闹钟,时间选在已经过去的时间,闹钟则自动匹配到第二天的时间。
现在将时间回拨,到闹钟启动时间之前,到时间,需要触发闹钟。
这个需求,目前苹果是实现了的,部分android手机也实现了,搭载android 7.0 的 nexus手机并未实现。
下面直接给解决方案
启动闹钟,需要设置一个 闹钟的配置实例 AlarmInstance,里面包含l闹钟的启动时间及状态。
实例化配置对象,需要传入 Calendar 对象,该对象既为闹钟的启动时间。里面包含具体的年月日。
AlarmInstance
mYear = calendar.get(Calendar.YEAR); mMonth = calendar.get(Calendar.MONTH); mDay = calendar.get(Calendar.DAY_OF_MONTH); mHour = calendar.get(Calendar.HOUR_OF_DAY); mMinute = calendar.get(Calendar.MINUTE);
<action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.TIME_SET" /> <action android:name="android.intent.action.TIMEZONE_CHANGED" /> <action android:name="android.intent.action.LOCALE_CHANGED" />
然后遍历当前存储的闹钟
ContentResolver cr = context.getContentResolver();
String activeAlarmQuery = AlarmInstance.ALARM_STATE + "<" + AlarmInstance.FIRED_STATE;
for (AlarmInstance instance : AlarmInstance.getInstances(cr, activeAlarmQuery)) {//判断需要修改启动时间
//这里需要将之间修改为提前一天启动
Calendar c= instance.getAlarmTime(); c.set(Calendar.DAY_OF_WEEK,c.get(Calendar.DAY_OF_WEEK)-1); instance.setAlarmTime(c); AlarmInstance.updateInstance(context.getContentResolver(),instance);//修改后更新闹钟数据}
这样就能触发闹钟了