gpt4 book ai didi

java - android alarmmanager 多个警报,一个覆盖另一个?

转载 作者:IT老高 更新时间:2023-10-28 23:28:49 25 4
gpt4 key购买 nike

我在帖子中搜索了我的问题的答案,但没有找到任何解决我问题的方法。我正在尝试使用一个 AlarmSettings 类设置 3 个不同的警报。当我设置两个警报时,第二个优先于第一个,第一个永远不会响起。我认为这可能与我的未决 Intent 有关......我真的是 android 新手,非常感谢您的帮助。这是我设置闹钟的代码:

public void setAlarm() {

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, timepicker.getCurrentHour());
calendar.set(Calendar.MINUTE, timepicker.getCurrentMinute());
calendar.set(Calendar.SECOND, 0);

if (timepicker.getCurrentHour() < calendar.get(Calendar.HOUR_OF_DAY)) { //if the alarm hour is less than the current hour
calendar.add(Calendar.DATE, 1); //then add 24 hours (1 DATE or Day)
}

//Create the text that we want to set the TextView alarmtime to in Main
StringBuilder sb = new StringBuilder();
if (timepicker.getCurrentHour() > 12) {
sb.append(timepicker.getCurrentHour() - 12);
} else {
sb.append(timepicker.getCurrentHour());
}
sb.append(":");
sb.append(timepicker.getCurrentMinute());
sb.append(" ");
if (timepicker.getCurrentHour() > 12) {
sb.append("pm");
} else {
sb.append("am");
}

if (((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited() == 1) {
((GlobalVariables)getApplication()).setAlarm1Cal(calendar);
Main.alarmTime1.setText(sb);

Intent intent1 = new Intent(AlarmSettings.this, AlarmReceiver.class);
intent1.putExtra("alarm_num", ((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited());
PendingIntent pendingIntent1 = PendingIntent.getActivity(getApplicationContext(), 0, intent1, PendingIntent.FLAG_ONE_SHOT);

alarmmanager1.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent1);

} else if (((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited() == 2) {
((GlobalVariables)getApplication()).setAlarm2Cal(calendar);
Main.alarmTime2.setText(sb);

Intent intent2 = new Intent(AlarmSettings.this, AlarmReceiver.class);
intent2.putExtra("alarm_num", ((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited());
PendingIntent pendingIntent2 = PendingIntent.getActivity(getApplicationContext(), 0, intent2, PendingIntent.FLAG_ONE_SHOT);

alarmmanager2.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent2);

} else if (((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited() == 3) {
((GlobalVariables)getApplication()).setAlarm3Cal(calendar);
Main.alarmTime3.setText(sb);

Intent intent3 = new Intent(AlarmSettings.this, AlarmReceiver.class);
intent3.putExtra("alarm_num", ((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited());
PendingIntent pendingIntent3 = PendingIntent.getActivity(getApplicationContext(), 0, intent3, PendingIntent.FLAG_ONE_SHOT);

alarmmanager3.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent3);
}

finish();

Toast.makeText(getApplicationContext(), "system time: " + System.currentTimeMillis() + "\n" + "picked time: " + calendar.getTimeInMillis(), Toast.LENGTH_LONG).show();
}

最佳答案

PendingIntent pendingIntent1 = PendingIntent.getActivity(getApplicationContext(), 0, intent1, PendingIntent.FLAG_ONE_SHOT);

将 0 属性更改为您的闹钟的 id,例如您有三个闹钟,

用 0,1,2 重复上面的代码。

这样它们就不会互相覆盖。

关于java - android alarmmanager 多个警报,一个覆盖另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10271417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com