Android闹钟不会在某个特定的结束时间后取消



我设置闹钟的开始时间和结束时间如下:

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)在系统时间超过告警结束时间后立即停止。==检查其是否完全相等,并在大多数情况下忽略。

相关内容

最新更新