1

我注意到可以(至少)以两种不同的方式请求位置更新。

  1. 使用GoogleAPIClient

    // Callback for when the GoogleAPIClient is connected
    @Override
    public void onConnected(Bundle connectionHint) {
        LocationServices.FusedLocationApi.requestLocationUpdates(
            mGoogleApiClient, mLocationRequest, this);
    }
    

 

  1. 使用LocationManager

    LocationManager locationManager = (LocationManager) getActivity().
        getSystemService(Context.LOCATION_SERVICE);      
    
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
        0, 0, locationListener);
    

 

谷歌似乎1在他们的教程“接收位置更新”中推广了方法。我不清楚方法的好处1是什么,因为方法2对我来说同样有效(我在应用程序的两个不同位置使用这两种方法)。

4

2 回答 2

2

好消息,从 Google Play Services 11.0 版本开始,无需连接 GoogleApiClient

https://android-developers.googleblog.com/2017/06/reduce-friction-with-new-location-apis.html

您不必处理回调和状态(已连接、正在连接),只需请求/删除位置更新,与 LocationManager 类似。

于 2017-06-20T10:31:05.540 回答
1

获取位置更新的新方法是在 android中使用Fused Location Provider 。Fused location provider API 最好的一点是您无需担心位置更新,它始终为您提供最新和准确的位置,并在间隔或位置更改后更新位置。关于 Fused 位置提供程序 API 的另一件事是您无需考虑最佳位置提供程序,因为它会自动选择最适合您的 android 设备硬件的位置提供程序。

这是 I/O 2013 中的YouTube 视频,可能会提供更多详细信息。

于 2016-05-28T13:20:59.833 回答