Android: ¿Alternativa a OnsensorChanged? No hay datos de acelerómetro cuando el teléfono está de espaldas sobre una mesa (cuando no se movimiento)

StackOverflow https://stackoverflow.com/questions/5804142

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());

}
¿Fue útil?

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?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top