如何将 GoogleApi 客户端位置服务与 Google Api 一起使用?
How can I use GoogleApiClient location services with Google Api?
在一个教程中,我看到讲师使用 GoogleApiClient for 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 来翻译它(因为它已被弃用)。
谢谢!
您在视频中看到的是指 FusedLocationProviderApi 已弃用 API。
如果您想使用 Google 播放服务 API 来收听您需要使用新的 FusedLocationProviderClient, you can find the official sample implementation here
的用户位置
根据您的用例,考虑添加回退以防设备未安装 Play 服务(例如使用 Android 本机 API)
使用新入口点 class 的示例代码(您不需要直接使用 GoogleApi
class):
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
在一个教程中,我看到讲师使用 GoogleApiClient for 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 来翻译它(因为它已被弃用)。
谢谢!
您在视频中看到的是指 FusedLocationProviderApi 已弃用 API。
如果您想使用 Google 播放服务 API 来收听您需要使用新的 FusedLocationProviderClient, you can find the official sample implementation here
的用户位置根据您的用例,考虑添加回退以防设备未安装 Play 服务(例如使用 Android 本机 API)
使用新入口点 class 的示例代码(您不需要直接使用 GoogleApi
class):
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