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.

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

  • Android no recibe actualizaciones de ubicación cuando la pantalla está bloqueada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.