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:
- La devolución de llamada OnLocationChanged nunca se llama
- ¿Cuál es el significado de android.location.LocationManager.PASSIVE_PROVIDER?
- GeoTagging Photo's después de usar Camera Intent
- Forzar la alerta de proximidad para usar Proveedor de red
- Android LocationManager.isProviderEnabled () siempre devuelve false
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>
- OnPause para detener LocationManager
- Anular la suscripción de un LocationListener desde LocationManager
- LocationManager.requestLocationUpdates agregar o actualizar?
- Android GPS Localización Velocidad no fiable
- Permiso de comprobación de Android para LocationManager
- obtener geolocalización después de 20 segundos
- ¿por qué location.getSpeed () siempre devuelve 0 mientras usa NETWORK_PROVIDER en android?
- Presentación GPS en interiores
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.
- Depuración de la aplicación de Android después del lanzamiento
- Construir una caja con textura en un lado en libgdx – rendimiento