Создание небезопасного сокета RFCOMM все еще требует сопряжения

Я использую вызовы listenUsingInsecureRfcommWithServiceRecord и createInsecureRfcommSocketToServiceRecord для подключения одного устройства Android к другому.

При первой настройке у меня были Nexus One и Nexus S, работающие под управлением Android 2.3.6 - при этой настройке при подключении не появлялось диалоговое окно "Запрос на соединение".

Во второй настройке я попробовал тот же Nexus One с Samsung Galaxy S2 под управлением Android 2.3.3 - при этой настройке диалоговое окно "Запрос на сопряжение" появилось на обоих устройствах. Это странно, поскольку оба устройства находятся на уровне API 10, который должен поддерживать небезопасное соединение.

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

При необходимости я могу разместить соответствующие части из logcat.

1 ответ

Решение

Для Bluetooth v2.1, GAP, раздел 5.2.2:

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

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

Не знаю, возможно ли избежать этого в Android.

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

Другие вопросы по тегам