Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

why always LocationSettingsStatusCodes.SUCCESS even GPS turn off

Tags:

android

gps

if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

    mGoogleApiClient = new GoogleApiClient
        .Builder(this)
        .enableAutoManage(this, 34992, this)
        .addApi(LocationServices.API)
        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)
        .build();
    mGoogleApiClient.connect();
    locationChecker(mGoogleApiClient, this);
    }

I want to see gps dialog when android gps turn off. but even gps turn off, status.getStatusCode() always success, I think it was error. why?

public static void locationChecker(GoogleApiClient mGoogleApiClient, final Activity activity) {

    LocationRequest locationRequest = LocationRequest.create();
    locationRequest.setPriority(LocationRequest.PRIORITY_NO_POWER);
    //locationRequest.setInterval(864 * 1000);
    //locationRequest.setFastestInterval(864 * 1000);
    LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
    .addLocationRequest(locationRequest);
    builder.setAlwaysShow(true);
    PendingResult<LocationSettingsResult> result =
    LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build());

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

    @Override
    public void onResult(LocationSettingsResult result) {
        final Status status = result.getStatus();
        final LocationSettingsStates state = result.getLocationSettingsStates();
            switch (status.getStatusCode()) {
                case LocationSettingsStatusCodes.SUCCESS:
                // All location settings are satisfied. The client can initialize location
                // requests here.
                break;
                case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
                // Location settings are not satisfied. But could be fixed by showing the user
                // a dialog.
                try {
                // Show the dialog by calling startResolutionForResult(),
                // and check the result in onActivityResult().
                status.startResolutionForResult(
                activity, 1000);
                } catch (IntentSender.SendIntentException e) {
                // Ignore the error.
                }
                break;
                case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
                // Location settings are not satisfied. However, we have no way to fix the
                // settings so we won't show the dialog.
                break;
                }
        }
    });
}
like image 504
Hyunruel Cho Avatar asked Nov 17 '16 13:11

Hyunruel Cho


1 Answers

change the priority and it will check for both GPS and Provider data change it to locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

like image 143
Amir Avatar answered Nov 16 '22 03:11

Amir