establecer 2 alertas de proximidad con la misma emisión
Creo una alerta de proximidad de esta manera
private void setProximityAlert(float radius, double lat, double lng, String place) { long expiration = -1; LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Intent intent = new Intent(TREASURE_PROXIMITY_ALERT); intent.putExtra("lat", lat); intent.putExtra("lng", lng); intent.putExtra("place", place); PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), -1, intent, 0); locManager.addProximityAlert(lat, lng, radius, expiration, pendingIntent); }
y en mi actividad registré al receptor de esta manera
- ¿Qué escala es inicial teniendo en devuelto desde Location.distanceBetween ()
- Puntos GPS increíblemente inexactos. ¿Cual es la razon?
- ¿Cómo comprobar la presencia de un sensor GPS?
- Calcular la velocidad de una aplicación de navegación sin el método getSpeed ()
- Cómo quitar un LocationListener de LocationManager que se agrega dos veces en android?
IntentFilter intentFilter = new IntentFilter(TREASURE_PROXIMITY_ALERT); registerReceiver(new ProximityIntentReceiver(), intentFilter); setProximityAlert(10, 45.150344, 9.999815, "POINT1");
y mi receptor de difusión se llama correctamente. Así que ahora, quiero agregar otra alerta de proximidad, ¿es posible? Quiero que el mismo receptor de boadcast sea llamado por 2 alertas de proximidad. Yo hice esto:
IntentFilter intentFilter1 = new IntentFilter(TREASURE_PROXIMITY_ALERT1); registerReceiver(new ProximityIntentReceiver(), intentFilter1); setProximityAlert(200f, 45.143848, 10.039741, "POINT2");
pero no funciona, no pasa nada. Estoy realmente en él y me preguntaba si es el camino correcto. Mi intención es gatillo 2 alertas, una cuando GPS obtener la posición POINT1 y otro en la posición POINT2. Cualquier ayuda es bienvenida.
- Desactivar / Comprobar la ubicación falsa (evitar la suplantación de gps)
- Android - ¿Hay una manera de escuchar si el GPS fue activado o desactivado
- ¿Cómo obtener el dato real que android GPS está usando?
- Más de un proveedor de ubicación al mismo tiempo
- La aplicación comienza a buscar el GPS justo al iniciar la aplicación, no cuando es necesario
- Android - trazado de gps coordinar en mapa personalizado
- El oyente de ubicación funciona desde un servicio pero no es un servicio de IntentService
- ¿Se puede ampliar el tamaño de la superposición con el mapa de google en android?
Usted necesita usar cualquier setAction
único para que el sistema considere los dos intentos diferentes, ya que de lo contrario tenderá a reutilizar el primero.
Tengo este código:
Intent intent = new Intent(this,PlacesProximityHandlerService.class); intent.setAction("foo"+objPlace.getId()); intent.putExtra(Poi._ID, objPlace.getId()); intent.putExtra(Poi.LAT, objPlace.getLat()); intent.putExtra(Poi.LON, objPlace.getLon()); PendingIntent sender = PendingIntent.getService(this,0, intent, 0); LocationUtils.addProximity(this, objPlace.getLat(),objPlace.getLon(), objPlace.getError(), -1,sender);
También tenga en cuenta que la alerta de proximidad funciona un poco difícil.
El usuario entra en la zona ZONE1 en función de la precisión de la señal y el radio que ha establecido. Se emite la emisión para ingresar = true ZONE1. Si ingresa a otra zona ZONE2 que se superpone con la zona actual, no obtiene la alerta como sigue en ZONE1. Debe salir de la ZONE1, por lo que la emisión se disparará de nuevo con enter = false. Así que una vez que salió de ZONE1, si llega ZONE2, disparará la emisión entrando = true ZONE2.
He probado y funciona muy bien. Grab Location Spoofer
aplicación gratuita del mercado y simular la ubicación del teléfono. También es necesario activar las ubicaciones simuladas en la configuración del teléfono. Y añada permiso adicional a su aplicación:
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
Lo que yo haría, establecer mi ubicación lejos de mí, probablemente Groenlandia, a continuación, establecer la posición en una zona que desencadena ZONE1, la emisión debe disparar. A continuación, vuelva a establecer mi ubicación a Greeland, y establecer la posición que desencadena ZONE2, la emisión debe disparar.
La bandera entrante se puede obtener de los extras de la intención
Bundle b = intent.getExtras(); Boolean entering = (Boolean) b.get(android.location.LocationManager.KEY_PROXIMITY_ENTERING);
He utilizado los códigos anteriores para configurar alertas de proximidad para 100 POI y todo funciona bien.
- ¿Es posible enviar un evento de un hilo a una actividad?
- LocationManager requestLocationUpdates y timertask en android