2016-05-26 18 views
0

Ich habe versucht, eine Alarm-Anwendung zu schreiben, es funktioniert gut, wenn ich immer nach der Zeit des Systems wähle. Aber wenn ich eine andere Zeit vor der Zeit des Systems wähle. es Alarme sofort, kann ich nicht helfen verstehen :(mich pls. Ich TimepickerDialog Zeit wählen verwenden. Hier Timecode wählen. (durch Klick Textview)Warum ist mein AlarmManager nicht korrekt?

time.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //savePrefs(); 
      int hour = calendar.get(Calendar.HOUR_OF_DAY); 
      int minute = calendar.get(Calendar.MINUTE); 
      TimePickerDialog mTimePicker; 
      mTimePicker = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() { 
       @Override 
       public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) { 
        timePicker.setIs24HourView(true); 
        calendar.set(Calendar.HOUR_OF_DAY, selectedHour); 
        calendar.set(Calendar.MINUTE, selectedMinute); 
        calendar.set(Calendar.SECOND, 0); 
        get_hour = selectedHour; 
        get_min = selectedMinute; 
        millis = calendar.getTimeInMillis(); 
        time.setText(selectedHour + " : " + selectedMinute); 
       } 
      }, hour, minute, true); 
      mTimePicker.setTitle("Set Alarm"); 
      onoff_alarm.setChecked(false); 
      mTimePicker.show(); 

     } 
    }); 

und hier ist mein onoff ToggleButton

onoff_alarm.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if(onoff_alarm.isChecked()){ 
       my_intent.putExtra("extra", "alarm on"); 
       Toast.makeText(getApplicationContext(), " Alarm On : " + get_hour + " h " + get_min + " m ", Toast.LENGTH_SHORT).show(); 
       pending_intent = PendingIntent.getBroadcast(MainActivity.this, 0, my_intent, PendingIntent.FLAG_UPDATE_CURRENT); 
       alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, millis, AlarmManager.INTERVAL_DAY,pending_intent); 
      } 
      else { 
       my_intent.putExtra("extra","alarm off"); 
       Toast.makeText(getApplicationContext(), "Alarm Off !", Toast.LENGTH_SHORT).show(); 
       alarmManager.cancel(pending_intent); 
       sendBroadcast(my_intent); 
      } 
     } 
    }); 
+0

Bitte versuchen Sie das genaue Problem zu beschreiben. – Adnan

+0

Von * Aber wenn ich eine andere Zeit vor der Zeit des Systems * - meinst du * currentSystemTime - *? –

+0

Beispiel mein Problem: jetzt mein Telefon ist 8h10m, ich wähle aus timepickerdialog ist 8h12m (nach 8h10m), funktioniert mein Code genau wenn mein Telefon 8h12m, app Klingeltöne und Pushs Benachrichtigung. Aber wenn ich Zeit wähle ist 8h08 oder jederzeit vor meiner Telefonzeit. App sofort Klingelton und Push-Benachrichtigung ohne auf nächsten Tag warten (ich denke das). Sorry über mein schlechtes Englisch. –

Antwort

1

der Zweck der Alarmmanager ist eine Aufgabe nach einer bestimmten Zeit in der Zukunft planen. Warum wollen Sie einen Alarm in der Vergangenheit auslösen, also vor Systemzeit? ich glaube, der Code gut funktioniert. Rahmen Die Zeit vor der Systemzeit löst sofort einen Alarm aus, da die Zeit bereits abgelaufen ist.

+0

danke, ich sehe, was ich tun muss (y) –

Verwandte Themen