收听断开连接的节点

Listen to disconnected nodes

在表盘配置 activity 中,如果用户在更改表盘配置时手表断开连接,我想警告用户。

Wearable.NodeApi.addListener 已弃用,我如何在 activity 中收听断开连接的节点?[​​=12=]

使用 WearableListenerService 不合适,因为我不想在 activity 未打开时收听。

CapabilityApi 应该可以。有两种方法可以根据功能获取已连接节点的列表,包括更改回调:

  1. 节点更改回调:CapabilityApi.CapabilityListener
  2. 请求当前节点:Wearable.CapabilityApi.getCapability()

更多详情:

下面是 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());
            }
        }
    });