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:
- Cuando el teléfono está conectado a un cargador (de automóvil), obtenga frecuentes ubicaciones de GPS (cada minuto).
- 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.
- ¿Es posible tener varias cerraduras de la estela?
- ¿Cómo deshabilitar el botón de encendido?
- StandBy como actividad
- Uso de WakeLock para mantener una reproducción en secuencia
- ¿Un GCM-App realmente necesita un wakelock?
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
- Programación de Android: GCMIntentService Stuck at WakeLock
- Preguntas para principiantes: Wakelocks
- Ayuda con PROXIMITY_SCREEN_OFF_WAKE_LOCK en Android
- Servicio androide con repetición de hilo en el fondo con el bloqueo parcial de la estela
- ¿Cómo puedo ver qué wakelocks están activos?
- ¿Debería llamar a WakeLock antes de crear una notificación?
- WakeLock finalizado mientras se mantiene
- PARTIAL_WAKE_LOCK vs SCREEN_DIM_WAKE_LOCK en el subproceso de descarga
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.
-
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.
-
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….!!