Sé que es una pregunta muy antigua, pero también estoy luchando por convertir SensorEvent.timestamp
en un tiempo legible para los humanos. Así que escribo aquí lo que he entendido hasta ahora y cómo lo estoy convirtiendo para obtener mejores soluciones de ustedes. Cualquier comentario será bienvenido
Según tengo entendido, SensorEvent.timestamp
es un tiempo transcurrido desde el arranque del dispositivo. Así que tengo que saber el tiempo de actividad del dispositivo. Entonces, si hay un reinicio de un API, será muy fácil, pero no lo he encontrado. Así que estoy usando SystemClock.elapsedRealtime()
y System.currentTimeMillis()
para 'estimar' el tiempo de actividad de un dispositivo. Este es mi código
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);
...
}
Creo que esto funciona para aplicaciones que tienen un error de tiempo de milisegundos. Por favor, deja tus ideas.
Vea aquí: http://stackoverflow.com/questions/3498006/sensorevent-timestamp-to-absolute-utc-timestamp – goto10