Подключение к уже подключенному устройству Bluetooth - PullRequest
3 голосов
/ 20 июля 2011

Недавно я попытался заставить процесс сопряжения работать программно, и мне это удалось. Но недавно я узнал, что пользователи моего приложения могут подключаться к нескольким «интересным» устройствам. Поэтому я должен предложить пользователю выбрать устройство для подключения к

Итак, я должен подключить пользователя к уже подключенному устройству Bluetooth. Но ни одно из моих усилий не сработало. Я попытался снова запустить процесс сопряжения, используя:

tmp = device.createRfcommSocketToServiceRecord(MY_UUID);

, а также следующее:

Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
mmSocket = (BluetoothSocket) m.invoke(mmDevice, 1);

, который я реализовал, и единственный работающий способ сопряжения моего телефона с моим встроенным устройством Bluetooth

Итак, мой вопрос:

  • Можно ли мне отключить сопряженное устройство, а затем подключиться к другому встроенному устройству? Я пытался .. просто подключиться к новому устройству, но я не могу заставить его работать

1 Ответ

2 голосов
/ 20 июля 2011

Боюсь, я не совсем уверен, в чем ваша проблема.Вы не можете создать сокет для уже подключенного устройства Bluetooth?

Прежде всего, если устройство уже подключено, вам не нужно снова запускать процесс сопряжения.Вам просто нужно создать сокет для связи, который не будет работать, если устройство недоступно для связи.В последнее время я кое-что делал для этого и использовал следующий код, который отлично сработал для меня:

    try {
        Method m = device.getClass().getMethod("createRfcommSocket",
                new Class[] { int.class });
        BluetoothSocket mySocket = (BluetoothSocket) m.invoke(device, Integer.valueOf(1));

    } catch (<VARIOUS EXCEPTIONS>) {
        //Do stuff
    }

Для подсказки пользователю выбрать устройство, вы можете запросить BluetoothAdapter длявсе сопряженные в данный момент устройства выглядят следующим образом:

Set<BluetoothDevice> bondedDevices = BluetoothAdapter
            .getDefaultAdapter().getBondedDevices();

Наконец, можно создавать подключения к нескольким устройствам одновременно - посмотрите здесь: Android Bluetooth API подключается к нескольким устройствам

...