Android:关闭位置功能后,Google融合位置不起作用

比宁·杰克

getLastLocation()在我的6.0 Nexus 7平板电脑上手机位置关闭时,如果返回NULL,则返回NULL,但在另一台设备上没有GPS的情况下也可以使用。为什么会这样,并且有什么解决办法?我想保持GPS关闭,仅使用网络获取位置。

以下是我用来获取位置的课程:

public class GPSCenter {
public static GoogleApiClient mGoogleApiClient;
public static Location mLastLocation;
private static Context mContext;

static GoogleApiClient.ConnectionCallbacks ccb = new GoogleApiClient.ConnectionCallbacks() {

    @Override
    public void onConnectionSuspended(int arg0) {
    }

    @Override
    public void onConnected(Bundle arg0) {

        if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            return;
        }

        LocationRequest mLocationRequest = LocationRequest.create();
        mLocationRequest.setPriority(LocationRequest.PRIORITY_NO_POWER);

        mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
    }
};
static GoogleApiClient.OnConnectionFailedListener odfl = new GoogleApiClient.OnConnectionFailedListener() {
    @Override
    public void onConnectionFailed(ConnectionResult arg0) {
    }
};

public static synchronized void buildGoogleApiClient(Context c) {
    try {

        mContext = c;
        mGoogleApiClient = new GoogleApiClient.Builder(c)
                .addConnectionCallbacks(ccb)
                .addOnConnectionFailedListener(odfl)
                .addApi(LocationServices.API)
                .build();

        mGoogleApiClient.connect();
    } catch (Exception ex) {
        Log.i("location", "error " + ex.toString());
        ex.printStackTrace();
    }
}

public static double getLatitude(Context c) {
    try {
        return mLastLocation.getLatitude();
    } catch (Exception ex) {
        return 0.0;
    }
}

public static double getLongitude(Context c) {
    try {
        return mLastLocation.getLongitude();
    } catch (Exception ex) {
        return 0.0;
    }
}
}
比宁·杰克

这不是由于GPS引起的,而是Location Settings尚未在设备中启用,而是在设备的“设置”>“ Google”>“服务”>“位置”或“设置”>“隐私和安全性”>“位置”下,或者仅在“设置”>“位置”下。我很困惑,因为在某些设备中,下拉状态栏显示GPS启用按钮,而某些显示位置启用按钮。有一种方法可以自动启用“位置设置”(无需将用户导航到设备设置),它解决了我的问题,希望对您有所帮助:

连接GoogleApiClient后,请执行以下位置设置检查:

public static GoogleApiClient mGoogleApiClient;
private static PendingResult<LocationSettingsResult> result;
private static LocationSettingsRequest.Builder builder;
public static Location mLastLocation;
public static boolean isLocationON = false;

public static synchronized void buildGoogleApiClient(Activity a, Context c) {

    try {

        mActivity = a;
        mContext = c;
        mGoogleApiClient = new GoogleApiClient.Builder(c)
                .addConnectionCallbacks(ccb)
                .addOnConnectionFailedListener(odfl)
                .addApi(LocationServices.API)
                .build();

        builder = new LocationSettingsRequest.Builder()
                .addLocationRequest(locationRequest);
        builder.setAlwaysShow(true);

        mGoogleApiClient.connect();

    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

private static GoogleApiClient.ConnectionCallbacks ccb = new GoogleApiClient.ConnectionCallbacks() {

    @Override
    public void onConnected(Bundle arg0) {
        checkLocationSettings();
    }

    @Override
    public void onConnectionSuspended(int arg0) {
    }
};

private static void checkLocationSettings() {

    result = LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build());

    result.setResultCallback(new ResultCallback<LocationSettingsResult>() {

        @Override
        public void onResult(@NonNull LocationSettingsResult locationSettingsResult) {
            final Status status = locationSettingsResult.getStatus();
            switch (status.getStatusCode()) {
                case LocationSettingsStatusCodes.SUCCESS:

                    isLocationON = true;

                    if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                        return;
                    }
                    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);

                    if (mLocationSettingsListener != null) {
                        mLocationSettingsListener.onLocationON();
                    }

                    break;

                case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:

                    isLocationON = false;

                    try {
                        // This line will check the result and prompt a dialog if the device location settings is not enabled
                        status.startResolutionForResult(mActivity, REQUEST_CHECK_SETTINGS);

                    } catch (IntentSender.SendIntentException e) {
                    }
                    break;

                case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
                    isLocationON = false;
                    // Location settings are unavailable so not possible to show any dialog now
                    if (mLocationSettingsListener != null) {
                        mLocationSettingsListener.onLocationError();
                    }
                    break;
            }
        }
    });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

融合的位置提供程序setsmallestDisplacement在Android中不起作用

来自分类Dev

融合的位置Api setSmallestDisplacement被忽略/不起作用

来自分类Dev

融合位置问题 - 地理定位不起作用

来自分类Dev

更改位置后按钮不起作用

来自分类Dev

Android Google Map获取正确的位置不起作用

来自分类Dev

检测模拟位置不起作用(Android)

来自分类Dev

拒绝位置后角度组件不起作用

来自分类Dev

按钮的位置不起作用

来自分类Dev

背景位置不起作用

来自分类Dev

Android:我的位置按钮在Android 6.0上不起作用

来自分类Dev

Android:我的位置按钮在Android 6.0上不起作用

来自分类Dev

Android滚动到Recylerview中的位置不起作用

来自分类Dev

模拟位置在Android Pie及更高版本上不起作用

来自分类Dev

将位置模式切换为GPS并返回后,Google Play服务活动识别不起作用

来自分类Dev

ios定期获取我的位置,并设置按钮获取我的位置-Google Map不起作用

来自分类Dev

滚动后关闭按钮不起作用

来自分类Dev

位置:粘性在Firefox中不起作用

来自分类Dev

更改UIView的位置不起作用

来自分类Dev

离子变化位置将不起作用

来自分类Dev

位置属性的CSS动画不起作用

来自分类Dev

在后台的位置不起作用

来自分类Dev

JTextArea的位置,setBounds不起作用?

来自分类Dev

JButton设置X位置不起作用

来自分类Dev

SKAudioNode位置音频似乎不起作用

来自分类Dev

更改Bootstrap Datepicker位置不起作用

来自分类Dev

标头位置不起作用

来自分类Dev

phonegap地理位置不起作用

来自分类Dev

CSS Sprite背景位置不起作用

来自分类Dev

位置属性的CSS动画不起作用