如何将 GoogleApiClient 位置服务与 Google Api 一起使用?
Posted
技术标签:
【中文标题】如何将 GoogleApiClient 位置服务与 Google Api 一起使用?【英文标题】:How can I use GoogleApiClient location services with Google Api? 【发布时间】:2021-08-22 00:42:46 【问题描述】:在一个教程中,我正在观看讲师将 GoogleApiClient 用于 LocationServices,就像这样。
我知道 GoogleApiClient 已被弃用,我们应该改用 GoogleApi,它包含本文中的所有 Google Api:https://android-developers.googleblog.com/2017/11/moving-past-googleapiclient_21.html
但是,本文只讨论了 GoogleSignInClient,根本没有讨论位置服务。
我的问题如下:
-
当我甚至尝试使用 GoogleSignInClient 时,我找不到任何东西。我唯一的依赖是:
implementation 'com.google.android.gms:play-services-location:18.0.0'
我的意思是当我输入:private GoogleSignInClient googleSignInClient
...什么都没有出现。
-
我找不到任何用于定位服务的 GoogleApi(正如预期的那样,因为甚至 GoogleSignInClient 都没有出现)
这里可能出了什么问题?
更新:
所以他的代码看起来像这样:
private GoogleApiClient googleApiClient;
private FusedLocationProviderClient fusedLocationProviderClient;
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(MainActivity.this);
googleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addOnConnectionFailedListener(this)
.addConnectionCallbacks(this)
.build();
..但我需要使用 GoogleApi 而不是 GoogleApiClient 来翻译它(因为它已被弃用)。
谢谢!
【问题讨论】:
【参考方案1】:您在视频中看到的内容指的是 FusedLocationProviderApi 已弃用的 API。
如果要使用Google Play Service API监听用户位置需要使用新的FusedLocationProviderClient,可以找到官方的示例实现here
根据您的用例,考虑添加一个备用方案,以防设备未安装 Play 服务(例如使用 Android 原生 API)
使用新入口点类的示例代码(您不需要直接使用GoogleApi
类):
fun getLastLocationIfApiAvailable(context: Context): Task<Location>?
val client = LocationServices.getFusedLocationProviderClient(context)
return GoogleApiAvailability.getInstance()
.checkApiAvailability(client)
.onSuccessTask _ -> client.lastLocation
.addOnFailureListener _ -> Log.d(TAG, "Location unavailable.")
如果您需要处理GoogleApiAvailability
的所有可能输出,请检查此SO answer
【讨论】:
嗨,谢谢。但是,在视频中他使用的是 FusedLocationProviderClient,而不是 FusedLocationProviderApi。 'client' 指的是实例变量 GoogleApiClient 客户端 @CodingChap 我添加了一个代码示例。不需要直接使用GoogleApi
类以上是关于如何将 GoogleApiClient 位置服务与 Google Api 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
Android使用GoogleApiClient获取用户位置纬度和经度[重复]
如何将 Googleapiclient 传递给 Google Play 游戏的另一个所有活动
GoogleApiClient onConnectionSuspended ,我应该再次调用 mGoogleApiClient.connect() 吗?