android同时设置多个警报

android同时设置多个警报,android,alarmmanager,Android,Alarmmanager,好的,让我修改这个问题,让它更容易。我希望你能帮我找到解决办法。这两个警报应该同时安排,而不是在这里发生。我甚至使用了唯一的requestcode来实现挂起的意图请帮帮我…… //点击式侦听器 老问题: 我想同时设置两个警报,以执行两个不同的操作 例如,用户将闹钟设置为2点钟,并将持续时间设置为15分钟。第一个警报应在2点钟发出,执行功能1,第二个警报应在2:15发出,因为用户指定执行功能2的持续时间为15分钟。除非用户更改时间,否则应在每天2点钟重复此操作 我在单击按钮时调用这两个函数: 点击

好的,让我修改这个问题,让它更容易。我希望你能帮我找到解决办法。这两个警报应该同时安排,而不是在这里发生。我甚至使用了唯一的requestcode来实现挂起的意图请帮帮我……

//点击式侦听器

老问题:
我想同时设置两个警报,以执行两个不同的操作

例如,用户将闹钟设置为2点钟,并将持续时间设置为15分钟。第一个警报应在2点钟发出,执行功能1,第二个警报应在2:15发出,因为用户指定执行功能2的持续时间为15分钟。除非用户更改时间,否则应在每天2点钟重复此操作

我在单击按钮时调用这两个函数:

点击事件

设置提醒包含

//将闹钟设置为2点钟

唤醒提醒包含

//增加持续时间,即15分钟

我注意到无论何时
mAlarmManager.set()成功执行
LogCat
显示通知,如
“enqueueToast pkg=com.jellboi.android.togglemode callback=android.app ITransientNotification$stub$proxy@43c0c5f8持续时间=0“

但是,当我同时设置两个报警时,
mAlarmManager.setRepeating(AlarmManager.RTC_唤醒,when.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pi)时,不会显示通知被执行
但是当
mAlarmManager.set(AlarmManager.RTC_WAKEUP,milli,pi)时会显示通知被执行。此外,通知设置为原始时间,即2点钟,而不是在其持续时间增加15分钟后

请帮忙,我尝试了很多方法在不同的地方调用这些函数,比如在第一次警报触发后,但都没有成功。

试试这个:

Calendar cal = new GregorianCalendar();
Date date = cal.getTime();
cal.clear();

Cursor c = database.query(mArray.get(mPosition), new String[]{"days"},"days"+"!="+0, null, null, null, null);
cal.set(Calendar.YEAR,2011);
cal.set(Calendar.MONTH,date.getMonth());
cal.set(Calendar.DAY_OF_MONTH,date.getDate());
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, min);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);

AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(nextScreen.this, AlaramReciver.class);
i.putExtra("Start",mArray.get(mPosition));

Editor medit = getSharedPreferences("Start", 0).edit();
medit.putString("Start", mArray.get(mPosition));medit.commit();

PendingIntent pendingintent = PendingIntent.getBroadcast(this,mPosition, i, 0);
mgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingintent);
您已经像这样设置了时间,一旦您在alarm manager中设置了时间,它将每天自动调用这些函数。对
pendingent
使用不同的请求代码

如果你想调用第二个函数。您只需将15分钟内的时间添加到

cal.set(Calender.MINUTE,min+15);
你在这方面有问题。如果你想同时触发两个alarma,那么你应该这样做

PendingIntent sender =       PendingIntent.getBroadcast(AlarmController.this,giveUniqueRequestIdsHere, intent, 0);

嗨,试着用它来生成请求我正在生成我自己的请求代码,但这行代码对我有用

final int intent_id = (int) System.currentTimeMillis();

对pendingent.getActivity()执行相同的操作

启动新的OneShotAlarm.class时,必须设计启动模式。如果第一个实例仍然存在,默认设置将忽略第二次启动

Intent intent = new Intent(AlarmController.this, OneShotAlarm.class);
intent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);

似乎您在第二次呼叫之前忘记设置“sender2”


您可以更改sender的值,然后将sender2作为参数。

Hi,Yi Jiang感谢您的回复,我正确设置了我的时间,并在我的代码中指定的指定时间完全触发了警报。我只是在指定时间的地方忽略了我的代码。我无法解决的问题是,我正在同时设置两个警报,例如,首先在2点钟,另一个在2:15同时,只要我单击“保存”按钮。现在只触发了1个警报,第一个在2点钟,另一个没有,也没有显示任何错误。当我调试时,logCat显示只有一个报警排队,而不是另一个&m使用currentSystemTime for piIt可能会有帮助:您可以在广播管理器中发布获取挂起意图的代码,在该代码中我们可以同时启动两个不同的任务..回答不错,节省我的时间
cal.set(Calender.MINUTE,min+15);
PendingIntent sender = PendingIntent.getBroadcast(AlarmController.this,0, intent, 0);
PendingIntent sender =       PendingIntent.getBroadcast(AlarmController.this,giveUniqueRequestIdsHere, intent, 0);
final int intent_id = (int) System.currentTimeMillis();
sender = PendingIntent.getBroadcast(this, (int) System.currentTimeMillis(), i, PendingIntent.FLAG_ONE_SHOT);
Intent intent = new Intent(AlarmController.this, OneShotAlarm.class);
intent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);