【发布时间】:2023-03-03 13:54:01
【问题描述】:
我使用警报管理器创建了多个警报。但是在它通知之前,我不知道它是否成功创建。是否可以在应用程序中打印报警管理器的信息(即日期、时间、状态)?
【问题讨论】:
标签: android alarmmanager
我使用警报管理器创建了多个警报。但是在它通知之前,我不知道它是否成功创建。是否可以在应用程序中打印报警管理器的信息(即日期、时间、状态)?
【问题讨论】:
标签: android alarmmanager
使用adb shell dumpsys alarm
这将为您提供AlarmManager 中所有活动警报的列表
【讨论】:
检查这些问题,
Get list of active PendingIntents in AlarmManager
How to check if Alarm have been set and running
或者我们可以这样做
Intent intent = new Intent("com.my.package.MY_UNIQUE_ACTION");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.MINUTE, 1);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60, pendingIntent);
为了检查上述警报是否处于活动状态,我们可以这样做
boolean alarmUp = (PendingIntent.getBroadcast(context, 0,
new Intent("com.my.package.MY_UNIQUE_ACTION"),
PendingIntent.FLAG_NO_CREATE) != null);
if (alarmUp) {
Log.d("myTag", "Alarm is already active");
}
标志表示如果所描述的 PendingIntent 不存在,则简单地返回 null 而不是创建它
【讨论】:
PendingIntent是否存在。这并不会告诉你是否设置了闹钟,也不会告诉你闹钟何时到期,
我认为这是你的解决方案
Calendar calendar = Calendar.getInstance();
Long preTime = calendar.getTimeInMillis();
// set alarm after 5 minute
calendar.add(Calendar.MINUTE, 5);
Long postTime = calendar.getTimeInMillis();
Long delay = postTime - preTime;
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
manager.set(AlarmManager.RTC_WAKEUP, postTime, null);
CountDownTimer timer = new CountDownTimer(delay, 1) {
@Override
public void onTick(long millisUntilFinished) {
final int seconds = (int) (millisUntilFinished / 1000) % 60;
final int minutes = (int) ((millisUntilFinished / (1000 * 60)) % 60);
runOnUiThread(new Runnable() {
@Override
public void run() {
text.setText("minute " + minutes + " Second " + seconds);
}
});
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
}
};
timer.start();
http://www.wenda.io/questions/4377820/show-left-time-until-the-alarm-start.html
【讨论】: