Подключение к уже подключенному Bluetooth-устройству

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

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

tmp = device.createRfcommSocketToServiceRecord(MY_UUID);

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

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

это тот, который я реализовал, и это единственный рабочий способ связать мой телефон со встроенным устройством Bluetooth

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

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

person Mazze    schedule 20.07.2011    source источник
comment
Не могу вспомнить, решил я это или нет. Но насколько я помню, я ее решил. Я собираюсь отметить это как ответ, хотя   -  person Mazze    schedule 06.07.2012


Ответы (1)


Боюсь, я не совсем понимаю, в чем ваша проблема. Это то, что вы не можете создать сокет для уже подключенного устройства 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 подключается к нескольким устройствам

person stephendnicholas    schedule 20.07.2011
comment
Думаю, мой вопрос или вопросы были расплывчатыми. Я подключился к устройству и хочу к нему подключиться. У меня есть встроенное устройство, которое говорит, что не подключено. Однако в моем телефоне есть сопряженное, но не подключенное устройство. getBondedDevices() получает все сопряженные устройства. Но есть ли способ узнать, подключен ли я к устройству? Есть ли способ достать сокет и отключить его? - person Mazze; 20.07.2011