I have a problem with geofencing in Android. I follow the instructions of https://developer.android.com/training/location/geofencing.html I build the list of geofence, I connect with LocationClient and it works and it returns the connection, I can get the last position... But when I execute:
mLocationClient.addGeofences(InfoApp.mGeofenceList, mTransitionPendingIntent, this);
I don't have response in onAddGeofencesResult. I don't see any message in logcat.
I create the geofence with this code:
mUIGeofence1 = new SimpleGeofence(
infoEstablecimiento.getString("_id"),
infoEstablecimiento.getDouble("latitud"),
infoEstablecimiento.getDouble("longitud"),
(float) infoEstablecimiento.getDouble("radio"),
Geofence.NEVER_EXPIRE,
// This geofence records only entry transitions with a delay
Geofence.GEOFENCE_TRANSITION_DWELL, loiteringDelay);
First I call this function with REQUEST_TYPE.ADD:
public static void conexionGeofence(
REQUEST_TYPE mRequestType,
Context contexto,
SlidingFragmentActivity actividad,
GooglePlayServicesClient.ConnectionCallbacks connectionAct,
GooglePlayServicesClient.OnConnectionFailedListener connectionListener) {
// Start a request to add geofences
/*
* Test for Google Play services after setting the request type. If
* Google Play services isn't present, the proper request can be
* restarted.
*/
if (!servicesConnected(actividad)) {
return;
}
/*
* Create a new location client object. Since the current activity class
* implements ConnectionCallbacks and OnConnectionFailedListener, pass
* the current activity object as the listener for both parameters
*/
InfoApp.mLocationClient = new LocationClient(contexto, connectionAct,
connectionListener);
// If a request is not already underway
if (!InfoApp.mInProgress) {
InfoApp.mRequestType = mRequestType;
// Indicate that a request is underway
InfoApp.mInProgress = true;
// Request a connection from the client to Location Services
InfoApp.mLocationClient.connect();
} else {
/*
* A request is already underway. You can handle this situation by
* disconnecting the client, re-setting the flag, and then re-trying
* the request.
*/
}
}
I received response in onConnected, but when I call addGeofences don't receive any reponse more.
@Override
public void onConnected(Bundle connectionHint) {
/*
* Choose what to do based on the request type set in removeGeofences
*/
switch (InfoApp.mRequestType) {
case ADD:
// Get the PendingIntent for the request
InfoApp.mTransitionPendingIntent = GeofenceUtils
.getTransitionPendingIntent();
Location loc = InfoApp.mLocationClient.getLastLocation();
// Send a request to add the current geofences
InfoApp.mLocationClient.addGeofences(InfoApp.mGeofenceList,
InfoApp.mTransitionPendingIntent, this);
break;
case REMOVE_LIST:
InfoApp.mLocationClient.removeGeofences(InfoApp.mGeofencesToRemove,
this);
break;
default:
break;
}
}
Thank you very much!