首页 > 解决方案 > 无法使用适用于 Android 的 Google Fit 跟踪位置 (TYPE_LOCATION_SAMPLE)

问题描述

我正在尝试使用 Android 上的 Google Fit 记录客户端跟踪位置,但我不确定是否可以使用 TYPE_LOCATION_SAMPLE。记录步骤 (TYPE_STEP_COUNT_DELTA) 和活动段 (TYPE_ACTIVITY_SEGMENT) 工作正常,但订阅 TYPE_LOCATION_SAMPLE 似乎没有任何作用。

我可以成功订阅数据类型 TYPE_LOCATION_SAMPLE 并且我有一个数据源,但是如果我向历史客户端查询数据,那里什么都没有。同样,这适用于步骤和活动 - 只是不适用于位置。

我已确保授予位置权限。我已经四处移动以改变位置。我也试过了GoogleSignIn.getAccountForExtension,还是不行。是不是不可能像这样记录位置,还是我只是走错了路?

我正在订阅这样的位置数据:

Fitness
    .getRecordingClient(activity, GoogleSignIn.getLastSignedInAccount(activity.applicationContext)!!)
    .subscribe(DataType.TYPE_LOCATION_SAMPLE)

我要求这样的历史数据:

val readRequest = DataReadRequest.Builder()
    .read(DataType.TYPE_LOCATION_SAMPLE)
    .setTimeRange(from.timeInMillis, to.timeInMillis, TimeUnit.MILLISECONDS)
    .build()

Fitness
    .getHistoryClient(activity, GoogleSignIn.getLastSignedInAccount(activity.applicationContext)!!)
    .readData(readRequest)
    .addOnSuccessListener { dataReadResponse ->
         //returns 1 empty dataset
    }

更新:我尝试手动插入位置,HistoryClient.insertData只是为了看看我是否能以这种方式工作。查询历史时我仍然无法获得任何数据,但距离增量已根据我添加的位置发生变化,因此发生了一些事情。但我仍然无法从历史中获得实际位置。

标签: androidgeolocationgoogle-fit

解决方案


您只能读取您的应用写入的位置数据。

这在公共数据类型文档的异常部分中进行了描述。


推荐阅读