2011-07-20 7 views
7

[Editar: Se ha eliminado toda mención de la versión Android - el tema está presente en todas las versiones de Android]Solución Android para que no trabajan sensores cuando la pantalla está apagada

Antecedentes: Cuando la pantalla está apagada, muchos teléfonos Android hacen no proporciona actualizaciones a las aplicaciones de las lecturas del Acelerómetro llamando a OnSensorChanged() cuando la pantalla está apagada. Este comportamiento se discute en S.O. y está más documentado aquí http://code.google.com/p/android/issues/detail?id=3708

En algunos teléfonos (Nexus S, Droid X2, ...) los valores del acelerómetro solo se proporcionan cuando hay un cambio significativo en el valor. Sentado en una mesa, por ejemplo, podría haber una o cero actualizaciones por minuto

Para producir un código robusto en todos los modelos de teléfono, ¿cómo puedo distinguir entre la falta de eventos de actualización por pantalla apagada? ¿falta de actualizaciones por no movimiento? ¿Debo mantener una base de datos de modelos de teléfonos?

+0

Una buena aplicación de hecho anular el registro del acelerómetro cuando la actividad va en segundo plano. – Wroclai

+1

Gracias por el comentario. Un ejemplo de una necesidad legítima para la respuesta a esta pregunta podría ser una aplicación de podómetro que registra al oyente en un servicio. – luser845

+0

Mi experiencia ha sido que un bloqueo parcial de activación mantiene la CPU activa incluso cuando la pantalla se apaga. Si no hay un cambio significativo en las lecturas del acelerómetro, ¿por qué le importaría una actualización? Sin embargo, dudo que la mayoría de los paquetes de sensores emitan tanto ruido que nunca leen cero. – Idistic

Respuesta

0

Esto será difícil de detectar. La API de Android proporciona una forma de controlar Wake Lock. Pero los fabricantes han hecho un TERRIBLE trabajo de implementar esto en el SO de su lado. Simplemente TERRIBLE. Debería tomar un PARTIAL_WAKE_LOCK para mantener la CPU de los teléfonos en funcionamiento cuando se apaga la pantalla.

Sin embargo, no todos los dispositivos lo usan y no responden (la mitad o la mitad responden) y algunos responden muy bien.

Después de leer los comentarios anteriores, puedo decir que la mayoría de los dispositivos con 2.3+ que he usado todavía no implementan el bloqueo de activación parcial aún.

Personalmente no confiaría en algo que el fabricante controle porque el mercado está TAN fragmentado. Intentaría encontrar una manera de obtener la funcionalidad que estoy buscando con una solución diferente.

Espero que esto ayude.

0

He estado buscando una solución para este problema durante dos días. Pero aún así no encontré nada útil.

En esta publicación here, por Bruno Albuquerque hay algo que podría ayudar con los teléfonos Motorola pero no es genérico.

Creo que @jjNford está en lo cierto acerca de las manufacturas que tienen un dedo en eso, ¿puedes publicar cualquier información al respecto?

Here es un informe de error acerca de que data de 2009

Cuestiones relacionadas