【问题标题】:How can I use GoogleApiClient location services with Google Api?如何将 GoogleApiClient 位置服务与 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,根本没有讨论位置服务。

我的问题如下:

  1. 当我甚至尝试使用 GoogleSignInClient 时,我找不到任何东西。我唯一的依赖是:implementation 'com.google.android.gms:play-services-location:18.0.0'

我的意思是当我输入:private GoogleSignInClient googleSignInClient...什么都没有出现。

  1. 我找不到任何用于定位服务的 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 来翻译它(因为它已被弃用)。

谢谢!

【问题讨论】:

    标签: android google-maps google-api location


    【解决方案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
    猜你喜欢
    • 2018-08-10
    • 1970-01-01
    • 2017-03-29
    • 2021-10-19
    • 2020-06-26
    • 2017-02-05
    • 2020-06-09
    • 1970-01-01
    • 2019-03-05
    相关资源
    最近更新 更多