检测已连接/断开连接的Android磨损设备

时间:2015-10-21 18:11:30

标签: wear-os

我目前正在做一个有两种模式的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();
}

1 个答案:

答案 0 :(得分:0)

为什么不使用CapabilitApi?如果移动设备上的应用程序提供您感兴趣的特定功能,则可以使用这些api查询提供该功能的节点(已连接和附近)。这不是你想要的吗?