user919127
user919127

Reputation:

How do I play multiple alarms using notification?

I developed an alarm project using notification. I used the notification id as a unique, and set an alarm every minute, i.e., 2:45pm, 2:46pm, 2:47pm, but the alarm is triggering only on the last one, at 2:47pm.

Why?

 int dayofweek;
 int notify;
 int notifyid=0;
 Cursor notifyvalue=db.getnotifyid();
 if (notifyvalue.moveToPosition(0))
 notifyid =notifyvalue.getInt(notifyvalue.getColumnIndex("notifyvalue"));

 if(notifyid==0)
 {
  db.InsertNotifyId(2600);
 }


                                Calendar calNow = Calendar.getInstance();
                                Calendar calSet = (Calendar) calNow.clone();

                                calSet.set(Calendar.HOUR_OF_DAY,22);
                                calSet.set(Calendar.MINUTE, 10);
                                calSet.set(Calendar.SECOND, 0);
                                calSet.set(Calendar.MILLISECOND, 0);

                            int notify1 = 0;
                            if(repeateddayname.equalsIgnoreCase("Everyday"))
                            {

                                   Cursor notifyvalue1=db.getnotifyid();
                                   if (notifyvalue1.moveToPosition(0))
                                      notify1=notifyvalue1.getInt(notifyvalue1.getColumnIndex("notifyvalue"));
                                   setAlarm(calSet, true,notify1+1,SplitAlramVoice[1]);
                                   db.InsertNotifyId(notify1+1);
                            }

                            else
                            {
                                String splitrepeateddayname[]=repeateddayname.split(",");

                                for(int i=0; i < splitrepeateddayname.length; i++)
                                {
                                    if(splitrepeateddayname[i].equalsIgnoreCase("Sunday"))
                                    {
                                        dayofweek=1+(7-calSet.DAY_OF_WEEK);
                                        Cursor notifyvalue1=db.getnotifyid();
                                         if (notifyvalue1.moveToPosition(0))
                                        notify1=notifyvalue1.getInt(notifyvalue1.getColumnIndex("notifyvalue"));
                                        setAlarm(calSet, false,notify1+1,SplitAlramVoice[1]);
                                         db.InsertNotifyId(notify1+1);
                                    }
                                    else if(splitrepeateddayname[i].equalsIgnoreCase("Monday"))
                                    {
                                        dayofweek=2+(7-calSet.DAY_OF_WEEK);
                                        Cursor notifyvalue1=db.getnotifyid();
                                        if (notifyvalue1.moveToPosition(0))
                                        notify1=notifyvalue1.getInt(notifyvalue1.getColumnIndex("notifyvalue"));
                                        setAlarm(calSet, false,notify1+1,SplitAlramVoice[1]);
                                         db.InsertNotifyId(notify1+1);
                                    }
                                    else if(splitrepeateddayname[i].equalsIgnoreCase("Tuesday"))
                                    {
                                        dayofweek=3+(7-calSet.DAY_OF_WEEK);
                                        Cursor notifyvalue1=db.getnotifyid();
                                        if (notifyvalue1.moveToPosition(0))
                                        notify1=notifyvalue1.getInt(notifyvalue1.getColumnIndex("notifyvalue"));
                                        setAlarm(calSet, false,notify1+1,SplitAlramVoice[1]);
                                         db.InsertNotifyId(notify1+1);
                                    }
                                    else if(splitrepeateddayname[i].equalsIgnoreCase("Wednesday"))
                                    {
                                        dayofweek=4+(7-calSet.DAY_OF_WEEK);
                                        Cursor notifyvalue1=db.getnotifyid();
                                        if (notifyvalue1.moveToPosition(0))
                                        notify1=notifyvalue1.getInt(notifyvalue1.getColumnIndex("notifyvalue"));
                                        setAlarm(calSet, false,notify1+1,SplitAlramVoice[1]);
                                         db.InsertNotifyId(notify1+1);
                                    }
                                    else if(splitrepeateddayname[i].equalsIgnoreCase("Thursday"))
                                    {
                                        dayofweek=5+(7-calSet.DAY_OF_WEEK);
                                        Cursor notifyvalue1=db.getnotifyid();
                                        if (notifyvalue1.moveToPosition(0))
                                        notify1=notifyvalue1.getInt(notifyvalue1.getColumnIndex("notifyvalue"));
                                        setAlarm(calSet, false,notify1+1,SplitAlramVoice[1]);
                                         db.InsertNotifyId(notify1+1);
                                    }   
                                    else if(splitrepeateddayname[i].equalsIgnoreCase("Friday"))
                                    {
                                        dayofweek=6+(7-calSet.DAY_OF_WEEK);
                                        Cursor notifyvalue1=db.getnotifyid();
                                        if (notifyvalue1.moveToPosition(0))
                                        notify1=notifyvalue1.getInt(notifyvalue1.getColumnIndex("notifyvalue"));
                                        setAlarm(calSet, false,notify1+1,SplitAlramVoice[1]);
                                         db.InsertNotifyId(notify1+1);
                                    }   
                                    else if(splitrepeateddayname[i].equalsIgnoreCase("Saturday"))
                                    {
                                        dayofweek=7+(7-calSet.DAY_OF_WEEK);
                                        Cursor notifyvalue1=db.getnotifyid();
                                        if (notifyvalue1.moveToPosition(0))
                                        notify1=notifyvalue1.getInt(notifyvalue1.getColumnIndex("notifyvalue"));
                                        setAlarm(calSet, false,notify1+1,SplitAlramVoice[1]);
                                         db.InsertNotifyId(notify1+1);
                                    }   
                                }
                            }

Set Alarm Function:

            Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
            intent.putExtra("NotifID", notifyid);
            intent.putExtra("Audio", AlarmAudio);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, PendingIntent.FLAG_CANCEL_CURRENT);
            AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
//          alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);

    if(repeat)
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);
    else
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,targetCal.getTimeInMillis(),dayofweek*24*60*60*1000,pendingIntent);

AlarmReceiver Class:

int notifID = intent.getExtras().getInt("NotifID");
     String foraudio= intent.getExtras().getString("Audio");

      NotificationManager nm;
      nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);        
      CharSequence from = "My Dua";
      CharSequence message = "Cheking By Ismail";
      PendingIntent contentIntent = PendingIntent.getActivity(context, 0,new Intent(), 0);
      Notification notif = new Notification(R.drawable.ic_launcher,"Mohamed Ismail", System.currentTimeMillis());
      notif.setLatestEventInfo(context, from, message, contentIntent);

      Uri audio=Uri.parse("mnt/sdcard/sounds/"+foraudio+".mp3");
      notif.sound=audio;
      nm.notify(notifID++, notif);  

Upvotes: 4

Views: 191

Answers (1)

arshad kr
arshad kr

Reputation: 357

create a unique id for notification and pass like:

 Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
        intent.putExtra("NotifID", notifyid);
        intent.putExtra("Audio", AlarmAudio);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), notifyid, intent, PendingIntent.FLAG_one_shot);
        AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

Upvotes: 1

Related Questions