为啥使用 GoogleAPIClient 请求位置更新?

Posted

技术标签:

【中文标题】为啥使用 GoogleAPIClient 请求位置更新?【英文标题】:Why use GoogleAPIClient to request location updates?为什么使用 GoogleAPIClient 请求位置更新? 【发布时间】:2016-09-26 17:42:31 【问题描述】:

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

    使用GoogleAPIClient

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

 

    使用LocationManager

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

 

Google 似乎在他们的教程"Receiving Location Updates" 中推广了方法1。我不清楚1 方法的好处是什么,因为2 方法对我来说同样有效(我在应用程序的两个不同位置使用这两种方法)。

【问题讨论】:

也检查这个答案link 【参考方案1】:

好消息,来自 Google Play Services 11.0 版,无需连接 GoogleApiClient

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于为啥使用 GoogleAPIClient 请求位置更新?的主要内容,如果未能解决你的问题,请参考以下文章

不知道为啥应用程序在 GoogleApiClient.connect() 上被强制关闭

如何将 GoogleApiClient 位置服务与 Google Api 一起使用?

使用 GoogleApiClient 的位置后台服务

GoogleApiClient onConnectionSuspended ,我应该再次调用 mGoogleApiClient.connect() 吗?

Android使用GoogleApiClient获取用户位置纬度和经度[重复]

使用不同的位置请求模式检索位置时出现问题