我设置闹钟的开始时间和结束时间如下:
Calendar startalarmTime = Calendar.getInstance();
startalarmTime.setTimeInMillis(System.currentTimeMillis());
startalarmTime.set(Calendar.HOUR_OF_DAY, 11);
startalarmTime.set(Calendar.MINUTE, 30);
startalarmTime.set(Calendar.SECOND, 0);
Calendar endalarmTime = Calendar.getInstance();<br>
endalarmTime.setTimeInMillis(System.currentTimeMillis());
endalarmTime.set(Calendar.HOUR_OF_DAY, 11);
endalarmTime.set(Calendar.MINUTE, 31);
endalarmTime.set(Calendar.SECOND, 0);
int repeatingInterval = 5; //5 seconds
long endTime = endalarmTime.getTimeInMillis();
long startTime = startalarmTime.getTimeInMillis();
我正在设置重复警报如下:
Intent broadCast = new Intent(ctx,AlarmBroadCaster.class);
broadCast.putExtra("endTime", endTime);
pIntent = PendingIntent.getBroadcast(ctx, 12345, broadCast, Intent.FILL_IN_DATA);
AlarmManager alrmMgr = (AlarmManager)ctx.getSystemService(Context.ALARM_SERVICE);
alrmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP,startTime,repeatInterval*1000, pIntent);
闹钟在11:30响得很好,每5秒重复一次,这很好。
为了取消11:31的警报,我在BroadCastReceiver的onReceive()中编写了如下代码:
public void onReceive(){
if(System.currentTimeMillis()==alarmEndTime){
AlarmManager alarmManager = (AlarmManager)context.getSystemService(context.ALARM_SERVICE);
alarmManager.cancel(pIntent);
Toast.makeText(context,"Cancelled Endtime",Toast.LENGTH_LONG).show();
}
}
AndroidManifest.xml:
<receiver android:name="com.andr.broadcastreceiverdemo.AlarmBroadCaster"></receiver>
到达结束时间后告警不会取消。
有没有人能告诉我怎样在闹钟响的时候取消它?
改为if(system . currenttimemillis ()>alarmEndTime)在系统时间超过告警结束时间后立即停止。==检查其是否完全相等,并在大多数情况下忽略。