Можете ли вы объяснить, какую встроенную плату вы используете?
Когда происходит сопряжение , устройства указывают друг другу, каковы их возможности ввода / вывода для желаемого соединения.
Проблема в том, что ваши два устройства сигнализируют о разных вещах.
Вероятно, Android хочет сделать SPP с вводом пароля, в то время как ваше встроенное устройство пробует устаревшее соединение Вам нужно разместить больше кода, чтобы получить более четкий ответ.
Вот мой сценарий:
- Android является сервером RFCOMM
- Встроенная плата является клиентом RFCOMM (инициирует соединение)
Представьте, что они непарные.
- Встроенная плата просматривает Android SDP в поисках гнезда RFCOMM (фактически канала), соответствующего UUID.
- Встроенная плата пытается подключиться.
- Встроенная плата получает запрос на детальное описание возможностей ввода / вывода и настроек соединения (для соединения). Это должно ответить. Допустим, он отвечает защитой MITM, требуется соединение, и он также скажет, что не имеет возможностей ввода / вывода .
- Встроенная плата соответствует требованиям аутентификации Android (защита MITM, требуется соединение)
- Android показывает диалог принятия / отклонения.
- Теперь соединение установлено.
Сопряжение больше не будет необходимым для новых подключений RFCOMM до тех пор, пока адаптер Bluetooth одного из устройств не потеряет свой источник питания или не удалит свои ссылочные ключи каким-либо другим способом (не соединяет).
Перед подключением, поскольку сокет Android RFCOMM безопасен, моя встроенная плата получит запрос на аутентификацию.
Итак, для Android RFCOMM, в моем проекте я могу заставить Android отвечать только «да / нет» (не ПИН). (ограниченный ввод / вывод)
Вы также можете сделать соединение мгновенным и без каких-либо действий пользователя, но это против API Android и не рекомендуется. Лучшее управление Bluetooth-чипом телефона Android может быть достигнуто с помощью файлов aidl .
Не забудьте проголосовать !!