好的,让我修改一下问题并使它更容易。希望你能为我提供解决方案。这两个闹钟应该同时被安排,但这里没有发生。我甚至使用了独特的请求代码来处理待定意图。请帮助我......
//点击监听器
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);
}
};
旧问题:
我想同时设置两个不同操作的两个闹钟。
例如,用户在2点钟设置闹钟,并将持续时间设置为15分钟。第一个闹钟应该在2点钟响起,执行函数1,第二个闹钟应该在2:15响起,因为用户指定了持续时间为15分钟,执行函数2。每天在2点钟重复执行此操作,除非用户更改时间。
我在按钮单击事件中调用这两个函数:
单击事件
saveButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
..........
..........
new ReminderManager(this).setReminder(mRowId, mCalendar);
new ReminderManager(this).wakeReminder(mRowId, mCalendar, duration);
}
}
setReminder包含:
//在下午2点设置闹钟
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);
}
包含以下内容:
//添加持续时间,例如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);
}
我注意到每当
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点整,并未添加15分钟的持续时间。请帮忙解决,我尝试了很多方法,例如在第一个闹钟触发后调用这些函数,但都无济于事。