2011-03-09 12 views
13

Sé que BroadcastReceiver busca mensajes de texto, eventos de teléfono, etc. ... pero ¿puede ejecutar LocationServices como un servicio y evento basado en la ubicación?BroadcastReceiver para la ubicación

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

+1

Aquí tiene http://developer.android.com/reference/android/location/LocationListener.html – schwiz

Respuesta

31

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 esta intención 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); 

A continuación, sólo tiene que registrar su BroadcastReceiver con la misma acción Intención y se recibirán las actualizaciones de ubicación para su procesamiento. Y, por supuesto, mantenga ese PendingIntent porque tendrá que llamar al manager.removeUpdates(launchIntent) en algún momento.

Nota final:

Porque suena como si estuviera tratando de implementar actualizaciones de ubicación normales, mientras que 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.

Deseará 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 eso ayude!

+0

@ Wireless-Designs, usted es una joya, Pensé que este era el caso, todavía estoy aprendiendo acerca de la INTENCIÓN para el Droid, su respuesta es muy informativa, ¡gracias por su amable señor de tiempo! – ProNeticas

+0

No hay problema. Si esta respuesta termina resolviendo tu problema, no dudes en aceptarlo. ¡Aclamaciones! – Devunwired

+0

Lo haré, quería probar primero;) – ProNeticas

Cuestiones relacionadas