安卓蓝牙配对

17


有人能告诉我如何查找手机连接到其他设备时使用的配对技术吗?
我有一个Nexus S(Android 2.3.3)和一个BT设备(Bluetooth2.1 + EDR)。
当我尝试将它们配对时,我不需要输入任何密码。由于两个设备都具有蓝牙2.1,我想知道它们使用了哪种配对技术。
我们可以指定手机使用的配对技术吗?

2个回答

18

当两个设备的蓝牙版本均达到2.1及以上时,会使用安全简单配对(SSP)而不是传统配对方式(传统配对需要用户在两个设备上输入相同的PIN码才能连接,而大多数情况下使用的都是常见的0000或1234组合)。

安全简单配对简化了过程并且消除了需要输入PIN码的需求,它会自动为配对过程生成6位数字密码作为一部分,用户可能只需要在一个或多个设备上验证/输入密码。

安全简单配对(SSP)还有几种不同的关联模式,要使用的关联模型取决于试图配对的设备上显示和输入功能的支持情况。

当其中一个设备没有显示器或输入端口以输入6位数字时,就会使用“Just works”关联模型,在此期间在配对时不需要用户输入。在Android中,当使用createInsecureRfcommSocketToServiceRecord() API时,可以强制执行此模型。这种模型通常用于与耳机、其他没有任何显示或输入功能的小型设备进行配对。

其他关联模型包括:

  • 数字比较 - 两个设备上显示一个6位数字,询问用户确认是否相同。当两个设备都具有显示和能够输入“是/否”时使用。

  • 密码输入 - 当一个设备只有输入功能而没有输出显示功能,另一个设备具有输出/显示功能时,用户将被要求在只能输入的设备上输入在显示设备上显示的6位数字。

  • 外带式 - 设备通过不同的通道(蓝牙之外)交换配对信息,例如NFC或其他安全机制。


1
谢谢您的回复。我知道这些关联模式。我想知道在建立连接时如何找出正在使用哪个模式。我尝试使用Desire连接同一设备。它显示“只需操作”模式,连接成功。但是在Nexus S上无法实现。如何找出与Nexus S连接时出了什么问题。 - Ashwini Shahapurkar
渴望和Nexus S都是2.3.3吗?如果是的话,行为应该是相同的...不能连接可能是因为其他原因。 - Dennis Mathews
2
Desire是2.2,Nexus是2.3.3。我以为这是SDK的bug,所以将Nexus升级到了2.3.3,但它在2.2上运行正常。那么这是设备中bluez实现的bug吗? - Ashwini Shahapurkar
1
是否有可能强制关联模型使用某种特定方式?(例如,即使两个设备都有键盘,也可以进行数字比较) - Thibaut D.

4
你可以通过嗅探蓝牙流量或记录日志来确定使用的技术。在Nexus-S上,使用$adb shell hcidump -XVt命令将显示日志。如果正在交换I/O能力,则为蓝牙2.1配对。
另一种选择是在init.herring.rc文件中启用bluetoothd日志记录,然后您可以确定使用的配对方法。
在您的情况下,最有可能是蓝牙2.1配对,问题出在其他地方。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接