Android LocationServices.FusedLocationApi deprecated

后端 未结 8 778
没有蜡笔的小新
没有蜡笔的小新 2020-12-02 05:39

I couldn\'t figure out why LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest, this); \"FusedLocationApi\" is cross out

8条回答
  •  北荒
    北荒 (楼主)
    2020-12-02 05:49

    Yes, it has been deprecated. FusedLocationProviderClient is easier than FusedLocationProviderApi, because FusedLocationProviderApiusually requires GoogleApiClient too, which we need to connect to Google Play Service manually. If you previously used GoogleApiClient, now GoogleApiClientis no longer needed (more here).

    To get last location, can use this function:

    import com.google.android.gms.location.FusedLocationProviderClient;
    import com.google.android.gms.tasks.OnCompleteListener;
    
    public class MainActivity extends AppCompatActivity{
    //before public class MainActivity extends AppCompatActivity implements LocationListener,...,...
    
    
    private static final String TAG = "MainActivity";
    public static final int MY_PERMISSIONS_REQUEST_FINE_LOCATION = 101;
    private FusedLocationProviderClient mFusedLocationClient;
    private Location mGetedLocation;
    
    private double currentLat, currentLng;
    
    private void getLastLocation() {
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                requestPermissions(new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_FINE_LOCATION);
            }
            return;
        }
        mFusedLocationClient.getLastLocation()
                .addOnCompleteListener(this, new OnCompleteListener() {
                    @Override
                    public void onComplete(@NonNull Task task) {
                        if (task.isSuccessful() && task.getResult() != null) {
                            mGetedLocation = task.getResult();
                            currentLat = mGetedLocation.getLatitude();
                            currentLng = mGetedLocation.getLongitude();
                            //updateUI();
                        }else{
                            Log.e(TAG, "no location detected");
                            Log.w(TAG, "getLastLocation:exception", task.getException());
                        }
                    }
                });
    
    }
    

提交回复
热议问题