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

WearableListenerService的onCreate与onDataChanged未触发问题排查

问题:DataClient手机向手表传输数据,WearableListenerService未触发

我尝试通过DataClient从手机向手表传输数据,已排查以下配置:相同包名、两端无build flavors、已在wear模块清单添加服务、相同path prefix、相同签名配置。参考官方DataLayer示例项目并复制部分代码,示例在Pixel 6 Pro与Pixel Watch硬件上运行正常,自身项目的发送数据部分表现与示例一致,但手表端的WearableListenerService的onCreate日志未打印,onDataChanged也未触发,怀疑清单配置存在问题。

手机端发送数据代码

class WearDataManager(val context: Context) {

private val dataClient by lazy { Wearable.getDataClient(context) }

companion object {
    private const val CLIENTS_PATH = "/clients"
    private const val CLIENT_LIST_KEY = "clientlist"
}

fun sendClientList(clientList: MutableList<String>) {
    GlobalScope.launch {
        try {
            val request = PutDataMapRequest.create(CLIENTS_PATH).apply {
                dataMap.putStringArray(CLIENT_LIST_KEY, arrayOf("clientList, test"))
            }
                .asPutDataRequest()
                .setUrgent()

            val result = dataClient.putDataItem(request).await()

            Log.d("TAG", "DataItem saved: $result")
        } catch (cancellationException: CancellationException) {
            throw cancellationException
        } catch (exception: Exception) {
            Log.d("TAG", "Saving DataItem failed: $exception")
        }
    }
}
}

手表端接收数据代码

class WearableListenerService: WearableListenerService() {

companion object {
    const val CLIENTS_PATH = "/clients"
}

override fun onCreate() {
    super.onCreate()
    Log.d("testing", "STARTED SERVICE")
}

override fun onDataChanged(dataEvents: DataEventBuffer) {
    super.onDataChanged(dataEvents)

    Log.d("testing", "RECEIVED $dataEvents")
   
}
}

手表端清单中的服务配置

<service android:name=".wear.communication.WearableListenerService"
    android:exported="true">
    <intent-filter>
        <action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
        <data
            android:host="*"
            android:pathPrefix="/clients"
            android:scheme="wear" />
    </intent-filter>
</service>

可能遗漏的配置排查点

  • 验证服务类路径正确性:清单中android:name的相对路径.wear.communication.WearableListenerService必须和实际类的包名完全匹配。如果服务类完整包名和相对路径对应的结构不符,必须填写完整类名。
  • 确认Play Services依赖:wear模块必须引入正确版本的Wearable依赖,且和手机端版本一致,示例依赖配置:
    implementation "com.google.android.gms:play-services-wearable:21.1.0"
    
  • 检查Google Services插件配置:确保wear模块的build.gradle中应用了com.google.gms.google-services插件,且根目录的google-services.json文件在两端应用中配置正确。
  • 确认服务继承类:确保WearableListenerService继承的是com.google.android.gms.wearable.WearableListenerService,避免引入其他同名类导致冲突。
  • 排查配对与应用版本:确认手表和手机已正确配对,且两端安装的是同一版本、同一签名的应用。
  • 测试服务启动:可以在手表端应用启动时手动调用startService(Intent(context, WearableListenerService::class.java)),验证onCreate日志是否打印,排除服务未被系统初始化的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:15:36