我有一个应用程序,可以使用WearableListenerService
和onPeerConnected
/ onPeerDisconnected
来检测Android服装设备何时断开连接。
似乎这些已被弃用,所以我现在正在尝试使用onCapabilityChanged
,但我无法调用此函数。我在我的清单中使用它来提供服务。有关这些功能的文档不是很好。
<intent-filter>
<action android:name="com.google.android.gms.wearable.CAPABILITY_CHANGED" />
</intent-filter>
答案 0 :(得分:3)
所以我终于开始工作了。它需要设置一些组合,但我会列出所有这些。
在根build.gradle文件中有:
ext {
TARGET_SDK_VERSION = 25
VERSION_CODE = 7
VERSION_NAME = '2.0'
COMPILE_SDK_VERSION = 25
BUILD_TOOLS_VERSION = '25.0.2'
APPLICATION_ID = "com.example.projectname"
PLAY_SERVICES_WEARABLE = 'com.google.android.gms:play-services-wearable:9.4.0'
}
在每个模块build.gradle文件中,可以引用这些文件,如下所示:
apply plugin: 'com.android.application'
android {
compileSdkVersion rootProject.ext.COMPILE_SDK_VERSION
buildToolsVersion rootProject.ext.BUILD_TOOLS_VERSION
defaultConfig {
applicationId rootProject.ext.APPLICATION_ID
minSdkVersion 20
targetSdkVersion rootProject.ext.TARGET_SDK_VERSION
versionCode rootProject.ext.VERSION_CODE
versionName rootProject.ext.VERSION_NAME
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
provided 'com.google.android.wearable:wearable:2.0.1'
compile 'com.google.android.support:wearable:2.0.1'
compile rootProject.ext.PLAY_SERVICES_WEARABLE
}
WearableListenerService
现在必须为每个要由android系统调用的覆盖函数定义intent-filter
。对于onCapabilityChanged
函数,intent过滤器应定义为: <service
android:name=".MyWearableListenerService"
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>
<intent-filter>
<action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
<action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
<data android:scheme="wear" android:host="*" android:pathPrefix="/PREF"/>
<data android:scheme="wear" android:host="*" android:pathPrefix="/start"/>
</intent-filter>
</service>
intent-filter
的{{1}}为onCapabilityChanged
。除此之外,还需要告知intent-filter数据方案和主机。这可以简单地为com.google.android.gms.wearable.CAPABILITY_CHANGED
。此intent-filter可以省略data android:scheme="wear" android:host="*"
。请注意,pathPrefix
和com.google.android.gms.wearable.DATA_CHANGED
的intent-filter需要com.google.android.gms.wearable.MESSAGE_RECEIVED
定义为能够在服务中调用各自的函数。
pathPrefix
功能,系统需要检测具有连接功能的设备。为此,我们必须在每个模块的xml文件中定义功能。为此,在每个模块中,将名为onCapabilityChanged
的文件保存在res / values目录中。该文件必须具有名为wear.xml
的字符串数组,其中包含描述您希望模块向其他设备通告的功能的项目。以下是可穿戴模块中包含的android_wear_capabilities
文件的示例。
wear.xml
首先,请务必注意,文件必须必须名为<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="android_wear_capabilities">
<item>verify_remote_wear_app</item>
</string-array>
</resources>
,必须才能放在values目录中。其次,字符串数组必须命名为wear.xml
。还要确保每个模块中的每个功能都具有唯一的名称。
如果上述任何一项不正确,那么android_wear_capabilities
功能将永远不会被调用,你将会沮丧地拔掉你的头发。
现在,要实际判断设备是否已断开连接,请使用onCapabilityChanged
功能:
onCapabilityChanged
此功能将告诉您设备何时连接或断开连接,假设一次只连接了1个设备。