2010-08-23 37 views
6

Me gustaría escribir una aplicación en Android para cargar mi ubicación de GPS en un sitio web externo una vez cada ~ 5 minutos. Esto debe tener un impacto mínimo en la duración de la batería como sea posible, pero también debe funcionar sin ninguna interacción del usuario. (Antecedentes: estoy compitiendo en un triatlón Ironman que me llevará unas 14 horas completar y quiero transmitir mi ubicación casi en tiempo real, pero sin tener que preocuparme por jugar con mi teléfono.)Obtener la ubicación de Android GPS una vez cada pocos minutos

Entonces mi idea inicial es escribir un servicio que use LocationManager.requestLocationUpdates() con un MinTime de 5 minutos, pero ¿esto realmente activará el dispositivo cada 5 minutos para que mi servicio haga su trabajo?

Parece que también necesitaría usar AlarmManager.setInexactRepeating() para asegurarme de que mi servicio está activo mientras completa su tarea, pero ¿cómo funciona eso con requestLocationUpdates()? ¿Debería configurar minTime = 0 en requestLocationUpdates() pero luego volver a dormir tan pronto como se obtenga la próxima actualización?

Cualquier orientación general sobre cómo diseñar esto es muy apreciada. Soy un programador de Java competente & utilizará Google Maps en el servidor para trazar mi ubicación, pero soy bastante nuevo en el desarrollo de Android, así que básicamente estoy buscando un plan de alto nivel sobre cómo diseñar la aplicación cliente.

+1

¡Espero que tenga un buen recipiente a prueba de agua para su teléfono! – Nick

+0

@Nick Sí, traeré una bolsa de plástico por si acaso, pero el pronóstico del tiempo en este momento está despejado. –

Respuesta

1

Su servicio debe estar activo todo el tiempo que desee recibir actualizaciones.

http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates%28java.lang.String,%20long,%20float,%20android.location.LocationListener%29

Se puede decir que la frecuencia con que desea ser informado del cambio de ubicación con el parámetro MinTime. Sin embargo, no disminuye el consumo de batería. El GPS está habilitado a menos que use el método removeUpdates sin importar la frecuencia con la que desee recibir actualizaciones.

Puede utilizar otro approache: activar el GPS utilizando el método anterior, leer un valor, utilice el método removeUpdates, espere 5 minutos y de nuevo. El retraso entre habilitar y recuperar una ubicación puede ser de unos pocos segundos a algunos minutos.

+0

Gracias @ radek-k, había visto esa documentación, pero a partir de la descripción asumí que establecer un minTime alto realmente ahorraría batería. Sin embargo, su descripción tiene sentido, pero tal vez pase por el ciclo cada 15 minutos para ser más conservador con la batería. –

+0

En cualquiera de sus acercamientos, la radio GPS está encendida, ¿no es así? Por lo tanto, podría estar consumiendo energía de todos modos. Si la demora entre habilitar y recuperar una ubicación (su segundo enfoque) es demasiado baja, podría ser mejor mantenerla activada (¿cuánto tiempo toma obtener una corrección de GPS?) –

Cuestiones relacionadas