OnCapabilityChanged可以在手机上使用,但不能在可穿戴设备上使用

时间:2019-01-18 14:50:33

标签: android wear-os android-wear-data-api android-wear-2.0

在仔细按照这篇文章中的说明进行操作后:

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时, 但不涉及可穿戴设备。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

尝试了所有功能后,我选择使用标准的Service而不是WearableListenerService

我在CapabilityClient.OnCapabilityChangedListener上实现了Service

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)
}