2017-12-27 5 views
1

Ich bin kein neuer Benutzer von Codename One, aber dies ist das erste Mal, dass ich lokale Benachrichtigungen mit diesem Framework verwende. In meiner App habe ich einen Picker, um dem Benutzer die Wahl einer Uhrzeit (Stunde und Minute) zu ermöglichen. Ich empfing die Zeit, die mit getTime() -Methode gewählt wird. Jetzt möchte ich, dass meine lokale Benachrichtigung zu diesem Zeitpunkt ausgelöst wird. Was ist der korrekte Wert, den ich am zweiten Parameter der Display.getInstance().scheduleLocalNotification() Funktion geben muss?Mehrere Fragen zur lokalen Benachrichtigung

Bisher, was ich habe, ist diese Probe aber ich verstehe nicht, wie es auf meine Bedürfnisse anzuwenden:

Display.getInstance().scheduleLocalNotification(notification, System.currentTimeMillis() + 10 * 1000, LocalNotification.REPEAT_NONE); 
+0

willkommen zu SO! Da Sie nach Parameterwerten fragen, können Sie uns ein Code-Snippet geben, um einen klareren Kontext zu geben? – navicore

+0

Ok Danke! Hier ist der Prototyp der Funktion scheduleLocalNotification(): Display.scheduleLocalNotification (LocalNotification n, long firstTime, int repeat). Der zweite Parameter dieser Funktion ist die Zeit, um die Benachrichtigung auszulösen. Hier ein Beispiel: Display.getInstance(). ScheduleLocalNotification ( Benachrichtigung, System.currentTimeMillis() + 10 * 1000, LocalNotification.REPEAT_NONE); – Eric

Antwort

1

Vom Java doc dieser Methode

@param firsttime Zeit in Millisekunden, wenn die Benachrichtigung @param wiederholen Wiederholung eine der folgenden Zeitplan: REPEAT_NONE, REPEAT_FIFTEEN_MINUTES, REPEAT_HALF_HOUR, REPEAT_HOUR, REPEAT_DAY, REPEAT_WEEK

Sie können also Ihre Date-Objektmethode getTime() verwenden, um die Zeit in Millis für dieses Datumsobjekt zurückzugeben.

EDIT

Nehmen wir an, das der Rückruf für Ihre Zeit Picker

public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { 
    Calendar date = Calendar.getInstance(); // This is the time now, so the day is set to today 
    date.set(Calendar.HOUR_OF_DAY, hourOfDay); 
    date.set(Calendar.MINUTE, minute); 
    date.set(Calendar.MINUTE, 0); 
    date.set(Calendar.MILLISECOND, 0); 
    Display.scheduleLocalNotification(LocalNotification, date.getTime().getTime(), repeat); 
} 

Einstellen der zweiten und Millisekunde ist der Alarm an die genaue Minute erlischt nur, um sicherzustellen, ist der Benutzer gerichtet.

Sie können den Tag, den Monat und das Jahr genauso ändern, wie wir die Stunde und Minute geändert haben.

+0

Hallo, ich habe kein Date-Objekt. Ich benutze nur die Zeitauswahl (und nicht die Datums-/Uhrzeitauswahl) und die Methode getTime() der Auswahl der Klasse Picker in Minuten die Stunde und die Minuten, die der Benutzer gewählt hat. Wenn ich diesen Wert in Millisekunden umwandle und ihn auf den Wert des Parameters firstTime lege, habe ich nicht das gewünschte Ergebnis. Wenn der Benutzer beispielsweise 7:05 Stunden und Minuten wählt, muss die lokale Benachrichtigung zu diesem Zeitpunkt ausgelöst werden. Das ist meine wahre Frage. – Eric

+0

Sie müssen die Werte für Tag/Monat/Jahr richtig einstellen, dann können Sie die Calendar-Klasse verwenden und die set (int, int) -Methode verwenden, um die Werte für alle Einheiten korrekt festzulegen, und dann calender.getTime() verwenden. GetTime () – elmorabea

+0

Was ist also mit dem Zeitwert, den ich von der Picker-Klasse bekomme? Der vom Benutzer gewählte? Können Sie mir bitte eine Codebeispiel von dem, was Sie sagen, geben? – Eric