So che è una domanda molto vecchia, ma sono anche in difficoltà per convertire SensorEvent.timestamp
in un tempo leggibile dall'uomo. Quindi scrivo qui quello che ho capito finora e come lo sto convertendo per ottenere soluzioni migliori da voi ragazzi. Eventuali commenti saranno accolti
Come ho capito, SensorEvent.timestamp
è un tempo trascorso dall'avvio del dispositivo. Quindi devo sapere il tempo di attività del dispositivo. Quindi, se c'è un avvio del dispositivo di ritorno API, sarà molto facile, ma non l'ho trovato. Quindi sto usando SystemClock.elapsedRealtime()
e System.currentTimeMillis()
per "stimare" il tempo di attività di un dispositivo. Questo è il mio codice
private long mUptimeMillis; // member variable of the activity or service
...
atComponentsStartUp...() {
...
/* Call elapsedRealtime() and currentTimeMillis() in a row
in order to minimize the time gap */
long elapsedRealtime = SystemClock.elapsedRealtime();
long currentTimeMillis = System.currentTimeMillis();
/* Get an uptime. It assume that elapsedRealtime() and
currentTimeMillis() are called at the exact same time.
Actually they don't, but, ignore the gap
because it is not a significant value.
(On my device, it's less than 1 ms) */
mUptimeMillis = (currentTimeMillis - elapsedRealtime);
....
}
...
public void onSensorChanged(SensorEvent event) {
...
eventTimeMillis = ((event.timestamp/1000000) + mUptimeMillis);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(eventTimeMillis);
...
}
Penso che questo funzioni per le app che un errore di millisecondo è okey. Per favore, lascia le tue idee.
fonte
2016-02-17 14:09:39
Vedere qui: http://stackoverflow.com/questions/3498006/sensorevent-timestamp-to-absolute-utc-timestamp – goto10