如何在位置可用时获得回调?

时间:2015-01-15 12:11:54

标签: android gps google-play-services google-api-client android-geofence

我能够成功注册地理围栏,但仅在启用GPS时才能注册。当GPS被禁用时,我得到错误GEOFENCE_NOT_AVAILABLE(1000)。因为“刚才”注册它并不重要。我不想打扰用户(首先启用GPS)弹出窗口。

当用户最终启用GPS时,有没有办法注册回叫以通知?或者当位置可用于重复地理围栏注册时,如何执行代码的任何其他方式。

注意:我需要GoogleApiClient(Google Play服务> 6.5)的解决方案,但LocationClient(< 6.5)上存在同样的问题。

感谢。

mGoogleApiClient = new GoogleApiClient.Builder(mContext)
                .addApi(LocationServices.API)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
mGoogleApiClient.connect();

...

@Override
public void onConnected(Bundle bundle) {
        PendingResult<Status> result = LocationServices.GeofencingApi.addGeofences(mGoogleApiClient, geofencesToAdd, mGeofencePendingIntent);

        result.setResultCallback(new ResultCallback<Status>() {
            @Override
            public void onResult(Status status) {
                if (status.isSuccess()) {
                    // Successfully registered
                } else if (status.hasResolution()) {
                    // Google has resolution
                } else {
                    // Error
                    // status.getStatusCode() == LocationStatusCodes.GEOFENCE_NOT_AVAILABLE; !!
                }
            }
        });
    }

0 个答案:

没有答案