检测connected/disconnectedandroid磨损装置
Detecting connected/disconnected android wear device
我目前正在做一个 android 穿戴应用程序,它有两种模式:连接(与手机配对 phone)和断开连接。我查看了此线程 (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();
}
为什么不使用 CapabilitApi?如果您的移动应用程序提供了您感兴趣的某种功能,您可以使用这些 api 来查询提供该功能的节点(连接的和附近的)。这不就是你想要的吗?
我目前正在做一个 android 穿戴应用程序,它有两种模式:连接(与手机配对 phone)和断开连接。我查看了此线程 (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();
}
为什么不使用 CapabilitApi?如果您的移动应用程序提供了您感兴趣的某种功能,您可以使用这些 api 来查询提供该功能的节点(连接的和附近的)。这不就是你想要的吗?