Administrador de Ubicaciones ProxmityAlert siempre dice entrar

Quiero alertar al usuario cuando está cerca de un lugar en particular. Para esto he incluido un ProxmityAlert y un servicio correspondiente en mi aplicación. Pero no importa lo que las coordenadas que doy, siempre me muestra "Gracias por visitar mi área! Entrar" ¿Estoy haciendo esto de la manera equivocada?

Así es como lo hago:

public class ProxTest extends Activity { LocationManager lm; double lat = 30.085514, long1 = 77.082603; float radius = 50; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lm = (LocationManager) getSystemService(LOCATION_SERVICE); Intent i = new Intent(); i.setAction("com.example.test.proximityalert"); PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), -1, i, 0); lm.addProximityAlert(lat, long1, radius, -1, pi); sendBroadcast(i); System.out.println("Prox alert added "); } 

}

Y este es el receptor:

 public class ProximityReceiver extends BroadcastReceiver { @Override public void onReceive(Context arg0, Intent arg1) { // TODO Auto-generated method stub String k = LocationManager.KEY_PROXIMITY_ENTERING; boolean state = arg1.getBooleanExtra(k, false); if (state) { Toast.makeText(arg0, "Welcome to my Area", Toast.LENGTH_LONG) .show(); } else { Toast.makeText(arg0, "Thank you for visiting my Area!!"+k, Toast.LENGTH_LONG).show(); } } } 

En el Manifiesto, he añadido:

 <receiver android:name="ProximityReceiver"> <intent-filter> <action android:name="com.example.test.proximityalert"> </action> </intent-filter> </receiver> 

En mi opinión usted debe utilizar múltiples geofencing, como la manera más simple para lograr lo que desea. Usted puede hacer algo como un área de destino. Por lo tanto, el ojo objetivo es el centro en el que desea que el usuario se encamine fuera o lograrlo.

http://www.cision.com/us/wp-content/uploads/2008/10/j0439610.png

Al igual que en esta imagen de destino, por ejemplo, tendrá que contar de fuera a dentro, un total de 6 geofences. El más cercano al objetivo, cuanto mayor sea el ID de geofencia 6, el área más lejana del objetivo será el ID de geofencia 1. Básicamente tendrá que coordinar varias geofenciones para lograr lo que desea. Por lo tanto, en lugar de tener geofences separados con superposición de áreas fronterizas, tendrá geofences céntrica.

Cada vez que su usuario obtiene un valor más alto de geofence, una intención da una señal o tono, como por ejemplo: "te estás acercando ". Al revés también es cierto, para el caso de que el usuario está alejándose del área de destino: "su geofence ID cambió de 3 por 2, se mueve en la dirección opuesta a su destino de destino" .

Su código actual no hace este tipo de distinción de diferentes direcciones relacionadas con geofencing, ni muestra el manejo de múltiples geofencing. Ése es porqué el código no se está comportando la manera que usted quisiera.

  • Cómo obtener una referencia a LocationManager dentro de un fragmento
  • NETWORK_PROVIDER no proporciona ubicaciones actualizadas
  • Alarma de proximidad disparando dos veces después de retirar y volver a agregar
  • OnLocationChanged siempre devuelve la antigua ubicación
  • ¿Debo usar android LocationManager.getBestProvider cada vez que solicito actualizaciones de ubicación?
  • SetTestProviderLocation () no activa la llamada de onLocationChanged ()
  • Especificar intervalos para que el Administrador de ubicaciones transmita la ubicación actual en Android
  • La búsqueda de ubicación GPS nunca se detiene en ICS
  • Calibración GPS androide
  • OnLocationChanged no se llama automáticamente
  • Ubicación de Android getBearing () devuelve siempre 0
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.