GPS de seguimiento de Android y WakeLock

Tengo que hacer el seguimiento de GPS de fondo en un teléfono Android, y actualmente estoy planeando tener dos escenarios:

  1. Cuando el teléfono está conectado a un cargador (de automóvil), obtenga frecuentes ubicaciones de GPS (cada minuto).
  2. Cuando el teléfono no está conectado a un cargador, sólo encuesta para una ubicación cada 5-30 minutos, dependiendo de la cantidad de la batería se ve afectada.

Sé que necesitaré implementar el seguimiento en un servicio, y probablemente muestre una notificación para mantener el servicio vivo. Sin embargo, creo que el teléfono podría entrar en modo de suspensión en cualquier momento, lo que detendría el seguimiento GPS.

Para estos escenarios, ¿cuál es la mejor manera de hacer un seguimiento GPS de fondo continuo, sin que el teléfono se vaya a dormir y sin drenar demasiada potencia?

Hasta ahora he reunido lo siguiente:

Para el escenario 1, probablemente necesitaré adquirir un WakeLock, y mantener la CPU despierta todo el tiempo (pero la pantalla puede dormir). La aplicación MyTracks parece estar haciendo esto en TrackRecordingService . OpenGPSTracking parece hacer lo mismo .

Para el escenario 2, puedo usar AlarmManager para programar una comprobación cada x minutos. Mi servicio necesitará adquirir un WakeLock temporal, esperar una sola ubicación GPS, luego detener y liberar el WakeLock nuevamente.

¿Cómo se compara el consumo de energía de estos dos métodos (permanente WakeLock vs AlarmManager)? ¿Puede el GPS recibir una localización exacta en una cantidad de tiempo razonable cuando sólo la comprobación cada 30 minutos?

Hay algunas preguntas relacionadas con StackOverflow, pero ninguna con respuestas satisfactorias. Algunos semi-útiles:

  • Cómo mantener la aplicación en ejecución en segundo plano? Seguir recogiendo datos? (Me señaló a MyTracks)
  • Seguimiento de sms del usuario y la posición geográfica en el fondo – es mi idea de trabajo?
  • Servicio de Android con GPS siempre

Puede utilizar el receptor de difusión si la alimentación está conectada o no y hacer su acción en consecuencia.

Para la alimentación conectada:

public class PowerConnected extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub if(intent.getAction().equalsIgnoreCase("android.intent.action.ACTION_POWER_CONNECTED")){ //Initialize your listener here... } } } 

En su archivo de manifiesto:

 <receiver android:name=".receiver.PowerConnected" > <intent-filter > <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> </intent-filter> </receiver> 

Cuando se desconecta la alimentación:

 public class PowerDisconnected extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equalsIgnoreCase("android.intent.action.ACTION_POWER_DISCONNECTED")){ //Do your task here... } } } 

En su archivo de manifiesto:

 <receiver android:name=".receiver.PowerDisconnected" > <intent-filter > <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> </intent-filter> </receiver> 

Ahora debe utilizar el service e inicializar su GPS allí. Cuando la energía está conectada utilice GPS_Provider o use el network provider Use wakelock si es necesario.

  1. Cuando el teléfono está conectado al cargador u puede adquirir el wakelock como ua que planea conseguir localizaciones frecuentes del GPS, alarmManager doesnt parece ser una gran idea en este caso.

  2. Cuando el teléfono no está conectado al cargador u puede utilizar el encargado de la alarma como u ll solamente encuesta para una localización una vez cada 5-30 minutos. La adquisición de wakelock afectará significativamente la duración de la batería.

La implementación es hasta u.

Aclamaciones….!!

  • Android: apaga la pantalla sin activar la pantalla de suspensión / bloqueo - Activar con pantalla táctil
  • Desarrollar la aplicación de alarma
  • El bloqueo de la repetición produce una excepción en Nexus 5
  • Android - ¿Cómo puedo despertar el teléfono de un sueño duro para tomar una foto?
  • ¿Cómo usar Wake Lock para android mediaplayer?
  • Android - Wake lock no se está adquiriendo correctamente, la aplicación debe seguir funcionando en modo de espera
  • ¿Debo usar WakeLock en IntentService?
  • BroadcastReceiver Vs WakefulBroadcastReceiver
  • WakeLock finalizó mientras seguía teniendo error aunque lo estoy lanzando
  • Pantalla tenue mientras el usuario está inactivo
  • ¿Cómo despertar android y mostrar la actividad?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.