检测Android Wear设备是否已连接到手机的最简单方法是什么?

时间:2014-07-07 20:58:15

标签: android wear-os

如果Android Wear设备当前已连接,我希望我的应用有不同的行为。检测此问题的最简单方法是什么?

我相信您可以使用Google Play服务中的this method,但这似乎是为了查看该设备是否存在而需要大量开销。还有其他办法吗?

3 个答案:

答案 0 :(得分:2)

NodeAPI可以通过以下简单方式检查您的Android Wear设备和手机是否已连接:

这是您致电时的回调函数:

private void checkNodeAPI(){
    Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(this, 1000, TimeUnit.MILLISECONDS);
}

//回调

@Override
public void onResult(NodeApi.GetConnectedNodesResult getConnectedNodesResult) {
    if (getConnectedNodesResult != null && getConnectedNodesResult.getNodes() != null){
        mWearableConnected = false;
        for (Node node : getConnectedNodesResult.getNodes()){
            if (node.isNearby()){
                mWearableConnected = true;
            }
        }
    }
    Log.v("TEST", "mWearableConnected: " + mWearableConnected);
}

getConnectedNodes()是一个异步函数,所以结果只是在一段时间后返回,你无法立即得到它。

要在Android Wear连接/断开手机连接时接收活动,您可以使用以下功能添加听众:

Wearable.NodeApi.addListener(mGoogleApiClient, this);

@Override
public void onPeerConnected(Node node) {
    Log.v("TEST", "onPeerConnected");
    mWearableConnected = true;
}

@Override
public void onPeerDisconnected(Node node) {
    Log.v("TEST", "onPeerDisconnected");
    checkNodeAPI();
}

但是在某些Android Wear设备上并不总是调用此侦听器。

答案 1 :(得分:1)

您必须使用Wearable.NodesApi.getConnnectedNodes() API。

至少目前没有其他方法可以做到这一点。

答案 2 :(得分:1)

你也可以有一个布尔值(比如mIsConnected),在onPeerConnected中设置为true,在onPeerDisconnected中设置为false。

如果您使用WearableListenerService,则会自动包含这些方法,您只需覆盖它们:onPeerConnected(Node peer)和onPeerDisconnected(Node peer)。如果您想在Activity或其他内容中执行此操作,只需实现具有这些方法的NodeApi.NodeListener。请务必将其添加到您的Google API客户端(addListener(mGoogleApiClient, this))。