----------- English version below --------------
--------------------------------------------------
Im Prinzip ist es eine einfache Problemstellung, die mit dem Androidtimer schmucklos erledigt werden kann.
Die Idee kam über Jennes, Hilfestellung bei Details von Desmanto.
Die Aufgabenstellung:
Nach Eingabe von Minuten die Endzeit berechnen, und via Benachrichtigungsleiste/Sperrbildschirm den aktuellen
Status ausgeben.
Die Ausführung:
Erfolgt über 2 flows.
der Startflow, initialisieren und berechnen, 2 Globalvariablen festlegen für Beginn und Ende des Timers, Benachrichtigung erstellen, flow trigger aktivieren
der Triggerflow,
- Beenden bei Ablauf, Sound abspielen (Trigger Variable Datum/Zeit), inaktiv setzen des trigger flows
- Abbrechen durch Antippen der Action in der Benachrichtung oder der Benachrichtigung selbst, inaktiv setzen des trigger flows
- Aktualisieren der Benachrichtigung durch Display ein, Öffnen der Benachrichtigungsleiste, Neustart von AM
Wurde das Handy ausgeschalten und der Timer ist abgelaufen, wird der Alarm nachgeholt. Braucht man länger für den
Login, als das der Start von AM braucht, hört man zwar den Alarm, jedoch wurde auf meinem Handy der darauf folgende
Meldungsdialog nicht angezeigt - der workaround war ein Eingabedialog, mit dem funktioniert es. (Huawei P9 lite 7.0)
Die Benachrichtigung wird mit Fortschrittsbalken und Information Beginn-Ende ausstehende Zeit aktualisiert.
Ein Detail, über das ich schon öfter gestolpert bin, war die noch verbleibende Zeit mittels getDurationString.
Es geht zwar auch über dateformat, mir ist die Funktion lieber. Gestört hat bisher immer die Angabe der Millisekunden.
Desmanto hat uns da etwas auf die Sprünge geholfen mit
Code: Select all
// wenn mehr als 10 Minuten keine Sekunden anzeigen
if(global_WMEnde-triggertime>600000)
{
faktor=60000;
} else
{
faktor=1000;
}
restzeit=getDurationString((global_WMEnde-triggertime)/faktor*faktor);
mit demselben Faktor multiplizieren.
Der Faktor ergibt sich aus der gewünschten Zeit bzw. nicht gewünschten Zeit.
1000 Millisekunden sind 1 Sekunde, Faktor = 1000, somit werden keine Millisekunden mehr angezeigt.
60000 Millisekunden sind 60 Sekunden (1 Minute), Faktor = 60.000, somit werden keine Sekunden und keine Millisekunden angezeigt.
LG
-------------------------------------------
----------- English version --------------
-------------------------------------------
It is a simple problem and can be managed by the standard Android stuff in less seconds.
The original idea from Jennes, help in the details from Desmanto.
The task:
After entering minutes, calculate the end time and use the notification bar / lock screen to display the current status.
Execution:
is done with 2 flows.
the start-up flow, initialize and calculate , set 2 global variables for the start and end of the timer, create notification, activate flow trigger
the Triggerflow,
- Exit on expiration, play sound (trigger variable date / time), deactivate trigger flow
- Cancel by tapping the action in the notification or tap the notification itself, deactivate trigger flow
- Refresh the notification by display on or open the notification bar or restart of AM
If the mobile phone has been switched off and the timer has expired, the alarm is running on startup.
If you need longer for the Login, as the start of AM needs, one hears the alarm, however, on my mobile
the following Message dialog is not displayed - the workaround was an input dialog which works. (Huawei P9 lite 7.0)
The notification is updated with a progress bar and information start/end and pending time.
A detail, which I have stumbled on often, was the remaining time using getDurationString.
You can also use date format, I prefer the function. The milliseconds are not wanted.
Desmanto has helped us a bit with some hints:
Code: Select all
// if more then 10 minutes left show no seconds
if(global_WMEnde-triggertime>600000)
{
faktor=60000;
} else
{
faktor=1000;
}
restzeit=getDurationString((global_WMEnde-triggertime)/faktor*faktor);
multiply by the same factor.
The factor is determined by the desired time or the non-desired time.
1000 milliseconds are 1 second, factor = 1000, thus no milliseconds are displayed.
60000 milliseconds are 60 seconds (1 minute), factor = 60000 so no seconds or milliseconds are displayed.
kind regards,