0

我在 Android 中遇到地理围栏问题。我按照https://developer.android.com/training/location/geofencing.html的说明 建立地理围栏列表,我与 LocationClient 连接,它可以工作并返回连接,我可以获得最后一个位置.. .但是当我执行时:

mLocationClient.addGeofences(InfoApp.mGeofenceList, mTransitionPendingIntent, this);

我在 onAddGeofencesResult 中没有回复。我在 logcat 中没有看到任何消息。

我使用以下代码创建地理围栏:

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

首先我用 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.
         */
    }
}

我在 onConnected 中收到了响应,但是当我调用 addGeofences 时,不再收到任何响应。

@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;
    }

}

非常感谢!

4

2 回答 2

0

您是否一直等到接通addGeofences()后才打电话?LocationClient

于 2014-03-26T19:07:27.850 回答
-1

考虑以下 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;

addGeofences()等到连接上才打电话LocationClient

于 2014-07-01T10:50:15.510 回答