Android 位置请求 PRIORITY_HIGH_ACCURACY 无效

标签 android request location setting

我的 Android 应用需要高精度位置跟踪。在应用启动时,如果未选择高精度,它会以编程方式读取位置设置并显示一个屏幕。

我将 Google 的官方示例 ( https://developers.google.com/android/reference/com/google/android/gms/location/SettingsClient ) 改编为 Kotlin。

这在华为手机上按预期工作,但在三星 S7 和 S8 上失败:如果用户选择了功率平衡,则会出现一个对话框,并且位置跟踪设置为高精度。但是,如果之前选择了 GPS only,则不会抛出 ApiException 并且设置保持不变。

val locationRequest = LocationRequest.create()
locationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY

val builder = LocationSettingsRequest.Builder().addLocationRequest(locationRequest)
val result = LocationServices.getSettingsClient(this).checkLocationSettings(builder.build())

result.addOnCompleteListener(OnCompleteListener {
    try {
        it.getResult(ApiException::class.java)
        // on Samsung + GPS only setting, execution passes here, no ApiException thrown
    } catch(e: ApiException) {
        if(e is ResolvableApiException) {
            // ...show resolution dialog...
        }
    }
}

任何提示将不胜感激,谢谢:)

最佳答案

我在 s8 上遇到了同样的问题,所以我检查了设备,如果是 s8,我用 PRIORITY_BALANCED_POWER_ACCURACY 发出请求,它可以工作,但有一些延迟。

关于Android 位置请求 PRIORITY_HIGH_ACCURACY 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49150328/

相关文章:

android - 我的 Android 应用程序未在三星 Galaxy S6 的 Playstore 中显示

django - 如何在 POSTMAN 中使用 raw 上传图片?

ruby-on-rails - 如何使用 HTTParty on Rails 发出带有 XML 数据正文的 POST 请求

javascript - 是否可以更改 h :outputStylesheet and h:outputScript 使用的/resources 文件夹名称

c# - 可执行位置不同

android - 你好 ListView 教程问题

java - 选择月份以及该月所有天数的总和

java - Http URL 连接无法处理重定向

android - 使用 Retrofit 2.0 POST 方法获取请求正文内容

java - 在 Java 中查找网格上的位置和移动方向