No ver Geofence Transitions en el tutorial de Google sobre Geofencing
Estoy intentando probar la funcionalidad de Geofence usando el ejemplo de Google: Crear y supervisar Geofences . He subido el código aquí .
El problema es que nunca recibo una notificación de entrada o salida. Tengo Wifi, 4G y GPS encendido. He intentado probar de las siguientes maneras:
- Android obtener la ubicación del mejor proveedor disponible
- Android Locationprovider tarda demasiado tiempo en llegar a estar temporalmente no disponible
- LocationRequest desplazamiento más pequeño y precisión
- Problemas con android.location.geocoder
- Android LocationClient.getLastLocation () devuelve la ubicación antigua e inexacta con una nueva marca de tiempo
- Incluso salir de mi casa por unos 50 pies y volver a pie – pero no las notificaciones. Puedo ver que los servicios del juego se conectan e incluso el "GeofenceUtils.ACTION_GEOFENCES_ADDED en MainActivity.java" consigue accionado, así que pienso que los Geofences se agregan correctamente.
- Habilitar las ubicaciones de simulacros en los ajustes y utilizar esta aplicación GPS falsa y cambiar la ubicación – a partir de las mismas coordenadas que el Geofence1 y, a continuación, establecer algo totalmente fuera (en otro estado) – pero todavía no recibe una notificación de salida.
¿Qué estoy haciendo mal? Alguien tuvo éxito en la ejecución de este ejemplo de Google: Crear y supervisar Geofences . He subido el código aquí para una fácil navegación.
Sólo estoy tratando de aprender Geofencing – detección de entrada y salida. MARCARÉ NINGUNA RESPUESTA COMO LA RESPUESTA CORRECTA QUE PUEDO UTILIZAR PARA OBTENER LA GEOFENCACIÓN TRABAJANDO EN MI DISPOSITIVO REAL
.
- Evitar que se detecte una ubicación incorrecta con el proveedor de la red
- CellID y LAC / PSC para celdas vecinas 3G en Android
- Cómo obtener Ciudad y País de un usuario en android sin GPS?
- ¿Cómo afecta la función Doze / Standby a las actualizaciones de ubicación?
- Cómo actualizar dinámicamente un elemento de superposición específico
- Uso de una ubicación simulada en la aplicación de navegación
- Compruebe si el usuario ha activado GPS después de
- Cómo obtener la ubicación GPS de Android
También tenía problemas con el código de ejemplo. Uno de los principales problemas que tuve fue declarar el ReceiveTransitionsIntentService. No es necesario agregar un BroadcastReceiver o solicitar actualizaciones de ubicación, pero debe cambiar su AndroidManifest para establecer el valor exportado como true:
<service android:name=".ReceiveTransitionsIntentService" android:exported="true" > </service>
Asegúrese de que la ruta de acceso al servicio también es correcta.
He simplificado el ejemplo de Google de forma significativa y puede encontrar el código y la explicación aquí . He eliminado el componente de interfaz de usuario y el almacenamiento persistente de Geofence, por lo que este ejemplo debería ser más fácil de seguir. ¡Espero que esto ayude!
Initally mi código estaba funcionando suavemente pero después de que yo también consiga este problema, intente por favor modificando la clase de geofenceRequester en la función de continueAddGeofences (). Básicamente está llamando al receptor a través del método de solicitud de ubicación
private void continueAddGeofences() { // Get a PendingIntent that Location Services issues when a geofence // transition occurs mGeofencePendingIntent = createRequestPendingIntent(); // Send a request to add the current geofences mLocationClient.addGeofences(mCurrentGeofences, mGeofencePendingIntent, this); //mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); try { LocationRequest locationrequest = LocationRequest.create(); locationrequest.setPriority(locationrequest.PRIORITY_HIGH_ACCURACY); locationrequest.setInterval(3000); mLocationClient.requestLocationUpdates(locationrequest, mGeofencePendingIntent); } catch (Exception e) { e.printStackTrace(); }
Yo también estaba teniendo el mismo problema con Geofence api. Al final, he utilizado addProximityAlert de LocationManager.It funcionó muy bien!
Como se ve, Google fue reformulada lógica de ubicación, esto es nuevo API. Parece que funciona como proveedor de ubicación "compartida" ( LocationRequest#setFastestInterval
puede proporcionarle coordenadas si cualquier otra aplicación lo solicita, o puede recibir coordenadas con el PRIORITY_NO_POWER flag
).
Geofence
API es como el método de helper
, no es necesario desarrollar una lógica similar por sí mismo (cálculo de radio, etc). Sin embargo, Geofence
no solicita coordenadas por sí mismo, sólo utiliza coordenadas recibidas (es decir, de otra aplicación). La denominación del método es autoexplicativa: LocationServices.GeofencingApi.addGeofences;
=> addGeofences
, no requestGeofences
.
Por lo tanto, debe solicitar coordenadas utilizando:
LocationServices.FusedLocationApi.requestLocationUpdates
- Flip animación en Android para una transacción Fragmento que establece un índice "z" o una cámara
- ¿Cómo subir el archivo a la caja de la url?