gpt4 book ai didi

android - 为什么我们可以通过BroadcastReceiver 与BLE 设备配对,而不显示系统Dialog?

转载 作者:行者123 更新时间:2023-11-29 02:22:55 25 4
gpt4 key购买 nike

我正在使用 RxAndroidBle 库来扫描和连接 BLE 设备。我还需要与这个找到的设备配对,而不显示有关 key 配对的系统对话框。绑定(bind)机制是 JustWorks

我已经通过创建 BroadcastReceiver 实现了这一点,遵循我在下面发布的要点(感谢@dglozano)。

代码要点: https://gist.github.com/dglozano/9b0ce38a558eeca16137909bd368698c

它实际上工作得很好,但我想了解为什么当我只是使用 rxBleDevice.bluetoothDevice.createBond() 它显示 Dialog 但是当我处理它由我自己的 BroadcastReceiver 然后,它没有。这是否以某种方式取消注册将处理设备 BOND_STATE 的普通 BroadcastReceiver?为什么我的 BroadcastReceiver 主要控制它?我感兴趣的是 - 当我注册自己的 receiver 时内部会发生什么。

最佳答案

好吧,我明白了。

我的第一印象是这个 BroadcastReceiver 处理这个系统 Dialog 是错误的。我们仅使用此接收器来复核 BOUND_STATE。它与配对对话框无关,这个假设是错误的。

所以第一个重要的事实是,配对只需要一个 createBond() 方法。剩下的就是建立它。

最重要的事实是,这是“Just works”配对方法。 There我们可以阅读有关 BLE 安全性和“Just works”的内容。你可以在这里阅读:

In this method, the TK is set to 0.

TK 是临时 key 。现在,让我们暂时回到我们的 Android createBond() 方法。在文档中我们可以读到:

Android system services will handle the necessary user interactions to confirm and complete the bonding process.

但如果它处理用户交互,为什么它不显示对话框?当我们将这两件事结合在一起时,我们就会找到答案。当临时 key 值设置为 0 时,Android 处理程序不需要显示配对 key 对话框。

Bluetooth 4.0/4.1 和 Bluetooth 4.2 之间有细微的变化,但应该不会对此行为产生影响。您可以阅读更多相关信息 here .

TL:DR 使用“Just works”配对方法意味着临时 key 值设置为 0,这意味着我们在配对过程中不需要它。 createBound() 方法只处理必要的用户交互,所以当我们不需要配对 key 时,我们不需要与用户交互。这就是为什么 Dialog 没有被显示的原因——因为它不是必需的。

关于android - 为什么我们可以通过BroadcastReceiver 与BLE 设备配对,而不显示系统Dialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54127126/

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