Geofence API para Android.
Crear lista de Geofences
Geofence geofence = new Geofence.Builder()
.setRequestId(lugar.getId())
.setCircularRegion(lugar.getLatitud(), lugar.getLongitud(), 200) // radio en metros
.setExpirationDuration(12 * 60 * 60 * 1000) // en horas
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER | Geofence.GEOFENCE_TRANSITION_EXIT)
.build();
geofencesLista.add(geofence);
Método acción del botón para adicionar Geofences
LocationServices.GeofencingApi.addGeofences(googleApiClient, obtenerSolicitudGeofencing(), obtenterPendingIntent()).setResultCallback(this);
Método acción del botón para eliminar Geofences
LocationServices.GeofencingApi.removeGeofences(googleApiClient, obtenterPendingIntent()).setResultCallback(this);
Realizar algo cuando sucedió una transición. En GeofenceTransicionService
.
// Lista de Geofences que sucedieron
List<Geofence> triggeringGeofences = geofencingEvent.getTriggeringGeofences();
// Obtenemos solo los ids de los Geofences
ArrayList triggeringGeofencesIdsList = new ArrayList();
for (Geofence geofence : triggeringGeofences) {
triggeringGeofencesIdsList.add(geofence.getRequestId());
}
String idsGeofencesString = TextUtils.join(", ", triggeringGeofencesIdsList);
// Armamos el mensaje que se mostrará
String geofenceTransitionDetails = obtenerNombreTransicion(tipoTransicion) + " a " + idsGeofencesString;
enviarNotificacion(geofenceTransitionDetails);
Log.i("MIAPP", geofenceTransitionDetails);