gpt4 book ai didi

android - 如何在 Android 中强制蓝牙 LE "Just Works"配对

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:25 25 4
gpt4 key购买 nike

我有一个运行 GATT 服务器的嵌入式系统,我正尝试通过 Android 连接到该服务器。任务很简单:连接到 GATT 服务器、导航特征并验证读/写能力。问题是当我尝试连接 Android 应用程序时,它会尝试与“密码”配对,而不是与“Just Works”配对 [ https://developer.bluetooth.org/TechnologyOverview/Pages/LE-Security.aspx] .这是 Not Acceptable ,因为我的嵌入式设备没有任何方法可以向用户显示用于配对的 key 。所以连接方式必须是Just Works。

我尝试了 Play 商店中的许多应用程序,但所有应用程序都只尝试与 Passkey 配对。但这是我目前正在使用的:https://play.google.com/store/apps/details?id=com.macdom.ble.blescanner

我使用 LightBlue 应用程序(在 OS X 和 iOS 中支持)来完成这项工作。所以我知道我的外围设备(GATT 服务器)正在工作:广告、可连接、特征可访问等。

如何强制 Android 使用 Just Works 而不是 key 配对?是否缺少外围设备配置?

谢谢

最佳答案

问题的根源在于 Linux 界面所处的模式。默认情况下同时支持 BR/EDR(经典)和 LE 的蓝牙设备处于双模式。也就是说,它们可以作为经典或 LE 设备运行。我不了解 Android API,也没有尝试开发可以检测双模设备并选择使用 Just Working 配对连接为 LE 的 Android 应用程序。但我能够在界面上禁用 BR/EDR,并验证 Android 在扫描期间将其检测为仅 LE(单模式)界面。然后,Android 应用程序使用 Just Working 配对无缝连接。

以下是我在界面上禁用 BR/EDR 的方法:

$ sudo hciconfig hci0 down
$ sudo ./btmgmt bredr off
hci0 Set BR/EDR complete, settings: connectable bondable le
$ sudo hciconfig hci0 up
$ sudo hciconfig hci0 leadv

您可以通过下载和构建 Bluez 在 Linux 中构建 btmgmt 应用程序。 btmgmt 应用程序是根据 --enable-experimental 配置参数有条件地构建的。

更新:另一种方法是不修改接口(interface)能力,只修改广播的接口(interface)能力。这是通过广告标志完成的。修改标志以广播不支持 BR/EDR。这是第 2 位,将创建 0x04 的标志广播。 (参见蓝牙 SIG 文档 CSS v4:A 部分,第 1.3.2 节)

关于android - 如何在 Android 中强制蓝牙 LE "Just Works"配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com