Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LocationServices.SettingsApi deprecated

My code is:

if (mGoogleApiClient == null && checkGooglePlayService()) {
        Log.d(Utils.TAG_DEV + TAG, "Building GoogleApiClient");
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .build();
        mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
        mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
        mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
        builder.addLocationRequest(mLocationRequest);
        builder.setAlwaysShow(true);
        mLocationSettingsRequest = builder.build();
        PendingResult<LocationSettingsResult> result =
                LocationServices.SettingsApi.checkLocationSettings(
                        mGoogleApiClient,
                        mLocationSettingsRequest
                );
        result.setResultCallback(this);

    }

but unfortunately the LocationServices.SettingsApi is deprecated. How can I replace deprecated code with the new one?

I found reading docs that the solution can be to use SettingsClient but couldn't figure how to do it.

Any ideea what to do to can update my code?

like image 273
gogoloi Avatar asked Apr 04 '18 09:04

gogoloi


1 Answers

LocationServices.SettingsApi deprecated

Yes, LocationServices.SettingsApi is deprecated

How can I replace deprecated code with the new one?

You need to use GoogleApi-based API SettingsClient

FROM DOCS

SettingsClient

public class SettingsClient extends GoogleApi<Api.ApiOptions.NoOptions>

The main entry point for interacting with the location settings-enabler APIs.

This API makes it easy for an app to ensure that the device's system settings are properly configured for the app's location needs.

When making a request to location services, the device's system settings may be in a state that prevents an app from obtaining the location data that it needs. For example, GPS or Wi-Fi scanning may be switched off. This intent makes it easy to:

  • Determine if the relevant system settings are enabled on the device to carry out the desired location request.

  • Optionally, invoke a dialog that allows the user to enable the necessary location settings with a single tap.

I found reading docs that the solution can be to use SettingsClient but couldn't figure how to do it.

Follow this steps

To use this API, first create a LocationSettingsRequest.Builder and add all of the LocationRequests that the app will be using:

LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
     .addLocationRequest(mLocationRequestHighAccuracy)
     .addLocationRequest(mLocationRequestBalancedPowerAccuracy)

Then check whether current location settings are satisfied:

Task<LocationSettingsResponse> result =
         LocationServices.getSettingsClient(this).checkLocationSettings(builder.build());
like image 83
AskNilesh Avatar answered Oct 04 '22 00:10

AskNilesh