仔细按照这篇文章中的说明操作后:
How to detect when android wear device gets disconnected?我终于设法让我的手机使用 onCapabilityChanged
检测可穿戴设备何时连接。
我在可穿戴设备方面遵循了完全相同的步骤,我试图检测手机何时连接到可穿戴设备,但从未触发 onCapabilityChanged
。
wear.xml(手机端)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="android_wear_capabilities">
<item>track_phone</item>
</string-array>
</resources>
在 AndroidManifest(可穿戴)中
<service android:name=".BackgroundService.WearableService"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="com.google.android.gms.wearable.CAPABILITY_CHANGED" />
<data android:scheme="wear" android:host="*"/>
</intent-filter>
</service>
在 WearableService 中(在可穿戴设备上)
override fun onCapabilityChanged(p0: CapabilityInfo?) {
super.onCapabilityChanged(p0)
Log.i("WearableService", "Capability changed: {${p0?.nodes?.size ?: "null"}")
}
我确定该服务已启动,因为我有另一个进程正在运行
我在手机端做同样的事情。当我断开/连接蓝牙 onCapabilityChanged
在手机服务中被正确调用时,
但不适用于可穿戴设备的服务。
有什么想法吗?
最佳答案
在尝试一切让它工作之后,我选择使用标准的 Service
而不是 WearableListenerService
。
我在 Service
上实现了 CapabilityClient.OnCapabilityChangedListener
:
override fun onCapabilityChanged(p0: CapabilityInfo) {
Log.i("WearService", "Wearable Capability changed: {${p0?.nodes?.size ?: "null"}")
}
并注册监听器:
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
Wearable.getCapabilityClient(this).addListener(this, CAPABILITY)
return super.onStartCommand(intent, flags, startId)
}
关于android - OnCapabilityChanged 在手机上工作但不在可穿戴设备上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54256345/