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

时间:2013-01-30 10:52:01

标签: android bluetooth bluetooth-sco

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

2 个答案:

答案 0 :(得分:2)

蓝牙服务器可以为多达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();
 }

答案 1 :(得分:0)

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