AlarmManager mit Zeitwert versorgen und Zeit einlesen

  • Antworten:3
Tobias Wiens
  • Forum-Beiträge: 4

17.03.2014, 23:49:13 via Website

Hallo Androidgemeinde,

ich arbeite derzeit an einer ersten eignene App. Sozusagen mein Erstlingswerk. Ich bin nun aber durcheinander. Ich habe zwar Java gelernt und kenne mittlerweile auch einige Dinge in Android, aber für meine App benötige ich eine Funktion die im Hintergrund weiter läuft wenn die App eigentlich zu ist.

Quasi System Wecker. Das internet hat mir auch nach mehrstündiger Suche nichts erschöpfendes gebracht. Ich habe nun zwei Befehle gefunden. Erstmal den Service, mit dem es wohl möglich ist einen Code im Hintergrund auszuführen. ich verwendete einen intentservice da sich dieser soweit ich las einen eigenen Thread eröffnet und darin herumarbeitet.
Für meine Zwecke habe ich dann aber den AlarmManager entdeckt.
Ich habe nun erst damit begonnen einige Forenbeiträge zu lesen und versuche sie nun zum lauffähigen Code zu verarbeiten.

Nun muss ich dem ganzen aber eine Zeit übergeben. Wie kann ich das anstellen?
Also wie gebe ich dem Manager eine Zahl im Format von z.B. 16:00 Uhr ?
Ich möchte dann damit einen Alarm setzen.

Danach möchte ich das ganze gerne mit der aktuellen Uhrzeit vergleichen.
Die Funktion getTimeInMillis(); erstellt meines Wissens ja bloß diese endlose Zahl von 1970. Das bringt mir eigentlich nicht so viel (oder ich seh nicht wie ich es sinnvoll verwenden könnte).

Daher habe ich folgenden Schnipsel geschrieben, bzw. gefunden:

1Time now = new Time();
2 now.setToNow();

und

1final Date time = new GregorianCalendar().getTime();

Das zweite ist ganz nett aber wie kann man damit arbeiten? die Ausgabe davon ist ja "Mon Mar 17 23:31:36 MEZ 2014"
Das da der Wochentag mitkommt ist für meine App nützlich nur weiß ich noch nicht wie ich da ran komme.
In ein Array Speichern und vergleichen? das muss doch leichter gehen?!

Bin für jeden Tipp dankbar. Vor allem zum AlarmManager.

Viele Grüße und Danke im voraus, Tobi

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

18.03.2014, 00:04:20 via Website

Zum einen nimmt der AlarmManager genau die Zeit ab 1970 halt an. Lebe damit! Klassen wie Calendar erleichtern aber das rechnen mit dem Datum.
Wenn du komplexere Aufgaben mit der Zeit machen willst wie z.b

now + In einer Woche = liegt vor Datum X

Ist dir evtl damit geholfen Joda Time anzuschauen, diese lib ist Android kompatibel.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Tobias Wiens
  • Forum-Beiträge: 4

18.03.2014, 22:04:51 via Website

Okay, vielen Dank für deine Antwort.
Ich werde mir das einmal genauer ansehen.
Mein AlarmManager läuft nun soweit das ich sagen kann "setzte den Alarm in "jetzt+10 Sekunden".
Passt alles.

Nun sagen wir ich möchte eine Oberfläche haben in der ausgewählt wird: Setze diesen Alarm auf Mo-Fr. immer um 17:52 Uhr.
Gibt es da irgendwas fertiges? Die Standard Wecker app von Android benutzt das ja. Ich weiß nur leider nicht wie ich das auch verwenden kann.

Wäre sehr dankbar für Tipps.

Viele Grüße, Tobias

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

18.03.2014, 23:40:17 via Website

Die Wecker APP kannst du nicht benutzen, die werden es auch berechnen anhand der Timemills.
JodaTime ist aber für genau solche dinge wirklich gut, es hat eine gut API die wirklich verständlich ist.
Um Joda kennenzulernen, las mal Android beiseite, öffne ein standart java projekt un spiele mal ein wenig damit rum.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

impjor

Antworten