5

如果当前连接了 Android Wear 设备,我希望我的应用程序的行为有所不同。检测到这一点的最简单方法是什么?

我相信您可以使用Google Play 服务中的这种方法,但这似乎只是为了查看设备是否存在而产生的大量开销。还有其他方法吗?

4

3 回答 3

3

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 设备上并不总是调用此侦听器。

于 2016-03-03T02:02:34.877 回答
1

您还可以有一个布尔值(例如 mIsConnected),在 onPeerConnected 中设置为 true,在 onPeerDisconnected 中设置为 false。

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

于 2014-07-18T20:13:19.613 回答
1

正如您所说,您必须使用Wearable.NodesApi.getConnnectedNodes()API。

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

于 2014-07-08T01:21:37.530 回答