我开发的Android应用程序也在Android Wear设备上使用通知。了解Wear设备是否已连接对我的应用程序功能至关重要 - 而且似乎无法确定。
我尝试了以下内容:
所以这一切都不起作用,我没有想法。似乎NodeApi不起作用,因为开发人员想要使用它,我真的需要这个功能。
有谁知道一个聪明的方法来解决这个问题?
**更新:**
只是为了澄清,我希望在设备连接和断开连接时收到回调。
答案 0 :(得分:1)
您可以使用
检查连接到设备的节点数
List<Node> connectedNodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await().getNodes();
但要小心,谷歌眼镜算作一个节点,所以如果你有一个智能手表和谷歌眼镜连接到你的掌上电脑,你将有2个节点,而不是一个。
答案 1 :(得分:1)
正如Snow的答案所述,正确的方法是:
List<Node> connectedNodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await().getNodes();
或者,如果你不能调用await()(例如,如果你在主UI线程上):
Wearable.NodeApi.getConnectedNodes(wearApiClient).setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() {
@Override
public void onResult(NodeApi.GetConnectedNodesResult getConnectedNodesResult) {
List<Node> nodes = getConnectedNodesResult.getNodes();
// Do your stuff with connected nodes here
}
});
这里的重点是,ResultCallback将为您当前连接的可穿戴设备提供,因此它只会被调用一次(除非您再次调用getConnectedNodes()),而不是每次设备连接或断开连接时。
答案 2 :(得分:0)
我正在使用一个更简单的方法,适合我的用例,检查是否安装了android wear app:
try {
getPackageManager().getPackageInfo("com.google.android.wearable.app", PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
//android wear app is not installed
}