确定特定会话的蓝牙版本

时间:2016-07-24 09:08:11

标签: android winapi bluetooth android-bluetooth

我正在Android和Windows设备之间编写P2P通信应用程序,它依赖于蓝牙作为下划线通信渠道。我想检查每个会话使用的蓝牙协议的版本(即2.x,4.0,4.1,4.2等),以便做出相应的安全决策(2.x不是很安全,4.0更多安全,4.1是最安全的,等等)。

如何在Windows或Android上使用API​​实现?我必须检查每个会话和会话,因为根据我的理解,蓝牙版本被确定为双方的最低能力。

3 个答案:

答案 0 :(得分:2)

首先,2.1 SSP之后的蓝牙版本,例如2.1,3.0,4.x,基本上是相同的安全(但如果你在谈论LE安全性的另一个故事),你不需要实际判断LMP版本。

不幸的是,Android不会将远程版本导出到应用程序,较低级别(Bluedroid)" BTM_ReadRemoteVersion",此功能可以获得远程LMP版本。

您的理解是偏向正确的,"蓝牙版本被确定为双方的最低能力。",主机和控制器的功能都是由其最低版本定义的。

答案 1 :(得分:0)

试试这个

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Set<BluetoothDevice> Devices = mBluetoothAdapter.getBondedDevices();

List<String> s = new ArrayList<String>();
for(BluetoothDevice bt : pairedDevices)
   s.add(bt.getVersion());

答案 2 :(得分:0)

我找到了一种使用Android logcat确定版本的方法。在BT连接期间,我寻找这一行:

  

bt_btif_dm:远程版本信息[aa:bb:cc:dd:ee:ff]:8,2,1

第一个数字(8)是LMP版本,对应于核心蓝牙版本。 (在这种情况下,8表示蓝牙4.2)

这并不能完全解决我的问题,因为从Android JB开始,应用程序无法再读取logcat(除了它自己的日志)。但是,这是一个良好的开端......如果我发现其他任何内容,将会更新。