【发布时间】:2013-10-07 23:35:23
【问题描述】:
我正在使用 SPP 蓝牙模块在我的 Android 手机应用程序和模块之间发送数据。我今天偶然发现了一件有趣的事情。
- 我通过输入密码与我的模块配对
- 我可以正常在我的应用和模块之间来回发送数据
- 在我的应用程序中,我断开与模块的连接并关闭我的应用程序。
- 在模块上,我将其密码更改为新值。
- 我重新打开了我的应用程序,仍然可以交换数据。我不需要再次配对。我的手机和模块在我第一次配对时(使用旧密钥)交换的所有安全信息似乎仍然有效,即使在更改模块上的 PIN 后也是如此。
- 然后我关闭我的应用程序并取消设备与蓝牙设置的配对。
- 之后,我将这两个设备配对,以确保密码更改实际上已被接受,并且确实足够了。我现在只能与新 PIN 码配对。
令我惊讶的是,在上述第 5 点中,即使没有更新我手机上的 PIN,一切仍然有效。我计划在向模块发送更改 PIN 的命令后使用反射调用 removeBond() 来解决这个问题,因为这对于我的特定用例来说已经足够了。但是,如果 PIN 更改可能由其他东西触发,那么我的手机将无法正常工作。
我的问题是这是否正常。蓝牙规格很长,所以我希望其他人知道这一点。我想在更改蓝牙设备的密码后,所有已经与之配对的设备都必须再次完成配对过程,这次是使用新的密码。但上述步骤表明情况并非如此。这是我的蓝牙模块(Bluegiga WT12)上的错误还是这是预期的行为?有没有人遇到过这种情况?
谢谢。
干杯!
【问题讨论】:
标签: bluetooth