Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo configurar la hora base de Android Chronometer desde el objeto Date?

Tengo un problema con el cronómetro de inicio de la hora específica. Hay un objeto Fecha que quiero que empiece mi cronómetro desde:

Date d = new Date(); //now, just for example chronometer.setBase(d.getTime()); //long value of d Log.d("Date: " , "d.getTime() time is [" + d.getTime() +"]"); Log.d("Chron: " , "chronometer.getBase() is [" + chronometer.getBase() +"]"); //let's print out elapsedRealtime from official sample Log.d("Chron: " , "SystemClock.elapsedRealtime() is [" + SystemClock.elapsedRealtime() +"]"); 

Salida:

 06-02 13:35:23.025: D/Date:(928): d.getTime() time is [1338644123032] 06-02 13:35:23.037: D/Chron:(928): chronometer.getBase() is [1338644123032] 06-02 13:35:23.037: D/Chron:(928): SystemClock.elapsedRealtime() is [11624388] 

En realidad, ¿por qué estos valores largos de tiempo difieren (11624388 y 1338644123032)?

Cuando comienzo mi cronómetro desde la base

 chronometer.setBase(SystemClock.elapsedRealtime()); 

– siempre funciona bien ("00:00" y subiendo)

Pero cuando intento fijar la fecha de una fecha pasada (fe ayer):

 chronometer.setBase(yesterday.getTime()); 

– muestra "00: 0 (" y cambia cada segundo el último carácter a ")", "*", "/" y otros

¿Podría usted aconsejar por favor cómo puedo fijar la base del cronómetro a un objeto de la fecha?

2 Solutions collect form web for “Cómo configurar la hora base de Android Chronometer desde el objeto Date?”

En realidad, ¿por qué estos valores largos de tiempo difieren (11624388 y 1338644123032)?

SystemClock.elapsedRealtime() es el número de milisegundos desde que se activó el dispositivo. Los otros valores se basan en System.currentTimeMillis() , el número de milisegundos desde la época Unix.

¿Podría usted aconsejar por favor cómo puedo fijar la base del cronómetro a un objeto de la fecha?

No lo haces. Eso no es para lo que es Chronometer . Citando la documentación de Chronometer :

Puede darle un tiempo de inicio en la base de tiempo elapsedRealtime (), y cuenta de eso, o si no le da un tiempo base, utilizará el tiempo al que llama start ().

En realidad tuve un problema similar (la fecha provenía de un servicio externo, no la base de datos) y quería mostrar la antigüedad de la fecha.

Resultó ser sencillo:

 long lastSuccess = serviceDate.getTime(); //Some Date object long elapsedRealtimeOffset = System.currentTimeMillis() - SystemClock.elapsedRealtime(); pollAgeView.setBase(lastSuccess - elapsedRealtimeOffset); pollAgeView.start(); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.