2016-04-08 9 views
0

Ich arbeite derzeit an einer Benachrichtigung, die zu einer bestimmten Uhrzeit vom Benutzer angezeigt werden muss.Benachrichtigung zeigt, wenn es nicht sein soll

aber wenn ich es laufen, Benachrichtigungen anzeigen, aber nicht bei der gewählten Zeit, nur dann, wenn ich frage, die Zeit in einem timepickerdialog erscheinen, bevor auch nur eine Zeit der Wahl.

Weiß jemand, wie Sie den Code zu ändern, so dass Benachrichtigungen nur zu dem Zeitpunkt ausgewählt erscheinen?

showDialog(DIALOG_ID); //this is the dialog that asks for an hour and minute. 


alarmMethod1(); 


private void alarmMethod1(){ 


     Calendar calendari1 = Calendar.getInstance(); 
     calendari1.set(Calendar.HOUR_OF_DAY, hour_x); 
     calendari1.set(Calendar.MINUTE, minute_x); 
     calendari1.set(Calendar.SECOND, 00); 

     Intent myIntent1 = new Intent(Main2Activity.this, NotifyService1.class); 
     AlarmManager alarmManager1 = (AlarmManager) getSystemService(ALARM_SERVICE); 
     pendingIntent1 = PendingIntent.getService(Main2Activity.this, 0, myIntent1, 0); 
     alarmManager1.setRepeating(AlarmManager.RTC_WAKEUP, calendari1.getTimeInMillis(), 24 * 60 * 60 * 1000, pendingIntent1); 

} 

Dann ist hier die Klasse, in der die Absicht geht:

public class NotifyService1 extends Service { 

@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 
@TargetApi(Build.VERSION_CODES.JELLY_BEAN) 
@Override 
public void onCreate(){ 
    Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 


    NotificationManager nNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 
    Intent intent1 = new Intent(this.getApplicationContext(),Main3Activity.class); 
    PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0); 

    Notification mNotify = new Notification.Builder(this) 
      .setContentTitle("Hora d'entrenar!") 
      .setContentText("Clica per començar entrenament de pit i braços") 
      .setSmallIcon(R.drawable.logofinal) 
      .setContentIntent(pIntent) 
      .setSound(sound) 
      .build(); 

    nNM.notify(1,mNotify); 

} 

} 

Antwort

0

Da Android API 19, alle Alarme sind ungenau, um den Batterieverbrauch zu reduzieren, das heißt, dass Ihre Alarme nicht genau ausgelöst werden Wenn Sie möchten, aber wenn Sie es wirklich tun müssen, müssen Sie SetExact verwenden und dann den Wiederholungsalarm-Handler selbst schreiben, es gibt nicht mehr ein "Set exact and repeat". Bitte finden Sie unter:

http://developer.android.com/reference/android/app/AlarmManager.html#setRepeating(int, long, long, android.app.PendingIntent)

http://developer.android.com/reference/android/app/AlarmManager.html#setExact(int, long, android.app.PendingIntent)

Verwandte Themen