在Android中设置每天特定时间的重复报警
我使用报警管理器在每天的特定时间运行报警。下面是代码在Android中设置每天特定时间的重复报警,android,calendar,alarmmanager,Android,Calendar,Alarmmanager,我使用报警管理器在每天的特定时间运行报警。下面是代码 Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, 00); calendar.set(Calendar.MINUTE, 00); AlarmManager alarmManager = (A
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 00);
calendar.set(Calendar.MINUTE, 00);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(this, OnAlarmReceive.class);
PendingIntent pendingIntent =PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
24*60*60*1000, pendingIntent);
我每天12点设置闹钟。下面是广播接收器的代码
@Override
public void onReceive(Context context, Intent intent)
{
System.out.println("Time is 12 Am");
Toast.makeText(context, "Alarm Triggered", Toast.LENGTH_LONG).show();
}
此代码中的问题是,无论何时运行应用程序,都会立即触发警报。任何帮助都将不胜感激。谢谢试着用这个:
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + AlarmManager.INTERVAL_DAY,
AlarmManager.INTERVAL_DAY, intent);
我和你有同样的问题,我无法让它工作。另外,我能找到的所有例子都是设定一个特定的日期,而不仅仅是时间。这应该适合您:
Intent myIntent = new Intent(ThisActivity.this , NotifyService.class);
AlarmManager alarmManager = (AlarmManager) Context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getService(ThisActivity.this, 0, myIntent, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 00);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, pendingIntent); //Repeat every 24 hours
希望这能帮助你解决你的问题 如果您在过去设置了警报,警报将立即触发。 例如,现在是10:00,您希望在每天09:00设置闹钟。为了避免这种情况,你必须看看现在几点了,如果是这样的话,把闹钟调一天。。。这允许您使用
setRepeating
方法(比setInexactRepeating
更精确)
这解决了问题:
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 00);
calendar.set(Calendar.MINUTE, 00);
if(Calendar.getInstance().after(calendar)){
// Move to tomorrow
calendar.add(Calendar.DATE, 1);
}
//... continue like before by setting the alarm
您可以使用以下内容:
Calendar cal = Calendar.getInstance();
if(cal.getTimeInMillis() < System.currentTimeMillis()) {
cal.add(Calendar.DAY_OF_YEAR, 7);
}
Calendar cal=Calendar.getInstance();
if(cal.GetTimeMillis()
同一个混蛋。我希望闹钟是在上午或下午。如果我将闹钟设置为当前小时的下一分钟,不管一天的时间(上午或下午),它仍然会响。你可以通过链接。这可能会对你有所帮助