Ho riscontrato un problema con l'avvio del cronometro dall'ora specifica. C'è un oggetto Date voglio che il mio inizio di cronometro da:Come impostare l'ora di base Android Chronometer dall'oggetto Date?
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() +"]");
uscita:
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]
In realtà, perché questo lungo valori di differes tempo (11624388 e 1.338.644,123032 millions)?
Quando avvio il mio cronometro dalla base
chronometer.setBase(SystemClock.elapsedRealtime());
- funziona sempre bene ("00:00" e in aumento)
Ma quando provo a impostare la data da un passato Data (fe ieri):
chronometer.setBase(yesterday.getTime());
- mostra "00: 0 (" e cambia ogni secondo l'ultimo char ")", "*", "/" e altri
Potresti consigliare come posso impostare la base del cronometro su un oggetto Date?
Grazie Marco. Il mio obiettivo è creare un orologio digitale che mostri la durata tra due attività (memorizzate nel database con record di tempo). Potresti consigliare la migliore pratica per questo? – Vitalliuss
@Vitalliuss: se il tempo di inizio e quello di fine sono fissi in un database, usa solo 'TextView', poiché il tuo valore non cambierà. Se il tuo orario di inizio è fisso in un database, e stai contando da lì, dovrai creare il tuo equivalente 'Cronometro' che richiede un tempo di inizio nella base dei tempi' System.currentTimeMillis() ', invece di' elapsedRealtime() '. Poiché ['Chronometer' non è una classe molto lunga] (https://github.com/android/platform_framework_base/blob/master/core/java/android/widget/Chronometer.java), clonandolo e creando il tuo dovrebbe essere ragionevolmente facile – CommonsWare
Proverò a riscrivere Chronometer per il mio progetto. Grazie molto! – Vitalliuss