OnCapabilityChanged работает на телефоне, но не на носимых - PullRequest
0 голосов
/ 18 января 2019

После тщательного следования инструкциям в этом посте:

Как определить, когда устройство износа Android отключается? Мне наконец-то удалось заставить мой телефон определять, когда носимое устройство подключено с помощью 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"}")
}

Я уверен, что служба запущена, поскольку у меня запущен другой процесс

Я делаю то же самое на стороне телефона. Когда я отключаюсь / подключаюсь, Bluetooth onCapabilityChanged правильно вызывается в сервисе телефона, но не на службе у носимых.

Есть идеи?

1 Ответ

0 голосов
/ 15 февраля 2019

Попробовав все, чтобы заставить его работать, я решил использовать стандартный 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)
}
...