收听断开连接的节点
Listen to disconnected nodes
在表盘配置 activity 中,如果用户在更改表盘配置时手表断开连接,我想警告用户。
Wearable.NodeApi.addListener
已弃用,我如何在 activity 中收听断开连接的节点?[=12=]
使用 WearableListenerService
不合适,因为我不想在 activity 未打开时收听。
CapabilityApi 应该可以。有两种方法可以根据功能获取已连接节点的列表,包括更改回调:
更多详情:
下面是 Google 的 RuntimePermissionsWear sample's MainWearActivity.java 文件中的一个片段。在onConnected()方法中,它为节点的变化设置一个监听器,并请求当前节点的列表(涵盖两种情况)。
请注意,此示例使用自定义功能(针对 phone 和 wear),因此您可能会更改该部分。如果您使用自定义功能,则必须在 wear.xml 文件中声明。 (Here 是 phone 中的示例,以防您好奇。)
// Set up listeners for capability and message changes.
Wearable.CapabilityApi.addCapabilityListener(
mGoogleApiClient,
this,
Constants.CAPABILITY_PHONE_APP); // custom capability
...
// Initial check of capabilities to find the phone.
PendingResult<CapabilityApi.GetCapabilityResult> pendingResult =
Wearable.CapabilityApi.getCapability(
mGoogleApiClient,
Constants.CAPABILITY_PHONE_APP, // custom capability
CapabilityApi.FILTER_REACHABLE);
pendingResult.setResultCallback(new ResultCallback<CapabilityApi.GetCapabilityResult>() {
@Override
public void onResult(CapabilityApi.GetCapabilityResult getCapabilityResult) {
if (getCapabilityResult.getStatus().isSuccess()) {
CapabilityInfo capabilityInfo = getCapabilityResult.getCapability();
// Realistically, there is only on phone node with this capability, but you should check for multiple nodes to be safe (if wearable, many more possibilities)
mPhoneNodeId = pickBestNodeId(capabilityInfo.getNodes());
} else {
Log.d(TAG, "Failed CapabilityApi result: "
+ getCapabilityResult.getStatus());
}
}
});
在表盘配置 activity 中,如果用户在更改表盘配置时手表断开连接,我想警告用户。
Wearable.NodeApi.addListener
已弃用,我如何在 activity 中收听断开连接的节点?[=12=]
使用 WearableListenerService
不合适,因为我不想在 activity 未打开时收听。
CapabilityApi 应该可以。有两种方法可以根据功能获取已连接节点的列表,包括更改回调:
更多详情:
下面是 Google 的 RuntimePermissionsWear sample's MainWearActivity.java 文件中的一个片段。在onConnected()方法中,它为节点的变化设置一个监听器,并请求当前节点的列表(涵盖两种情况)。
请注意,此示例使用自定义功能(针对 phone 和 wear),因此您可能会更改该部分。如果您使用自定义功能,则必须在 wear.xml 文件中声明。 (Here 是 phone 中的示例,以防您好奇。)
// Set up listeners for capability and message changes.
Wearable.CapabilityApi.addCapabilityListener(
mGoogleApiClient,
this,
Constants.CAPABILITY_PHONE_APP); // custom capability
...
// Initial check of capabilities to find the phone.
PendingResult<CapabilityApi.GetCapabilityResult> pendingResult =
Wearable.CapabilityApi.getCapability(
mGoogleApiClient,
Constants.CAPABILITY_PHONE_APP, // custom capability
CapabilityApi.FILTER_REACHABLE);
pendingResult.setResultCallback(new ResultCallback<CapabilityApi.GetCapabilityResult>() {
@Override
public void onResult(CapabilityApi.GetCapabilityResult getCapabilityResult) {
if (getCapabilityResult.getStatus().isSuccess()) {
CapabilityInfo capabilityInfo = getCapabilityResult.getCapability();
// Realistically, there is only on phone node with this capability, but you should check for multiple nodes to be safe (if wearable, many more possibilities)
mPhoneNodeId = pickBestNodeId(capabilityInfo.getNodes());
} else {
Log.d(TAG, "Failed CapabilityApi result: "
+ getCapabilityResult.getStatus());
}
}
});