Android - le temps du chronomètre widget
Comment obtenir le temps à partir d'un Chronomètre? J'ai essayé de getText, getFormat, getBase, etc, mais aucun d'entre eux pourraient travailler.
Exemple d'extrait de code:
Chronometer t = (Chronometer)findViewById(R.id.toptime);
long time = SystemClock.elapsedRealtime()-t.getBase();
Log.d(null,"Was: "+time); //time is not the proper time for some reason - it is a random number between 0 and 50
t.setBase(SystemClock.elapsedRealtime());
t.start();
- Chronomètre prend désormais en charge
getText()
InformationsquelleAutor Isaac Waller | 2009-02-08
Vous devez vous connecter pour publier un commentaire.
Si vous regardez le code source du Chronomètre de la classe, vous verrez qu'il ne stocke pas le temps écoulé dans un champ, et il calcule en interne chaque fois qu'il doit mettre à jour l'affichage.
Cependant, il est relativement facile de faire la même chose dans votre propre code:
Cela suppose que vous avez commencé votre horloge à quelque chose comme ceci:
Voici un exemple complet:
Un peu déroutant chose à propos de Chronomètre, c'est que vous ne pouvez pas vraiment l'utiliser comme un chronomètre se met en marche, l'arrêt et le redémarrage de nouveau. Quand il est en cours d'exécution, il sera toujours montrer le temps écoulé depuis la dernière réinitialisation, peu importe combien de fois et pendant combien de temps vous avez arrêté en attendant. Quand il est arrêté, il s'arrête tout simplement la mise à jour de l'affichage.
Si vous besoin de quelque chose comme un chronomètre, vous aurez à la sous-classe Chronomètre ou peut-être créer votre propre version à l'aide de la source.
J'ai trouvé cet exemple très utile, merci nyenyec!
Voici mes deux cents sur la façon de la transformer en un véritable fonction chronomètre, sans sous-classement Chronomètre. Il suffit de changer le mStartListener méthode permettant d'analyser le texte de mChronometer (c'est dérivée à partir de TextView, après tout), calculer millisecondes, et l'utilisation setBase() pour corriger la base de temps pour que la quantité de temps dans le passé:
@nyenyec +1: voici ce que j'ai, tout en utilisant nyenyec de réponse sans une sous-classe.
où le SEUIL est
Ma Solution:
Dans onCreate:
Il y a deux boutons dans la disposition qui, à la fois appel à la starttimer méthode (start et stop)
Un peu en retard de réponse, mais j'essayais de résoudre moi-même aujourd'hui. J'ai fini juste à l'analyse du texte de l'affichage:
Afin de l'appelant getSecondsFromDurationString avec vue.getText().toString() vous donne le temps total écoulé en secondes (mon application est une sorte de chronomètre, de sorte que vous pouvez mettre en pause et de le reprendre).
Espère que cela aide.