jel*_*boi 3 android alarmmanager
好的,让我修改问题并使其更容易.我希望你能为我找到解决方案.两个警报应该同时安排,这不会发生在这里.我甚至使用唯一的请求代码来处理待处理的意图.请帮帮我.....
//单击"侦听器"
private OnClickListener mOneShotListener = new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(AlarmController.this, OneShotAlarm.class);
PendingIntent sender = PendingIntent.getBroadcast(AlarmController.this,0, intent, 0);
//I even tried sender = PendingIntent.getBroadcast(AlarmController.this,0, intent, PendinIntent.FLAG_UPDATE_CURRENT);
//the alarm to go off 30 seconds from now.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 30);
// Schedule the alarm!
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
//adds 2 minutes to the time
calendar.add(Calendar.MINUTE, 2);
sender = PendingIntent.getBroadcast(AlarmController.this,1, intent,0);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender2);
}
};
Run Code Online (Sandbox Code Playgroud)
旧问题:
我想同时设置两个警报,以便执行两个不同的操作.
对于Eg.用户以2'O时钟设置闹钟并将持续时间设置为15分钟.第一个警报应以2'O时钟触发,执行功能1,第二个警报应在2:15触发,因为用户指定持续时间为15分钟,执行功能2.除非用户改变时间,否则应每天以2'O时钟重复此操作.
我在按钮点击时调用这两个函数:
点击活动
saveButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
..........
..........
new ReminderManager(this).setReminder(mRowId, mCalendar);
new ReminderManager(this).wakeReminder(mRowId, mCalendar, duration);
}
}
Run Code Online (Sandbox Code Playgroud)
setReminder包含
//在2'O时钟设置闹钟
public void setReminder(Long taskId, Calendar when, String duration){
Intent i = new Intent(mContext, OnAlarmReceiver.class);
i.putExtra(RemindersDbAdapter.KEY_ROWID, (long)taskId);
PendingIntent pi = PendingIntent.getBroadcast(mContext,(int)System.currentTimeMillis(), i, PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
}
Run Code Online (Sandbox Code Playgroud)
wakeReminder包含
//增加持续时间即15分钟
public void wakeReminder(Long taskId, Calendar when, String duration){
Intent i = new Intent(mContext, OnAlarmReceiverWake.class);
i.putExtra(RemindersDbAdapter.KEY_ROWID, (long)taskId);
Long d = Long.parseLong(duration);
Long mins = d*60*100;
Long milli = when.getTimeInMillis() + mins;
PendingIntent pi = PendingIntent.getBroadcast(mContext, (int)System.currentTimeMillis(), i, PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager.set(AlarmManager.RTC_WAKEUP, milli, pi);
}
Run Code Online (Sandbox Code Playgroud)
我注意到无论何时mAlarmManager.set();成功执行LogCat显示通知,如
"enqueueToast pkg=com.jellboi.android.togglemode callback=android.app ITransientNotification$stub$proxy@43c0c5f8 duration=0"
但是当我同时设置两个警报时,mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);执行时不会显示通知,但mAlarmManager.set(AlarmManager.RTC_WAKEUP, milli, pi);执行时会显示通知.此外,通知设置为原始时间,即2'O时钟,而不是在其持续时间增加15分钟后.
请帮助,我尝试了很多方法在不同的地方调用这个功能,比如在第一次警报被触发后但都是徒劳的.
PendingIntent sender = PendingIntent.getBroadcast(AlarmController.this,0, intent, 0);
Run Code Online (Sandbox Code Playgroud)
你有这个问题.如果你想同时发射两个警报,那么你应该做这样的事情
PendingIntent sender = PendingIntent.getBroadcast(AlarmController.this,giveUniqueRequestIdsHere, intent, 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15182 次 |
| 最近记录: |