2012-12-03 3 views
4

Я разработал проект сигнализации, используя уведомление. Я использовал идентификатор уведомления как уникальный и настраивал будильник каждую минуту, то есть 2:45 вечера, 2:46 вечера, 2:47 вечера, но тревога запускается только на последнем, в 14:47 вечера.Как воспроизвести несколько аварийных сигналов, используя уведомление?

Почему?

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); 
            } 
           } 
          } 

Установка будильника Функция:

  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 Класс:

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); 

ответ

1

создать уникальный идентификатор для уведомления и передать как:

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); 
Смежные вопросы