如果当前连接了 Android Wear 设备,我希望我的应用程序的行为有所不同。检测到这一点的最简单方法是什么?
我相信您可以使用Google Play 服务中的这种方法,但这似乎只是为了查看设备是否存在而产生的大量开销。还有其他方法吗?
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 设备上并不总是调用此侦听器。
您还可以有一个布尔值(例如 mIsConnected),在 onPeerConnected 中设置为 true,在 onPeerDisconnected 中设置为 false。
如果您使用的是WearableListenerService,这些方法将自动包含在内,您只需覆盖它们:onPeerConnected(Node peer) 和 onPeerDisconnected(Node peer)。如果您想在 Activity 或其他东西中执行此操作,只需实现具有这些方法的NodeApi.NodeListener 即可。确保将其添加到您的 Google API 客户端(addListener(mGoogleApiClient, this))。
正如您所说,您必须使用Wearable.NodesApi.getConnnectedNodes()
API。
至少目前没有其他方法可以做到这一点。