temperatura - Un recopilador de datos del sensor de fondo en Android
lista de sensores android studio (3)
con respecto a 1: lo que necesitas es un servicio remoto. este es un servicio casi similar a un servicio "local" (que se usa en el ejemplo del podómetro) pero puede ejecutarse incluso si no hay actividad vinculada a él, en el fondo. puede apagar la pantalla e incluso la actividad puede bloquearse (en un mal caso;)) pero el servicio continúa ejecutándose si lo inició con startService (...) en lugar de bindService (...).
intente superar esto y vea si eso ayuda.
con respecto a 2: realmente deberías usar (1);)
Ahora estoy programando un programa que recopila datos de sensores, por ejemplo, valores de acrómetro durante todo un día.
Actual Solo uso una Actividad y ejecuto la actividad por un día completo (apago la pantalla negro automático), y no hago ningún mensaje corto o llamadas telefónicas durante el día.
He escuchado que puedo hacer este tipo de recopilador de datos de larga ejecución en segundo plano usando el Servicio. Pero después de consultar el podómetro en http://code.google.com/p/pedometer/ . Descubrí que, cuando la pantalla se apaga, el podómetro no funciona. (Pero una aplicación como el predómetro debería funcionar en cualquier caso, siempre que esté encendido).
Aunque no me importa el problema de la potencia de detectar siempre los acrómetros, sí quiero oscurecer la pantalla para ahorrar energía en la pantalla y registrar más puntos de datos de acrómetro .
Estoy pensando en dos maneras:
1.Utilizando un servicio, sin embargo, como se mostró en la aplicación del podómetro. Cuando la pantalla se apaga, ¡el servicio parece suspendido también! Tal vez el código tiene errores.
2. Mi aplicación todavía es una actividad. Pero cambio la luz scrren en 0 o totalmente negra para ahorrar energía.
Mi pregunta es que: para 1) un servicio tiene la posibilidad de estar siempre funcionando incluso cuando la pantalla se apaga por un tiempo prolongado; Para 2, ¿cómo cambiar la luz de la pantalla?
¡Gracias!
El servicio en segundo plano se puede implementar con IntentService
para la mayoría de los escenarios.
Asegúrese de que el servicio en segundo plano funciona en la última versión de Android como 2.3 o 2.2.
El diseño de operaciones en segundo plano es diferente a partir de Android 4.0.
No necesita un servicio remoto ; esto se puede hacer con un Service
local.
Utilice el patrón de comando en lugar del patrón de enlace para el servicio, es decir, use startService()
/ stopService()
lugar de bind()
/ unbind()
.
En su onStartCommand()
service onStartCommand()
, devuelva Service.START_REDELIVER_INTENT
o algo similar, para que el servicio dure más que la Activity
.
Ahora el truco: para mantener el procesamiento del servicio correctamente cuando el teléfono se queda dormido, debe trabajar con un PowerManager.WakeLock . Estos son bastante difíciles de entender, y no creo que se necesite una explicación completa en esta respuesta.
Aquí hay más información:
Pruebe también el blog de Lars Vogel: Usando Android Wakelock - Permaneciendo despierto toda la noche
Disculpas por la respuesta resumida, pero tu pregunta es bastante amplia en términos de que toca algunos temas avanzados.