当前位置: 首页 > 知识库问答 >
问题:

检测连接/断开的android wear设备

龙昊焱
2023-03-14

我目前正在开发一款android wear应用程序,它有两种模式:连接(与手机配对)和断开连接。我看了这个帖子(如何检测android设备是否与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应用程序将检测到节点并进入连接模式。-如果移动应用程序被杀死,它会在被销毁之前向手表发送一条消息,手表会进入断开连接模式如果蓝牙连接丢失,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个答案

公羊俭
2023-03-14

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

 类似资料:
  • 我正在编写一个使用tcp套接字的服务器/客户端应用程序,我的问题是如何检测半开放连接,我计划使用keep-alive但有些人建议我做我自己的协议,所以我现在的计划是: 在服务器端: 服务器会等待10秒等待客户端发送数据,如果在给定的时间内服务器没有收到客户端的消息,服务器会将客户端标记为断开连接,否则,如果服务器收到客户端的消息,则会重新设置计时器。 我现在的问题是,这样行吗?还是我做错了?还是一

  • 我正在使用C#window应用程序表单对TCP多线程服务器进行工作,我正在尝试检测客户端的机器是否关闭并断开与服务器的连接。看了一些帖子,有了一些想法: 如何确定tcp是否连接? 我的代码如下: 多谢帮忙。

  • 我目前正在使用laravel echo为我的实时聊天应用程序使用状态频道,并面临与此问题相同的问题。 不同的是,我使用的是LaravelEcho服务器,而不是用于socket服务器的pusher。 然而,我正在寻找pusher webhooks旁边的laravel echo服务器端实现,以获得用户断开连接的通知。 有什么可能的解决办法吗?

  • 我正在用Java编写一个简单的TCP客户机/服务器程序对,如果客户机在10秒内还没有发送任何东西,服务器必须断开连接。socket.setsoTimeout()使我得到了这一点,服务器就可以很好地断开连接。问题是--我如何让客户端确定服务器是否关闭?目前,我使用DataOutputStream向服务器写入数据,这里的一些答案表明,向封闭套接字写入数据将引发IOException,但这不会发生。 编

  • 当我再次调用时,第二次调用将按预期返回。但我想明白,为什么第一次打电话成功了?我是否遗漏了某些特定于TCP的细节?这种奇怪的(对我来说)行为只针对{活动,错误}连接。

  • 我的audio player应用程序当前正在侦听“ACTION\u ACL\u DISCONNECTED”事件,检查BluetoothDevice的意图。EXTRA_DEVICE,并检查该设备的类以查看它是否是BluetoothClass。装置专业AUDIO\u VIDEO设备。如果是这样,那么我想暂停播放。基本上,当蓝牙耳机或汽车连接断开时暂停。 然而,我发现这对一些实际上以其他方式收听的用户来