Intereting Posts
Перемещение видеофайла, снятого камерой с помощью кордовы (телефонная задержка), не освежает миниатюру галереи Решение для ошибки INSTALL_FAILED_INSUFFICIENT_STORAGE на Android Android – Изменить тему приложения onClick Как изменить значок меню навигации панели инструментов и параметров Цвет фона Android WebView Как распечатать все ключи и значения из HashMap в Android? Конфигурация ProGuard для Guava с запутыванием и оптимизацией Является ли использование общих настроек Android для хранения больших объемов данных хорошей идеей? В Android, как передать предопределенную поверхность для MediaCodec для кодирования? Как реализовать RecyclerView с строками CardView в фрагменте с помощью TabLayout SpannableStringBuilder для создания String с несколькими шрифтами / размерами текста и т. Д. Пример? Интеграция с Twitter4j через Android Studio Можно ли использовать цветной + цвет в качестве фона? Есть ли какой-то генератор «Feature Graphic» для Google Play? Инициализация загрузчика в процессе

Совместимость Bluetooth «вне зоны» (OOB) на Android?

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

В принципе, у меня есть планшет Android, который я хочу надежно связать с устройством, написанным на c ++, которое не имеет встроенного механизма отображения / ввода-вывода. Планшет, который будет спарен, будет выступать в качестве интерфейса GUI / IO, и я отправлю сообщение назад и четвертое по Bluetooth. Таким образом, я хочу надежно спаривать планшет с каждым устройством с помощью схемы обхода OOB.

Я понимаю концепцию OOB, но мне трудно найти подходящие методы для вызова при просмотре сайта android.developers.com для моего кода клиента Android. Также, глядя на материал bluez, я не могу найти многого для моего письменного сервера на C ++.

Основным вариантом использования является то, что пользователь подключит планшет к устройству через USB-соединение. USB-соединение облегчит передачу ключей / MAC-адресов для каждого устройства, а затем используя эту пару данных информации друг с другом.

Я могу вычислить USB-часть, но как только у меня есть ключи и необходимая информация о клиенте и сервере, я не могу отследить правильные методы, чтобы оба конца успешно и надежно соединялись.

У меня уже есть клиент / сервер, говорящий по небезопасному соединению, поэтому на самом деле единственная часть, с которой я столкнулся, – это фактически спаривание с обоих концов. Как только я спарен, я могу использовать secureRFComm для выполнения всех моих будущих сообщений.

Спасибо всем, кто может помочь!

Solutions Collecting From Web of "Совместимость Bluetooth «вне зоны» (OOB) на Android?"

У меня проблема 95%, но я попал в небольшой дорожный блок. Сначала я уточню этот пост с более конкретным ответом на исходный вопрос и отправлю свой вопрос в конце.

Чтобы повторить, моя задача – использовать внеполосное (oob) сопряжение, чтобы безопасно спарить планшет Android с использованием Honeycomb 3.2 на борту бигла через USB. Я не могу опубликовать конкретный код, но я дам вам все шаги, необходимые для этого.

На плате beagle у меня установлен стек bluez 4.96 с установленным плагином dbusoob. Чтобы убедиться в правильности установки, установите 2 Bluetooth-ключа на плате beagle и запустите тестовый код OOB, найденный в архиве bluez в тестовой папке. Это скрипт python. Сценарий должен успешно скомпоновать два Bluetooth-ключа, если не синий, возможно, неправильно настроен.

Чтобы получить связь USB с планшетом, вам необходимо установить mtpfs и mtp-tools. Они используются для установки планшета. Как я решил получить информацию OOB между двумя устройствами, нужно было установить планшет на борту бигля. После установки планшет и доска для биглей могут выписать файл с необходимой информацией.

На стороне андроида OOB не поддерживается в публичном API, поэтому все становится сложным. Я считаю, что это связано с тем, что у Honeycomb 3.2 нет пакета bluez, который официально поддерживает OOB-привязку, но у Google есть некоторая реализация. Я считаю это, потому что, если вы посмотрите на исходный код пряничного адаптера для классов Bluetooth и Bluetooth-устройств, вы можете См. Доступные методы OOB, но не показаны через документированный API.

Эти методы все еще являются общедоступными, поэтому вы можете называть их через отражение. Используя отражение, вы также можете получить все подписи метода в классе. Вот как я понял, какие методы мне доступны для меня.

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

Еще одна проблема, с которой вы столкнулись, – это когда вы пишете свои данные oob в файл на планшете, который будет читаться платой бигля. Поскольку андроид использует mtp, вы должны индексировать свой файл после его записи во внутреннюю хранилище sdcard. Чтобы решить эту проблему, вам необходимо использовать класс MediaScannerConnection и метод scanFile ().

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

Теперь на мой вопрос. У меня есть приложение для Android, которое отлично работает, и мой код бигль-карты – это пример testOOB, обновленный, чтобы один конец считывал информацию OOB из файла. Теперь проблема, которую я вижу, когда выполняется, все видят друг друга отлично, но на планшете я до сих пор получаю сообщение о том, хочу ли я соединиться с устройством xyz. Нет ключей или цифр. Он просто спрашивает «Пара с устройством XYZ» или что-то в этом роде.

Если я нажму «пара», все будет спарен с точки зрения таблеток, НО скрипт python вернется, что сбой не завершился. Сценарий python на плате beagle вызывает фактический метод для соединения между устройствами. Даже когда у меня андроид инициирует вызов createBond, я вижу тот же результат. Я могу гарантировать, что я установил необходимые данные OOB на обоих концах, прежде чем пытаться установить пару в обоих случаях, чтобы, похоже, это не было.

Поэтому мои проблемы, на которые я надеюсь, могут помочь мне:

1) Почему я даже получаю сообщение на андроиде, если данные OOB обмениваются правильно? Есть ли еще один звонок, который мне не хватает, и с какого конца?

2) Почему перезапуск скрипта python на бигль-панели не прошел, даже подумал, что я нажимаю всплывающее окно «пара», отображаемое на планшете. Монитор планшета и блюза демонстрирует устройства как спаренные. Я снова склоняюсь к идее, что я что-то упускаю.

Спасибо всем, кто может помочь 🙂

РЕДАКТИРОВАТЬ:

Чтобы добавить дополнительную информацию, вы увидите вывод logcat:

D/UIBluetooth( 4363): !!!!!! Start Bond !!!!!! D/BluetoothService( 1703): Setting out of band data for: 00:02:76:24:C2:8F:[-37, -1, 65, -42, -121, -75, -60, -4, -47, -86, -88, 14, 64, 83, 16, 96]:[-112, 34, 121, -97, 15, -54, -83, - 93, 104, -83, -124, -25, 89, 114, 66, 62] D/BluetoothBondState( 1703): 00:02:76:24:C2:8F bond state 10 -> 11 (0) D/UIBluetooth( 4363): createOobBond Successful V/BluetoothEventManager( 2174): Received android.bluetooth.device.action.BOND_STATE_CHANGED D/BluetoothEventLoop( 1703): Property Changed: Devices : 1 D/BluetoothEventLoop( 1703): Device property changed: 00:02:76:24:C2:8F property: Connected value: true I/BluetoothEventLoop.cpp( 1703): agent_event_filter: Received method org.bluez.Agent:RequestOobData I/BluetoothEventLoop.cpp( 1703): agent_event_filter: Received method org.bluez.Agent:RequestOobData 

Кажется, что последние две строки запускают всплывающее окно Android на Pair / Cancel с помощью устройства в вопросах. Я бы хотел, чтобы Android знал, что просто автосвязь и даже не спрашивает. Я мог бы пропустить звонок или сделать что-то не в порядке, насколько я знаю. Последнее, что я делаю в своем коде, – создать облигацию, которая, кажется, является очевидным местом для этого.

Спасибо за любые предложения!

Уже нет общедоступных API-интерфейсов, чтобы разрешить совместное использование OOB. Это возможно, если вы можете или захотите изменить базовый стек BlueZ, чтобы выставить крючки для проверки OOB для приложения. (Нетривиальная задача)

Какой механизм OOB вы планируете использовать? NFC?