Erstellen Sie einen inkrementierenden Timer in Sekunden im Format 00:00?

8

Ich möchte einen inkrementierenden zweiten Timer wie eine Stoppuhr erstellen.

Ich möchte also die Sekunden- und Minuteninkrementierung im Format 00:01 ...

anzeigen können

Google bringt nur 24-Stunden-Beispiele, ich frage mich, ob irgendjemand mich mit einem Beispiel oder einer Anleitung beginnen könnte, was ich tun möchte?

Bearbeiten:

Hier ist, was ich bisher mit dem Chronometer in Android gemacht habe

In onCreate ()

%Vor%

In onDestroy ()

%Vor%

Das obige kompiliert und läuft, aber das TextView wird niemals erhöht, es bleibt immer bei 0, kann jemand sehen warum?

    
Donal Rafferty 29.03.2010, 09:28
quelle

2 Antworten

29

Ich gehe davon aus, dass dir das Android Chronometer nicht bekannt ist - es hat bereits eine grundlegende Stoppuhr-Funktion. Sie müssen mit seinen Besonderheiten ein wenig arbeiten, aber es ist nicht schwer, es zu tun, was Sie wollen, sobald Sie verstehen, wie es funktioniert.

Es gibt einige Möglichkeiten, wie die Zeit am Telefon berechnet wird, aber die zwei wichtigsten sind:

  1. Die "Echtzeit", wie gerade jetzt nach meiner Computeruhr, ist 11:23 Uhr in England. Dies kann sich jedoch ändern, wenn mein Computer einen Zeitserver kontaktiert und ihm mitgeteilt wird, dass er die falsche Zeit hat oder wenn ich mit einem Laptop unterwegs bin und eine Zeitzonengrenze überschritten habe. Wenn Sie dies verwenden, würde Ihre Stoppuhr verheerend wirken, da sich die gemessene Zeit jederzeit ändern könnte.

  2. Die "verstrichene Zeit seit dem Start", die Anzahl der Millisekunden seit dem Einschalten des Telefons. Diese Zahl steht in keinem Verhältnis zur tatsächlichen Zeit, aber sie wird sich in perfekt vorhersagbarer Weise verhalten. Das nutzt der Android Chronometer.

Der Chronometer ist im Wesentlichen ein Count-up-Timer, der die aktuelle SystemClock.elapsedRealtime() mit der verstrichenenRealtime () vergleicht, die für die Basiszeit festgelegt wurde. Der Unterschied zwischen den beiden, geteilt durch 1000, ist die Anzahl der Sekunden seit dem Start des Timers. Wenn Sie jedoch den Timer stoppen und dann erneut starten, erhalten Sie ein kontraintuitives Ergebnis - der Timer zeigt die verstrichene Zeit an, als ob sie nie gestoppt wurde. Dies liegt daran, dass Sie die Basiszeit anpassen müssen, um die Zeit zu berücksichtigen, in der sie gestoppt wurde. Das ist einfach zu tun:

%Vor%

Bearbeiten: Hier ist der vollständige Code für eine einfache Stoppuhr, die Ihre Zeit in einem TextView und nicht in dem in Ihrer XML-Datei deklarierten Chronometer-Widget anzeigt.

%Vor%

In Ihrer main.xml müssen Sie dies haben

%Vor%

Es gibt zweifellos eine Möglichkeit, den Chronometer zum Laufen zu bringen, ohne ihn in der XML-Datei zu deklarieren, aber der Konstruktor Chronometer stopwatch = new Chronometer(this); hat nicht richtig funktioniert.

Der obige Code zeigt die abgelaufene Zeit auf sehr einfache Weise an. Zum Beispiel, wenn nur 5 Sekunden vergangen sind, zeigt es 0:5 anstatt die 0:05 , die Sie wahrscheinlich wollen. Das zu reparieren ist nicht schwer, aber ich überlasse es dir, es auszuarbeiten! :)

    
Steve Haley 29.03.2010, 10:43
quelle
2

Wie wäre es mit dieser Digitaluhr .

Aber im Grunde sollten Sie in der Lage sein, viele Java-Implementierungen zu finden, indem Sie nach Stichworten wie Java, Stoppuhr, Digitaluhr, ...

suchen

Sie können sich das Stoppuhr-Applet ansehen und es nach Bedarf ändern (Hoppla, keine Quelle mit dieser)

    
jitter 29.03.2010 09:32
quelle

Tags und Links