如何能在我的Android设置多个报警? [英] How can I setup multiple alarms in Android?
问题描述
到目前为止,感谢这个网站,我已经能够成立,将建立和主动报警,即使我把我的电话。
So far and thanks to this website, I've been able to set up an alarm that will be set up and active, even if I turn of my phone.
现在,我成立了一个警报显示提醒事件A和我需要的应用程序设置另一个报警显示的另一个提醒事件B。
Now, I set up a alarm to show a reminder for event A and I need the application to setup another alarm to show another reminder for event B.
我必须做一些错误的,因为它只触发提醒事件A看来,一旦设置,其他任何报警被理解为同一个。 : - (
I must be doing something wrong, because it only fires the reminder for event A. It seems that once set up, any other alarm is understood as the same one. :-(
下面是细节我在做什么分两步进行:
Here is the detail of what I am doing in two steps:
1)从活动中我设置闹钟,在特定的时间和日期将调用一个接收器
1) From an activity I set an alarm that at certain time and date will call a receiver
Intent intent = new Intent(Activity_Reminder.this,
AlarmReceiver_SetOnService.class);
intent.putExtra("item_name", prescription
.getItemName());
intent
.putExtra(
"message",
Activity_Reminder.this
.getString(R.string.notif_text));
intent.putExtra("item_id", itemId);
intent.putExtra("activityToTrigg",
"com.companyName.appName.main.Activity_Reminder");
PendingIntent mAlarmSender;
mAlarmSender = PendingIntent.getBroadcast(
Activity_Reminder.this, 0, intent, 0);
long alarmTime = dateMgmt.getTimeForAlarm(pickedDate);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(alarmTime);
// Schedule the alarm!
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, alarmTime + 15000,
mAlarmSender);
2)从我所说的服务接收器
2) From the receiver I call a service
Bundle bundle = intent.getExtras();
String itemName = bundle.getString("item_name");
String reminderOrAlarmMessage = bundle.getString("message");
String activityToTrigg = bundle.getString("activityToTrigg");
int itemId = Integer.parseInt(bundle.getString("item_id"));
NotificationManager nm = (NotificationManager) context.getSystemService("notification");
CharSequence text = itemName + " "+reminderOrAlarmMessage;
Notification notification = new Notification(R.drawable.icon, text,
System.currentTimeMillis());
Intent newIntent = new Intent();
newIntent.setAction(activityToTrigg);
newIntent.putExtra("item_id", itemId);
CharSequence text1= itemName + " "+reminderOrAlarmMessage;
CharSequence text2= context.getString(R.string.notif_Go_To_Details);
PendingIntent pIntent = PendingIntent.getActivity(context,0, newIntent, 0);
notification.setLatestEventInfo(context, text1, text2, pIntent);
notification.flags = Notification.FLAG_AUTO_CANCEL;
notification.defaults = Notification.DEFAULT_ALL;
nm.notify(itemId, notification);
在此先感谢,
Thanks in Advance,
monn3t
推荐答案
好吧,当你设置一个PendingIntent,你应该给它分配一个唯一的ID吧,柜面你想在以后确定它(修改/取消它)
Ok, when you set an PendingIntent, you're supposed to assign it a unique ID to it, incase you want to identify it later (for modifying/canceling it)
static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags)
//Retrieve a PendingIntent that will start a new activity, like calling Context.startActivity(Intent).
static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags)
//Retrieve a PendingIntent that will perform a broadcast, like calling Context.sendBroadcast().
该请求code是该ID。
The Request code is that ID.
在你的code,你保持复位的与 PendingIntent,而使用不同的请求code各一次。
In your code, you keep resetting the SAME PendingIntent, instead use a different RequestCode each time.
PendingIntent pIntent = PendingIntent.getActivity(context,uniqueRQCODE, newIntent, 0);
它是一个整数,我假设你有一个primaryid(的itemId ),可以识别警报的警报,从B点。
It has to be an integer, i suppose you have a primaryid (itemId) that can identify Alarm A from Alarm B.
这篇关于如何能在我的Android设置多个报警?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!