0

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!

user1852854
  • 199
  • 1
  • 1
  • 11

2 Answers2

0

Have you waited to call addGeofences() until the LocationClient is connected?

kmdupr33
  • 620
  • 6
  • 14
-1

Consider the following ADD case:

    // 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;

waited to call addGeofences() until the LocationClient is connected?

bbnc
  • 1