排队蓝牙连接请求并同时接受

Posted

技术标签:

【中文标题】排队蓝牙连接请求并同时接受【英文标题】:Queuing Bluetooth Connection Request and accept then concurrently 【发布时间】:2013-01-30 10:52:00 【问题描述】:

在我的 android 应用程序中,我可以接受从 BT 设备(SPP 配置文件)发送的连接请求。这些 BT 设备定期发送连接请求,应用程序接受它。 但现在我的问题是,我可以与多个设备配对,但想定期与配对设备通信。所以我想澄清这方面的问题。 如果应用程序与一台设备通信,同时另一台设备发送连接请求,那么我可以使用 BluetoothServerSocket 通过我的应用程序接受此连接请求吗?如何?

【问题讨论】:

【参考方案1】:

Bluetooth Server 最多可以为 7 个不同的蓝牙客户端提供服务,您需要在单独的线程中创建蓝牙服务器套接字,并且每次客户端连接时,将该客户端发送到新线程,然后返回侦听状态。 你可以使用下面的伪代码

BluetoothServerSocket serverSocket =  BluetoothAdapter.listenUsingRfcommWithServiceRecord();
while(running)
    BluetoothSocket client = serverSocket.accept(); //blocks untel a client is connected
    sendClientToHisThread(client);


private void sendClientToHisThread(final BluetoothSocket socket)
     Thread thread = new Thread(new Runnable()
@Override
public void run()
   // communicate with client
      socket.close();
 
);
    thread.start();
 

【讨论】:

【参考方案2】:

我认为您可以按照BluetoothChat 示例中的行,让线程监听传入的连接,但在您的情况下,当连接建立时,您不会关闭服务器套接字。

【讨论】:

以上是关于排队蓝牙连接请求并同时接受的主要内容,如果未能解决你的问题,请参考以下文章

蓝牙配对请求连接

手机蓝牙与手机蓝牙连接时不弹出配对码对话框

Android开发之蓝牙通信

蓝牙 Socket 没有传入连接

求助,win10蓝牙显示已配对,但是没有连接

mysql线程池与连接池