Recolector de datos de sensor de fondo en Android

Ahora estoy programando un programa que recoge datos de sensores, por ejemplo, valores de acerómetro para un día entero.

Corriente Sólo utilizo una Actividad y ejecuto la actividad durante un día entero (apago la pantalla auto negro), y no hago ningún mensaje corto o llamadas telefónicas durante el día.

He oído que puedo hacer este tipo de colector de datos de largo funcionamiento en segundo plano usando el servicio. Pero después de revisar el podómetro en http://code.google.com/p/pedometer/ . Encontré que, cuando la pantalla se oscurece, el podómetro no funciona. (Pero una aplicación como el predometer debería funcionar en cualquier caso siempre y cuando la alimentación esté encendida).

Aunque no me preocupa el problema de la potencia de siempre acclerómetros de detección, quiero hacer negro a la pantalla para guardar el poder en la pantalla para grabar más acclerometer puntos de datos .

Estoy pensando en dos maneras:

1.Usar un servicio, sin embargo, como mostró la aplicación del podómetro. Cuando la pantalla se oscurece, el servicio parece parado trabajando también! Tal vez el código tiene errores.

2. Mi aplicación sigue siendo una actividad. Pero cambio la luz scrren en 0 o totalmente negro para ahorrar energía.

Mi pregunta es que: 1) ¿tiene un servicio tener la posibilidad de estar siempre en ejecución, incluso cuando la pantalla se oscurece durante mucho tiempo; Para 2, ¿cómo cambiar la luz de la pantalla?

¡Gracias!

referente a 1 – lo que necesita es un servicio remoto. este es un servicio casi similar a un servicio "local" (que se utiliza en el ejemplo del podómetro), pero puede ejecutarse incluso si no hay actividad vinculada a él, en segundo plano. puede apagar la pantalla e incluso la actividad puede bloquearse (en un mal caso;)) pero el servicio sigue funcionando si lo inició con startService (…) en lugar de bindService (…).

tratar de obtener a través de esto y ver si eso ayuda.

referente a 2 – deberías usar (1);)

Usted 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 método onStartCommand() , devuelva Service.START_REDELIVER_INTENT o algo similar, para que el servicio dure más tiempo que la Activity .

Ahora el truco: para mantener el servicio de procesamiento correctamente cuando el teléfono se va a dormir, es necesario trabajar con un PowerManager.WakeLock . Estos son bastante difíciles de acertar, y no creo que una explicación completa es necesaria en esta respuesta.

Aquí hay más información:

  • ¿Cómo conseguir un WakeLock de Android para trabajar?

  • También intenta blog de Lars Vogel: Uso de Android Wakelock – Mantenerse toda la noche


Disculpas por la respuesta resumida, pero su pregunta es bastante amplia en términos de que toca algunos temas avanzados.

El servicio de fondo se puede implementar con IntentService para la mayoría de los escenarios.

Asegúrese de que el servicio de fondo funcione en la versión Android más reciente y anterior, como 2.3 o 2.2.

El diseño de operaciones en segundo plano es diferente a partir de Android 4.0.

Mejores Prácticas para Trabajos de Antecedentes

Realización de operaciones de red

  • ¿Es posible ejecutar mi servicio por tiempo indefinido?
  • Cómo repetir la notificación diaria en el tiempo específico en androide a través del servicio de fondo
  • Cómo ensayar un servicio de Android que depende de una conexión de red
  • Diseño de hilos múltiples de Android Service
  • Cómo utilizar NotificationCompat.Builder y startForeground?
  • Android: uso de la red en un servicio
  • Android: Cómo detener el servicio de música de mi aplicación, si otra aplicación reproduce música.
  • Android startService () tarda mucho tiempo en volver al subproceso de interfaz de usuario
  • Cómo llamar al método en servicio de otra actividad
  • Notificación diaria de Android
  • En Android: ¿Cómo llamar a la función de la actividad de un servicio?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.