Android Alarmmanager-每分钟顶部的火灾警报
我正试图在每一分钟的顶端发出警报。但由于某种原因,它不想工作。它是一个小部件时钟,应该每分钟更新一次。由于电池的原因,我做了一个屏幕关闭和打开的接收器。所以我的闹钟只有在屏幕打开时才会响。分钟应该与我的系统时钟同步Android Alarmmanager-每分钟顶部的火灾警报,android,android-widget,alarmmanager,Android,Android Widget,Alarmmanager,我正试图在每一分钟的顶端发出警报。但由于某种原因,它不想工作。它是一个小部件时钟,应该每分钟更新一次。由于电池的原因,我做了一个屏幕关闭和打开的接收器。所以我的闹钟只有在屏幕打开时才会响。分钟应该与我的系统时钟同步 public static void startClockTickAlarm() { AlarmManager alarmManager = (AlarmManager)_context.getSystemService(Context.ALA
public static void startClockTickAlarm() {
AlarmManager alarmManager = (AlarmManager)_context.getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 1);
calendar.add(Calendar.HOUR, 1);
alarmManager.setRepeating(AlarmManager.RTC, utcMillisNextMin(), 60000, createClockTickIntent(_context));
}
public static final long utcMillisNextMin() {
Time t = new Time();
t.setToNow();
t.second = 0;
t.minute++;
System.out.println("Next Alarm: " + t.hour + ":" + t.minute + ":" + t.second);
return t.normalize(true);
}
我的System.out给了我应该做的。例如,我在11:30:15启用我的小部件,返回的结果是11:31:00-这意味着我的闹钟应该首先在11:31触发。根据我的系统时钟,闹钟晚了5-15秒。警报发出得太晚的秒数并不总是相同的(在5到15秒之间)
提前谢谢 中有以下声明: 注:自API 19起,所有重复报警均不准确。如果你的 应用程序需要精确的交付时间,然后必须使用一次性交付 准确的警报,按上述每次重新安排。遗产 targetSdkVersion早于API 19的应用程序将 继续保持所有警报,包括重复警报, 被视为精确的 如果您运行的是Android 4.4.4,那么这可能就是原因 如前所述,API>=19如果必须使用精确计时,请使用API
if(android.os.Build.VERSION.SDK_INT<19){
alarmManager.setRepeating(alarmManager.RTC,utcMillisNextMin(),60000,createClockTickIntent(_context));
}否则{
alarmManager.setExact(…);
}
您的设备上有哪种API级别?如果出现故障,请发布logcat输出。我的设备是android 4.4.4,我的目标是21,min API是14.4。所以我想我的函数应该是设置窗口。因此,对于仍然使用min api 14,我是否应该为当前api创建一个检查函数,并在api低于19时使用我的当前函数,或者使用setWindow函数?@user2887326您应该使用setExact。我的代码在if
块中是向后的。请查收。
if(android.os.Build.VERSION.SDK_INT < 19) {
alarmManager.setRepeating(AlarmManager.RTC, utcMillisNextMin(), 60000, createClockTickIntent(_context));
} else {
alarmManager.setExact(...);
}