Android Studio 2021.2.1模拟器模拟GPS坐标不生效如何解决
Android模拟器自定义GPS坐标不生效的额外配置方案
你获取到的37.4218708, -122.0841223是Android模拟器内置的默认测试坐标(位于美国山景城谷歌总部),仅通过扩展控件面板设置点位不生效时,按以下步骤完成额外配置即可让自定义模拟坐标正常生效:
- 检查模拟器系统定位设置:打开模拟器自带的系统「设置」-「位置信息」,确认位置总开关处于开启状态,定位模式选择高精度或者仅设备GPS,不要选择仅网络定位——模拟器网络定位源默认固定返回内置默认测试坐标,不会读取你在扩展面板设置的自定义点位。
- 清除定位缓存重置配置:打开模拟器扩展控件的位置面板,先点击「重置为默认位置」,等待2秒后再重新搜索选中你要设置的目标点位,点击「设置位置」后不要立刻关闭面板,停留3-5秒等待定位数据同步完成。如果是带Google Play服务的模拟器镜像,额外去系统「设置」-「应用」-「所有应用」找到Google Play服务,清除它的存储缓存后重启模拟器,避免服务缓存旧的默认坐标。
- 校验应用侧定位权限配置:
- 确认项目的
AndroidManifest.xml中已经声明精确定位相关权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />- 应用运行时要先动态申请定位权限,权限申请通过后不要立刻调用定位接口,延迟1-2秒再发起定位请求。部分Android 12+版本的模拟器在权限刚授予时,还没完成新模拟位置的加载,会直接返回默认缓存坐标。
- 确认项目的
- 通过adb强制注入坐标验证:如果以上操作都无效,可以通过adb命令直接向模拟器注入GPS坐标,该操作会直接覆盖所有定位缓存,执行后立刻生效:
注意命令参数顺序是先经度后纬度,不要写反顺序。adb emu geo fix <目标点经度> <目标点纬度>
避坑提示:设置模拟位置时不要开启系统代理/VPN,部分代理规则会拦截模拟器和宿主机之间的位置同步请求,导致你设置的自定义点位无法写入模拟器定位服务,始终返回默认坐标。
相关操作参考截图:
内容的提问来源于stack exchange,提问作者Vincenzo
相关产品推荐
相关产品推荐

