BroadcastReceiver para la ubicación
Sé BroadcastReceiver relojes para el texto, eventos de teléfono, etc … pero se puede ejecutar LocationServices como un servicio y un evento basado en la ubicación?
Por ejemplo, usted está cerca de un cierto punto del GPS y el teléfono le notifica.
- Java io ioexception no puede analizar la respuesta del geocoder de servidor
- Cómo dibujar la ruta mientras me muevo desde mi ubicación actual usando Google Maps
- ¿Cómo eliminar las actualizaciones de ubicación en la clase de servicio en android?
- LocalizaciónClient - Mock Locations
- Cómo dibujar el marcador en el centro de la polilínea
- Android LocationLister implementado en IntentService nunca ejecuta el método OnLocationChanged ()
- Error de Android escribiendo datos de ubicación en la base de datos SQLite de la clase LocationListener
- Actualización de la ubicación de Android después de cada 5min Si el vehículo no se mueve
- OnLocationChanged no se llama automáticamente
- ¿Cómo funciona? RequestLocationUpdates () + LocationRequest / Listener
- LocationListener funciona en el emulador, no en el teléfono
- LocationListener de NETWORK_PROVIDER está habilitado pero, onLocationChanged nunca se llama
- Conmutación entre proveedor de red y GPS
Creo que lo que estás buscando es algo como esto. Hay una versión de LocationManager.requestLocationUpdates()
que toma un PendingIntent
como un parámetro, y este intento se podría utilizar para disparar un BroadcastReceiver
. Este código registrará una difusión personalizada para disparar con las actualizaciones de ubicación.
Intent intent = new Intent("UNIQUE_BROADCAST_ACTION_STRING_HERE"); LocationManager manager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE); long minTime; //This should probably be fairly long float minDistance; //This should probably be fairly big String provider; //GPS_PROVIDER or NETWORK_PROVIDER PendingIntent launchIntent = PendingIntent.getBroadcast(context, 0, intent, 0); manager.requestLocationUpdates(provider, minTime, minDistance, launchIntent);
Entonces sólo tiene que registrar su BroadcastReceiver
con la misma acción de intención y recibirá las actualizaciones de ubicación para su procesamiento. Y, por supuesto, mantener ese PendingIntent
alrededor, porque tendrá que llamar a manager.removeUpdates(launchIntent)
en algún momento!
Nota final:
Debido a que suena como si estuviera intentando implementar actualizaciones regulares de ubicación mientras su aplicación no está en primer plano, tenga esto en cuenta. A menos que desee que su aplicación sea calificada como un asesino de baterías, tenga mucho cuidado con la implementación de esta funcionalidad.
Deseará reducir en gran medida la frecuencia de actualizaciones de ubicación con un parámetro grande minTime o minDistance para permitir que el servicio de ubicación descanse. Esta característica también debe estar asociada a una preferencia controlada por el usuario para que puedan activar / desactivar la aplicación desde la ubicación de seguimiento en segundo plano.
¡Espero que ayude!
Esta pregunta es más de 2 años, pero ahora es muy fácil y eficiente de la batería para hacer esto. El concepto se llama Geofences . Puede aprenderlo con más detalle a continuación:
http://developer.android.com/training/location/geofencing.html