如果Android Wear设备当前已连接,我希望我的应用有不同的行为。检测此问题的最简单方法是什么?
我相信您可以使用Google Play服务中的this method,但这似乎是为了查看该设备是否存在而需要大量开销。还有其他办法吗?
答案 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))。