2012-04-22 18 views
16

Ho cercato post per le risposte alla mia domanda ma non ho trovato nulla che risolva il mio problema. Sto provando a impostare 3 diversi allarmi usando una classe AlarmSettings. Quando imposto due allarmi, il secondo ha la precedenza sul primo e il primo non si spegne mai. Penso che potrebbe avere a che fare con il mio intento in sospeso ... Sono davvero nuovo di Android e apprezzerei molto l'aiuto. Ecco il mio codice per impostare gli allarmi:allarmi allarmi multipli allarme android, uno sovrascrive l'altro?

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

risposta

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

cambiamento del 0 attributo per un ID per la sveglia, per esempio si dispone di tre allarmi,

ripetere il codice precedente con 0,1,2 .

in questo modo non si sovrascriveranno.

+2

Grazie, l'ha fatto. – user1349984

+1

Benvenuto, puoi contrassegnarlo come risposta per essere ovvio e utile per le altre persone con lo stesso problema. Buona fortuna per la codifica! –

+1

Si prega di non approvare [tale modifica suggerita] (http://stackoverflow.com/review/suggested-edits/950604). Vedi il mio commento – hims056

Problemi correlati