我目前正在做一个有两种模式的Android服装应用程序:连接(与手机配对)和断开连接。我查看了这个帖子(How to detect if android device is paired with android wear watch)。我添加了侦听器以检测何时找到节点。
@Override
public void onPeerConnected(Node node) {
Log.d(TAG, "CONNECTED");
}
@Override
public void onPeerDisconnected(Node node) {
Log.d(TAG, "PEER DISCONNECTED");
}
有以下情况: - 如果启动了移动应用程序,则Wear应用程序将检测节点并进入连接模式。 - 如果移动应用程序被杀死,它会在被销毁到手表之前发送消息并且手表进入断开连接模式。 - 如果蓝牙连接丢失,磨损应用程序将进入断开连接模式。
我在这样做的过程中有点迷失。如何知道正确的节点是否配对? (包含应用程序的手机)?
编辑:
以下是我使用的功能代码:
@Override
public void onCreate(){
mApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.build();
Toast.makeText(MainActivity.s_instance.getApplicationContext(), "mApiClient : " + mApiClient, Toast.LENGTH_SHORT).show();
if (mApiClient != null && !(mApiClient.isConnected() || mApiClient.isConnecting()))
mApiClient.connect();
setupNode();
Wearable.CapabilityApi.addCapabilityListener(
mApiClient,
capabilityListener,
CAPABILITY_NAME);
//Listener to check connection with the mobile (bluetooth enabled/disabled and device detected)
super.onCreate();
}
private void setupNode() {
new Thread(new Runnable() {
@Override
public void run() {
if (mApiClient != null && !(mApiClient.isConnected() || mApiClient.isConnecting()))
mApiClient.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
Wearable.CapabilityApi.getCapability(
mApiClient, CAPABILITY_NAME,
CapabilityApi.FILTER_REACHABLE).setResultCallback(new ResultCallback<CapabilityApi.GetCapabilityResult>() {
@Override
public void onResult(CapabilityApi.GetCapabilityResult result) {
Toast.makeText(MainActivity.s_instance.getApplicationContext(), "TRYING TO GET NODE", Toast.LENGTH_SHORT).show();
if (result.getCapability() == null) {
Toast.makeText(MainActivity.s_instance.getApplicationContext(), "WE DETECTED NO CAPABILITY", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.s_instance.getApplicationContext(), "WE DETECTED A CAPABILITY : " + result.getCapability(), Toast.LENGTH_SHORT).show();
}
updateCapability(result.getCapability());
}
});
}
}).start();
}
答案 0 :(得分:0)
为什么不使用CapabilitApi?如果移动设备上的应用程序提供您感兴趣的特定功能,则可以使用这些api查询提供该功能的节点(已连接和附近)。这不是你想要的吗?