You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wear OS模拟器使用FusedLocation服务获取模拟位置报错求助

Wear OS模拟器获取模拟位置的可行方案

错误原因

com.google.android.gms.common.api.ApiException: 10 本质是Wear OS模拟器默认的FusedLocationProvider不支持模拟位置注入,直接套用手机端的位置模拟方式对Wear模拟器无效。

解决方法

方法1:用ADB命令强制设置位置

直接通过ADB向Wear模拟器发送坐标,绕过FusedLocation的限制:

  1. 确认Wear模拟器已连接ADB,可通过执行adb devices查看设备列表
  2. 替换坐标和设备ID后执行命令:
    adb -s <wear_emulator_device_id> shell am startservice -a com.google.android.gms.location.FusedLocationProviderApi.SET_MOCK_LOCATION --ef latitude 39.9042 --ef longitude 116.4074
    
    其中<wear_emulator_device_id>是adb devices输出里的Wear模拟器ID
  3. 之后调用FusedLocation接口就能获取到设置的模拟位置

方法2:修改代码启用模拟位置模式

在应用中主动开启模拟位置,配合ADB命令使用:

  1. 在Manifest中添加权限:
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
    
  2. 代码中启用模拟模式:
    val locationRequest = LocationRequest.create().apply {
        priority = LocationRequest.PRIORITY_HIGH_ACCURACY
        interval = 1000
    }
    val settingsClient = LocationServices.getSettingsClient(context)
    val locationSettingsRequest = LocationSettingsRequest.Builder()
        .addLocationRequest(locationRequest)
        .setMockMode(true)
        .build()
    settingsClient.checkLocationSettings(locationSettingsRequest)
        .addOnSuccessListener {
            // 模拟位置已启用,可获取ADB设置的坐标
        }
    
  3. 执行方法1的ADB命令后,应用即可正常获取模拟位置

方法3:开启模拟器开发者选项的模拟位置功能

部分Wear OS模拟器版本支持该方式:

  1. 打开模拟器设置,进入「关于手表」,连续点击「版本号」7次启用开发者选项
  2. 返回设置主界面,进入「开发者选项」,找到「选择模拟位置应用」并选中你的应用
  3. 之后通过ADB命令即可向应用注入模拟位置

注意事项

  • 确保应用已申请ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限并获得用户授权
  • 建议使用Wear OS 3及以上版本的模拟器,旧版本可能存在兼容性问题

内容的提问来源于stack exchange,提问作者tufekoi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:52:06