Поставить в очередь запрос на соединение Bluetooth и принять его одновременно
В моем приложении Android я могу принять запрос на соединение, отправленный с устройства BT (профиль SPP). эти устройства BT периодически отправляют запрос на подключение, и приложение принимает его. Но теперь моя проблема в том, что я могу подключиться к нескольким устройствам, но хочет периодически связываться с сопряженными устройствами. так что я хочу разъяснений по этому вопросу. Если приложение обменивается данными с одним устройством, и в то же время другое устройство отправляет запрос на подключение, могу ли я принять этот запрос на подключение через мое приложение с помощью BluetoothServerSocket? Как?
2 ответа
Сервер Bluetooth может обслуживать до 7 различных клиентов Bluetooth, вам необходимо создать сокет сервера Bluetooth в отдельном потоке, и каждый раз, когда клиент подключается, отправлять этого клиента в новый поток и возвращаться в состояние прослушивания. Вы можете использовать следующий псевдокод
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();
}
Я думаю, что вы можете следовать линии на примере BluetoothChat, имея поток, прослушивающий входящие соединения, но, в вашем случае, когда соединение установлено, вы не закрываете сокет сервера.