BroadcastReceiver para la ubicación

Sé que BroadcastReceiver busca mensajes de texto, eventos telefónicos, etc., pero ¿puede ejecutar LocationServices como un servicio y evento basado en Location?

Por ejemplo, estás cerca de un determinado punto GPS y el teléfono te avisa.

Creo que lo que estás buscando es algo como esto. Hay una versión de LocationManager.requestLocationUpdates() que toma un PendingIntent como parámetro, y este Intent podría usarse para disparar un BroadcastReceiver . Este código registrará una transmisió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); 

Luego solo tiene que registrar su BroadcastReceiver con la misma acción de intención y recibirá las actualizaciones de ubicación para el procesamiento. Y, por supuesto, mantenga ese PendingIntent porque tendrá que llamar a manager.removeUpdates(launchIntent) en algún momento.

Nota final:

Debido a que parece que intenta implementar actualizaciones de ubicación regulares 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 forma de implementar esta funcionalidad.

Deberá reducir en gran medida las actualizaciones de frecuencia de ubicación con un parámetro minTime o minDistance grande para permitir que descanse el servicio de ubicación. Esta función también se debe adjuntar a una preferencia controlada por el usuario para que pueda habilitar / deshabilitar su aplicación de la ubicación de seguimiento en segundo plano.

¡Espero que ayude!

Esta pregunta tiene más de 2 años, pero ahora hay una manera muy fácil y eficiente de hacerlo. El concepto se llama Geofences . Puedes aprenderlo con más detalle a continuación:

http://developer.android.com/training/location/geofencing.html