Как подключить несколько устройств Bluetooth с помощью SPP? - PullRequest
0 голосов
/ 13 января 2020

Я создаю Android APP, который может соединить два устройства BT и осуществлять связь через SPP. Для создания такого приложения я следую простой логике c.

Я получил два адреса ma c устройства BT, поэтому в течение l oop я подключаю устройства BT, как показано ниже :

private void connect() {
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    String[] strDevice = deviceAddress.split(",");
    BluetoothDevice device = null;
    String currentConnection;
    String deviceName = "";
    try {
        disconnect();
        Thread.sleep(500);

        for (String item: strDevice) {
            Log.d(TAG,"item is: " + item + " size is: " + strDevice.length);
            currentConnection = item;
            device = bluetoothAdapter.getRemoteDevice(item);
            deviceName = device.getName() != null ? device.getName() : device.getAddress();
            status("connecting..." + item);
            connected = Connected.Pending;
            socket = new SerialSocket();
            service.connect(this, "Connected to " + deviceName);
            socket.connect(getContext(), service, device);

            Thread.sleep(500);
        }


    } catch (Exception e) {
        onSerialConnectError(e);
    }
}

Используя приведенный выше код, я могу соединить два устройства BT. Но проблема в том, что когда я закрываю активность, я отключаю их, но в то время отключается только одно устройство. Я вызываю разъединение на «OnDestroy» фрагмента:

@Override
public void onDestroy() {
    if (connected != Connected.False) {
        disconnect();
    }
    getActivity().stopService(new Intent(getActivity(), SerialService.class));
    super.onDestroy();
}

void disconnect() {
    listener = null; // ignore remaining data and errors
    connected = false; // run loop will reset connected
    if(socket != null) {
        try {
            socket.close();
        } catch (Exception ignored) {
        }
        socket = null;
    }
    try {
        context.unregisterReceiver(disconnectBroadcastReceiver);
    } catch (Exception ignored) {
    }
}

Мне нужна помощь, чтобы выяснить, почему при разъединении отключается только одно устройство? Нужно ли закрывать две розетки, потому что при подключении открываются две розетки для двух устройств? Если да, как я могу закрыть две розетки?

Заранее спасибо

1 Ответ

0 голосов
/ 15 января 2020

Вот решение:

Проблема, описанная выше, заключалась в том, что при отключении разъема отключалось только одно устройство BT. Чтобы разрешить ситуацию, я сохранил сокет в параллельном списке, когда он был создан и подключен.

Поэтому, когда происходит отключение, я отключил все сокеты из списка, которые подключены. Таким образом, он отключает все устройства BT.

Спасибо.

...