手动更新Android模拟器位置不会触发FusedLocationProvider订阅

问题描述 投票:0回答:1

我现在正在测试一个应用程序,该应用程序依赖于位置来更新呈现给用户的内容,并且在 Android 模拟器中运行时我遇到了结果问题。如果我设置模拟器的位置,对 FusedLocationProvider 的最新位置 (

getLastLocation
) 的初始请求会给出正确的响应,并且实际上
requestLocationUpdates
也会触发至少 1 个位置。

但是,如果我随后手动更改模拟器的位置,则永远不会向

requestLocationUpdates
侦听器提供新位置。我知道设备正在注册更改,因为如果我在模拟器上打开谷歌地图,谷歌地图位置将更新到新位置;事实上,如果我随后切换回我的应用程序,
requestLocationUpdates
侦听器将 then 被新位置触发。

请注意,我使用的是

LocationRequest
以及
Priority.PRIORITY_HIGH_ACCURACY
setDurationMillis(15000)

任何人都可以告诉我这是否是 Android 模拟器的已知问题,或者我的代码中是否存在导致问题行为的错误?不幸的是,我目前没有现代的真实 Android 设备可供测试。

构建/模拟器/环境详细信息:

  • compileSdkVersion: 33
  • minSdkVersion: 20
  • targetSdkVersion: 33
  • Pixel 5 Android 13.0 Google APIs x86_64
  • Android Studio 2022.1.1 Patch 1
  • gradle-7.5
android android-studio android-emulator fusedlocationproviderapi
1个回答
0
投票

我对某些模拟设备也有同样的问题。尝试使用您的物理设备进行测试,并在其上安装 FakeGps。

© www.soinside.com 2019 - 2024. All rights reserved.