2012-04-22 19 views
16

Szukałem wpisów w odpowiedzi na moje pytanie, ale nie znalazłem niczego, co rozwiązałoby mój problem. Próbuję ustawić 3 różne alarmy przy użyciu jednej klasy AlarmSettings. Kiedy ustawiam dwa alarmy, drugi ma pierwszeństwo nad pierwszym, a pierwszy nigdy się nie wyłącza. Myślę, że może to mieć związek z moją oczekującą intencją ... Jestem naprawdę nowy dla Androida i bardzo doceniam pomoc. Tu jest mój kodu do ustawiania alarmów:android alarmmanager wiele alarmów, jeden zastępuje drugi?

public void setAlarm() { 

     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     calendar.set(Calendar.HOUR_OF_DAY, timepicker.getCurrentHour()); 
     calendar.set(Calendar.MINUTE, timepicker.getCurrentMinute()); 
     calendar.set(Calendar.SECOND, 0); 

     if (timepicker.getCurrentHour() < calendar.get(Calendar.HOUR_OF_DAY)) { //if the alarm hour is less than the current hour 
      calendar.add(Calendar.DATE, 1);          //then add 24 hours (1 DATE or Day)     
     } 

     //Create the text that we want to set the TextView alarmtime to in Main 
     StringBuilder sb = new StringBuilder(); 
     if (timepicker.getCurrentHour() > 12) { 
      sb.append(timepicker.getCurrentHour() - 12); 
     } else { 
      sb.append(timepicker.getCurrentHour()); 
     } 
     sb.append(":"); 
     sb.append(timepicker.getCurrentMinute()); 
     sb.append(" "); 
     if (timepicker.getCurrentHour() > 12) { 
      sb.append("pm"); 
     } else { 
      sb.append("am"); 
     } 

     if (((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited() == 1) { 
      ((GlobalVariables)getApplication()).setAlarm1Cal(calendar); 
      Main.alarmTime1.setText(sb); 

      Intent intent1 = new Intent(AlarmSettings.this, AlarmReceiver.class); 
      intent1.putExtra("alarm_num", ((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited()); 
      PendingIntent pendingIntent1 = PendingIntent.getActivity(getApplicationContext(), 0, intent1, PendingIntent.FLAG_ONE_SHOT); 

      alarmmanager1.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent1); 

     } else if (((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited() == 2) { 
      ((GlobalVariables)getApplication()).setAlarm2Cal(calendar); 
      Main.alarmTime2.setText(sb); 

      Intent intent2 = new Intent(AlarmSettings.this, AlarmReceiver.class); 
      intent2.putExtra("alarm_num", ((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited()); 
      PendingIntent pendingIntent2 = PendingIntent.getActivity(getApplicationContext(), 0, intent2, PendingIntent.FLAG_ONE_SHOT); 

      alarmmanager2.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent2); 

     } else if (((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited() == 3) { 
      ((GlobalVariables)getApplication()).setAlarm3Cal(calendar); 
      Main.alarmTime3.setText(sb); 

      Intent intent3 = new Intent(AlarmSettings.this, AlarmReceiver.class); 
      intent3.putExtra("alarm_num", ((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited()); 
      PendingIntent pendingIntent3 = PendingIntent.getActivity(getApplicationContext(), 0, intent3, PendingIntent.FLAG_ONE_SHOT); 

      alarmmanager3.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent3); 
     } 

     finish(); 

     Toast.makeText(getApplicationContext(), "system time: " + System.currentTimeMillis() + "\n" + "picked time: " + calendar.getTimeInMillis(), Toast.LENGTH_LONG).show();  
    } 

Odpowiedz

40
PendingIntent pendingIntent1 = PendingIntent.getActivity(getApplicationContext(), 0, intent1, PendingIntent.FLAG_ONE_SHOT); 

zmienić atrybut do ID dla alarmu 0, na przykład masz trzy alarmy,

powtarzać powyższy kod z 0,1,2 .

w ten sposób nie zastąpią się nawzajem.

+2

Dzięki, to się udało. – user1349984

+1

Witaj, możesz oznaczyć odpowiedź jako oczywistą i pomocną dla innych osób z tym samym problemem. Powodzenia w kodowaniu! –

+1

Nie akceptuj [takiej sugerowanej zmiany] (http://stackoverflow.com/review/suggested-edits/950604). Zobacz mój komentarz. – hims056

Powiązane problemy