studio - sensor de temperatura en android
Necesito leer los sensores de Android muy rĂ¡pido (5)
Problema:-
- Estoy desarrollando una aplicación que necesita un nuevo dato de aceleración cada 5 milisegundos.
Mi acercamiento:-
- He creado un servicio remoto que solo lee los datos de aceleración de SensorManager.
- También había establecido la velocidad de lectura en "RETARDAR MÁS RÁPIDO" al inicializar el SensorManager.
- Luego uso IPC para comunicar también mi aplicación principal para obtener estas lecturas.
Problema:-
- Si pongo un registro en el evento onSensorChange (), recibo una nueva información del sensor cada 20 ms de tiempo. Pero necesito datos cada 5 ms.
Pregunta
¿Hay algún método mejor para leer los datos del señor más rápido?
¿Hay alguna manera de que pueda sondear los datos del señor en lugar de esperar a que el controlador de eventos active el evento?
Por favor, ayúdeme a encontrar una mejor solución para leer los datos en 5 ms o sondear los datos de aceleración.
Como lo entiendo, el acelerómetro es muy ruidoso y no es adecuado para operaciones rápidas. Consulte la charla de GoogleTech sobre la fusión de sensores en http://www.youtube.com/watch?v=C7JQ7Rpwn2k para obtener una explicación más autorizada y qué puede hacer al respecto. Explicación breve: utilice el giro para eventos de alta velocidad y el aceleromenter para corregir la deriva.
Con respecto a la velocidad del SensorManager de Android, estaría más inclinado a sospechar la velocidad de la E / S del archivo de Android que está generando su registro. Puede probar una referencia de su código de lectura del sensor sin escribir en el registro. Algo así como registrar la hora actual en milisegundos, luego hacer 1,000,000 lecturas de sensores y luego registrar la hora actual nuevamente. Es posible que aún tenga que usar la versión C para obtener los datos, pero al menos sabrá definitivamente dónde se encuentra el cuello de botella.
Hay algunos problemas que puedo ver con esto. La primera es que es muy probable que se atasque el resto del sistema si intenta forzar el sondeo de los datos del sensor tan rápido. Si todo lo que está haciendo es un sensor de sondeo que puede estar bien, pero si desea algún tipo de interacción del usuario, no estoy seguro de que funcione. Además, ¿por qué necesita datos tan rápido? Si estás interactuando con la gente, no hay forma de que veas un retraso de hasta 100 ms.
has resuelto tu problema? Tengo un proyecto similar, para obtener muestras al menos cada 10 ms (unos 100 Hz), here . Pero, nada cambia en las muestras que obtuve, incluso cuando establecí setEventRate = 10 milisec.
Así que creo que hay alguna limitación de hardware ya que he leído la hoja de datos BMA220 (el hardware de mi sensor) solo proporciona 62,5 Hz para el modo secundario de orientación.
Para las personas que hacen referencia a este post de hoy , aunque creo que @robinr tiene un buen punto y es muy cierto, no es una respuesta, sin embargo, no me deja comentarlo directamente.
Para respuestas a la primera consulta de referencia Actividad Nativa . And Android no garantiza la tasa de datos, solo se asegura de que obtenga el mínimo (o máximo si solicita demasiado).
El acelerómetro no es ruidoso, al menos no hoy. Es demasiado bueno para recoger TODO. Por lo tanto, debe usar un poco de filtrado si desea un buen algoritmo acelerómetro. Si tiene excelentes filtros, el acelerómetro es realmente preferible a todos los demás, ya que generalmente es un sensor de menor potencia, tiene la frecuencia más alta admitida y es más probable que esté disponible cuando la pantalla está apagada (en comparación con otros sensores).
La advertencia a un método contundente de usar nativo y extraer la frecuencia más alta es que el soporte de su dispositivo será limitado. Es por esto que Android no admite la configuración de frecuencia directa.
En respuesta a la pregunta 2; tendrá que controlar manualmente los eventos de sus sensores mediante el control de la marca de tiempo.