Android: ¿Alternativa a OnsensorChanged? No hay datos de acelerómetro cuando el teléfono está de espaldas sobre una mesa (cuando no se movimiento)
-
24-10-2019 - |
Pregunta
Así que estoy usando este código para obtener los datos del acelerómetro. Cuando estoy en el modo DDMS para verificar cuál es mi declaración de impresión, noté que no se imprime nada cuando el teléfono no se mueve. es decir. que está sobre la mesa. Creo que la razón es que OnsensorChanged no se llama cuando el teléfono no se mueve, y luego se llama cuando el teléfono comienza a moverse nuevamente. Si quiero capturar datos independientemente de si el teléfono se está moviendo o no, ¿debería usar alguna otra función? ¿Alguna alternativa? o alguna solución? Cualquier ayuda apreciada.
¡Gracias!
public void onSensorChanged(SensorEvent event) {
StringBuffer buff = new StringBuffer();
buff.append(String.valueOf(event.timestamp));
buff.append(comma);
buff.append(String.valueOf(event.values[0]));
buff.append(comma);
buff.append(String.valueOf(event.values[1]));
buff.append(comma);
buff.append(String.valueOf(event.values[2]));
mCurrentFile.println(buff.toString());
mCurrentFile.write(buff.toString()+ '\n');
System.out.println( "**" + buff.toString());
}
Solución
Puedes hacer que un hilo escuche los cambios del sensor (es decir, onSensorChanged()
que escribirán los datos en variables globales) y otro hilo que ejecuta un temporizador (mire postDelayed
, http://developer.android.com/reference/android/os/handler.html) que lo leerán en los tiempos establecidos. Si no hay cambios, volverá a leer los mismos datos. Fácil, limpio y agradable para la batería.
Otros consejos
Si este método solo se llama cuando "el sensor cambia", intente guardar los valores que lee cuando se ejecuta. Si el método no se llama, ¿eso no significa que los valores sean los mismos?