Устройство Bluetooth не обнаружено - PullRequest
2 голосов
/ 18 ноября 2010

Я хотел бы установить связь Bluetooth между телефоном Android и удаленным устройством. Класс удаленного устройства - базовый, просто простой адаптер Bluetooth. Когда я использую функцию устройств сканирования Bluetooth, телефон распознает устройства другого класса (например, компьютер, телефон, гарнитура Bluetooth), но не этот. Я попробовал это на Samsung Galaxy Theos и HTC Wildfire с Android 2.1, но я получил одинаковый результат с обоими. Возможно ли, что производитель телефона или Android фильтрует определенный класс устройств? Иначе, есть ли другой способ сделать это устройство доступным для обнаружения?

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

lorenth

Ответы [ 4 ]

4 голосов
/ 20 декабря 2011

Мне удалось обойти эту проблему, не меняя вещи на стороне Android, а изменив класс адаптера Bluetooth. Я знаю, что это не решает первоначальную проблему блокировки устройств класса 0x00, но, по крайней мере, вы можете использовать последовательное устройство BT с android, несмотря на ошибку.

Я купил серийный конвертер Bluetooth у ebay (ссылка здесь: http://www.ebay.co.uk/itm/Bluetooth-RS232-serial-Converter-Module-Adapter-Board-/190508188703?pt=LH_DefaultDomain_0&hash=item2c5b2c441f), который, как и ожидалось, не распознавался моим HTC Desire в его конфигурации по умолчанию.

Я не хотел пробовать приложение с помощью программного обеспечения Zorn, упомянутого выше, потому что некоторые люди сообщали, что оно портит их телефоны HTC. Вместо этого я нашел из таблицы AT-команд BT-устройства, что вы можете изменить, среди других параметров, номер класса устройства, используя соединение UART и терминальную программу.

Мне потребовалось некоторое время, чтобы понять, что вы не можете использовать последовательное соединение Bluetooth для доступа к интерфейсу конфигурации, но вместо этого вы должны использовать физические контакты RX и TX на устройстве. Вам также необходимо подключить контакт с именем «Ключ» к Vcc, чтобы активировать командный режим. Поэтому я использовал интерфейс RS232-UART устройства последовательного программатора AVR для подключения к контактам RX / TX и использовал Realterm в качестве программы терминала. Это заставило работать интерфейс AT-команд, как только у меня была правильная скорость передачи данных 38400, и поменял местами провода RX и TX, которые я изначально подключил неправильно.

Я использовал генератор здесь http://bluetooth -pentest.narod.ru / Программное обеспечение / bluetooth_class_of_device-service_generator.html чтобы получить действительный ненулевой номер класса (я использовал объект Transfer / Computer / Desktop Workstation, который составляет 0x100104), и ввел его в устройство с помощью команды

at + class = 100104 \ r \ n

где \ r \ n обозначает Enter (см. Таблицу данных).

После выключения адаптера BT, отсоединения контакта «Key» и повторного включения я смог подключить его к своему телефону обычным способом. Передача данных также работала. Я снова использовал UART и Realterm программиста AVR для отправки некоторых данных (сообщение Hello World в ASCII) на выводы RX / TX адаптера. В конце Android я использовал приложение SENA Bterm для получения данных.

Надеюсь, это поможет кому-то делать интересные вещи со своими телефонами и встроенными системами.

3 голосов
/ 23 ноября 2010

Хорошо, после некоторых исследований в Интернете, для тех, кто хочет разработать приложение Bluetooth для Android (протестировано на 2.1 Эклер, я не знаю, для других версий) Кажется, что некоторые производители телефонов решили игнорировать любое устройство Bluetooth, которое рекламируетсамо по себе как класс 0 × 00 и не разрешает подключения, отключает Intents при обнаружении или даже перечисляет его на странице настроек bluetooth.Вот как это выглядит в режиме отладки в разделе LogCat Eclipse

DTUN_HCID Device [00:09:EF:58:04:38] class is 0x00 -  skip it

Я пробовал это на Samsung Galaxy 3 teos и HTC Wildfire.Судя по всему, он отлично работает на Nexus One.Что ж, плохо, что Google прекратил его продавать.Если некоторые из вас тестировали на других телефонах, и это работает, пожалуйста, сообщите нам.

Lorenth

0 голосов
/ 15 мая 2011

ОБНОВЛЕНИЕ: Это решение основано на доступе для чтения logcat из вашего приложения, поэтому не будет работать на современных версиях Android (> около 3.0). Ответ оставьте здесь с обновленной ссылкой в ​​случае, если кто-то использует Android v2.x.

Предполагая, что вы пишете приложение для своего телефона, я написал класс, который решает эту проблему:

http://zornsoftware.codenature.info/blog/pairing-spp-bluetooth-devices-with-android-phones.html

Я могу подтвердить, что LG Optimus One, а также Samsung Galaxy S (оба Android 2.2) страдают от этой проблемы. Я связался с LG и Samsung об этом и опубликую любые результаты, которые я слышу.

0 голосов
/ 02 декабря 2010

Я протестировал подключения BlueTooth к последовательному устройству (класс 0x00) на некоторых различных версиях Android, и получил следующие результаты:

Android 2.1 (оранжевый или O2, не может быть удален): пары в порядке Нетбук Toshibaработает под управлением Android 2.2: пары в порядке HTC Desire, Vodafone, Android 2.2: не удается обнаружить устройство HTC Desire HD, Vodafone, Android 2.2: не удается обнаружить устройство

Так что вполне возможно, что некоторые телефонные компании заблокировали доступ 0x00,Я связываюсь с Vodafone, чтобы а) получить разъяснения и б) убедить их, если это возможно, исправить это.Я отправлю, если получу что-нибудь полезное.

Дэвид

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