确定Android Wear设备是否在线

4

我正在开发一款Android应用程序,该应用程序还在Android Wear设备上使用通知。对于我的应用程序功能而言,了解Wear设备是否连接非常重要 - 但似乎无法确定。

我尝试了以下方法:

  • 使用Nodelistener API。我想做一些简单的事情——比如重新启动手表并看到它离线和在线,但我没有收到这些事件。我已经阅读过只有强制配对/解除配对手表才会导致发送这些事件的内容(在我看来似乎是错误的,并且它太复杂了,无法说明我的应用程序的目的)。我还阅读了这篇帖子(https://plus.google.com/+NathanSchwermann/posts/1Rs9etY5qte),但我已经在我的应用程序中使用了WLS。
  • 改用蓝牙监听器(Broadcastreceiver监听BluetoothDevice.ACTION_ACL_CONNECTED和DISCONNECTED操作),这很完美——但我无法确定连接的是否是Wear设备。同样,这是由于NodeApi:Wearable.NodeApi.getConnectedNodes(wearApiClient).setResultCallback……从未得到结果回调。顺便说一下,当我获取ACION_ACL_CONENCTED操作时,这就是我要做的——然后我只想看到有多少个节点连接并确定它是否是新连接的节点。
所以这些都不起作用了,我已经没有任何想法了。看起来NodeApi不能按照开发者的意愿使用,而我真的需要这个功能。
有人知道绕过这个问题的巧妙方法吗?
**更新:**
只是为了澄清,我想在设备连接和断开时得到回调。

你好,请问你找到了事件驱动的方法吗?我在这里问:http://stackoverflow.com/questions/31312265/android-wearables-how-to-handle-the-event-of-a-connected-device - user3290180
3个回答

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()),而不是每次设备连接或断开时都会调用。

1

你可以使用以下代码检查连接到你的设备的节点数量:
List<Node> connectedNodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await().getNodes();
但是请注意,Google Glass也会被计算为一个节点。因此,如果你的手持设备同时连接了智能手表和 Google Glass,你将有两个节点,而不是一个。


这应该与我的调用相同:Wearable.NodeApi.getConnectedNodes(wearApiClient).setResultCallback ... - Joakim

0
我正在使用一种更简单的方法,适用于我的用例,检查 Android Wear 应用是否已安装:
    try {
        getPackageManager().getPackageInfo("com.google.android.wearable.app", PackageManager.GET_META_DATA);
    } catch (PackageManager.NameNotFoundException e) {
        //android wear app is not installed
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接