如何在android中同时触发两个警报

时间:2015-04-21 04:42:27

标签: android alarmmanager android-alarms

我正在创建一个基于提醒的应用程序。当用户随时创建提醒时它工作正常。但如果他同时创建了两个警报(我没有考虑到秒),那就说早上9:30 。第二个警报正确启动,但第一个警报在一分钟后即9:31发出。

这就是我创建闹钟的方式:alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),60000, contentIntent);

在那里我给出的重复时间是60000毫秒,这就是它在1分钟后出现的原因。

但是我希望同时触发两个警报。我已尝试使用剩余的3个“AlarmManager”类方法,但没有任何效果。有任何建议可以实现这一点。

这是我的创建闹钟方法:

    public void createAlarm(Context context,int id,String title,String date1,String voiceMsgUrl, String description, String owner,String type, String repFrequency)
    {
        eventIntent=new Intent(context, MyReceiver.class);
        eventIntent.putExtra("notifyId", id+"");
        eventIntent.putExtra("title",title);
        eventIntent.putExtra("date", date1);
        eventIntent.putExtra("voiceMsgUrl", voiceMsgUrl);
        eventIntent.putExtra("description", description);
        eventIntent.putExtra("owner", owner);
        eventIntent.putExtra("repFrequency", repFrequency);

        contentIntent=PendingIntent.getBroadcast(context, id, eventIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        calendar=Calendar.getInstance();
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try{

            date=format.parse(date1);
            calendar.setTime(date);

        }catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if(calendar.getTimeInMillis()>System.currentTimeMillis()){

            AppzoyDebug.e("creating alarm at time", calendar.getTimeInMillis()+"  lll");
        alarmManager=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);


   //alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),3000, contentIntent);


        alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), contentIntent);

        }
    }

我将值传递给该方法,如下所示

alarm.createAlarm(ReminderActivity.this, id, title.getText().toString(), dueDate.getText().toString(), url, description.getText().toString(), ownerNameString, "REM",repFrequency);

2 个答案:

答案 0 :(得分:1)

使用2种不同的报警管理器。 1个报警管理器一​​次设置1个报警。因此,如果您想同时设置多个警报,请为每个警报设置不同的警报管理器。

答案 1 :(得分:-1)

使用AlarmManager.ELAPSED_REALTIME_WAKEUP代替AlarmManager.RTC_WAKEUP并进行检查。