Разработка Bluetooth для Android - подключение к НЕПАРТИВНОМУ устройству - PullRequest
1 голос
/ 20 января 2011

Во-первых, я в состоянии программно подключиться к устройству через Bluetooth, если я предварительно спарил его вручную. Однако я не нашел (удобного для пользователя) способа подключения к непарным устройствам (которые можно обнаружить, разумеется), даже используя неизменный образец кода Android Bluetooth.

Я хотел бы открыть диалоговое окно сопряжения, в котором пользователь должен ввести пароль для устройства. Что происходит с моим кодом и примером кода Android Bluetooth, так это создание сокета с обнаруживаемым устройством Bluetooth

device.createRfcommSocketToServiceRecord(MY_UUID); 

добавит уведомление в панель уведомлений в верхней части экрана; однако маловероятно, что пользователь даже заметит новое уведомление (я знаю, что не заметил).

Как бы я открыл это диалоговое окно сопряжения, предлагая пользователю ввести пароль - или, что еще лучше, автоматически предоставить пароль для конкретного устройства?

Ответы [ 2 ]

0 голосов
/ 09 марта 2011

Я видел несколько тем по этому вопросу, но не нашел хорошего ответа.

Я подключаю Nexus 1 к устройству Bluetooth Spp Server для чтения и записи данных.

После некоторых экспериментов я обнаружил следующее

  1. Если я разгрузлю установление соединения из потока пользовательского интерфейса (что я считаю хорошей идеей), диалоговое окно сопряжения (введите пин-код) не отображается - скорее, появляется элемент уведомления, который пользователь должен щелкнуть для сопряжения устройств.

  2. Если я установлю соединение из потока пользовательского интерфейса, диалоговое окно очистки выйдет на передний план, но, очевидно, во время ожидания возникает небольшая уродливая пауза пользовательского интерфейса.

В любом случае запрос на установление соединения истекает до того, как пользователь (я) может ввести пин-код при сбое обнаружения службы IOException.

В идеале мой диалог должен быть связан спередний (без необходимости блокировать мой поток пользовательского интерфейса), и что попытка подключения не будет иметь тайм-аут при ожидании записи сопряжения.

Кто-нибудь еще придумал, как сделать эту работу?

0 голосов
/ 02 февраля 2011

Для этого вы можете использовать библиотеку BlueCove . Тем не менее, он может быть немного тяжелее, чем вы хотели бы, так как он требует собственного компонента, но в свою очередь дает вам реальный доступ к Bluetooth на вашем телефоне.

Тим: Я вижу, как мошенническое приложение может злоупотреблять этим механизмом, но есть устройства, которые вообще не поддерживают традиционный метод аутентификации на основе PIN-кода (например, WiiMote).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...