我现在正在测试一个应用程序,该应用程序依赖于位置来更新呈现给用户的内容,并且在 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
我对某些模拟设备也有同样的问题。尝试使用您的物理设备进行测试,并在其上安装 FakeGps。