我正在Android和Windows设备之间编写P2P通信应用程序,它依赖于蓝牙作为下划线通信渠道。我想检查每个会话使用的蓝牙协议的版本(即2.x,4.0,4.1,4.2等),以便做出相应的安全决策(2.x不是很安全,4.0更多安全,4.1是最安全的,等等)。
如何在Windows或Android上使用API实现?我必须检查每个会话和会话,因为根据我的理解,蓝牙版本被确定为双方的最低能力。
答案 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(除了它自己的日志)。但是,这是一个良好的开端......如果我发现其他任何内容,将会更新。