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!

3 Solutions collect form web for “Recolector de datos de sensor de fondo en Android”

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

  • Acceda a Running service y llame a su método?
  • MVC en Android: ¿Aplicación o servicio para actualizaciones asíncronas?
  • Cómo utilizar NotificationCompat.Builder y startForeground?
  • Vinculante para ejecutar el servicio (después de finish ()) / callback Handler
  • Gestión de devoluciones de llamada del servicio remoto
  • android - utiliza la cámara desde el servicio de fondo
  • Gran uso de memoria en las notificaciones
  • ¿Por qué NullPointerException ocurre con el uso de BillingService estándar?
  • Ejecutar servicio incluso si la aplicación está cerrada (matado)
  • Iniciar servicio desde la notificación
  • El archivo AIDL no genera un archivo Java
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.