Android上的BLE外设配对引脚

Android上的BLE外设配对引脚,第1张

概述我在Android上实现了GATT服务器和客户端应用程序.连接正常,我通过将PERMISSION_READ/WRITE_ENCRYPTED_MITM添加到所有GattCharacteristics中来强制配对.但是配对行为在不同的客户端上有所不同:1)针脚显示在客户端/中央(三星GalaxyS3上为Android5),应插入服务器/外围设备(Nexus

我在Android上实现了GATT服务器和客户端应用程序.连接正常,我通过将PERMISSION_READ / WRITE_ENCRYPTED_MITM添加到所有Gattcharacteristics中来强制配对.

但是配对行为在不同的客户端上有所不同:

1)针脚显示在客户端/中央(三星galaxy S3上为AndroID 5),应插入服务器/外围设备(Nexus 5上为AndroID 7).

2)密码同时显示在客户端/中央设备(三星galaxy S3上的AndroID 5)和服务器/外围设备(Nexus 7上的AndroID 6)上

3)与windows或iOS配对失败,因为服务器/外围设备需要输入引脚.

我期望并且想要发生的是:

引脚显示在服务器/外围设备上,并且必须插入客户端/中央设备上

有什么方法可以配置该行为?

提前致谢!

编辑

这是我的设置:

BluetoothGattService gattService = new BluetoothGattService(    serviceUUID, BluetoothGattService.SERVICE_TYPE_PRIMARY);gattService.addCharacteristic(new BluetoothGattCharacteristic(    charReadUUID,    BluetoothGattCharacteristic.PROPERTY_READ,    BluetoothGattCharacteristic.PERMISSION_READ_ENCRYPTED_MITM));gattService.addCharacteristic(new BluetoothGattCharacteristic(    charWriteUUID,    BluetoothGattCharacteristic.PROPERTY_WRITE,    BluetoothGattCharacteristic.PERMISSION_WRITE_ENCRYPTED_MITM));gattServer.addService(gattService);...AdvertiseSettings settings = new AdvertiseSettings.Builder()    .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_BALANCED)    .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH)    .setConnectable(true)    .build();AdvertiseData data = new AdvertiseData.Builder()    .setIncludeTxPowerLevel(false)    .addServiceUuID(serviceUUID)    .build();BluetoothLeAdvertiser advertiser = adaper.getBluetoothLeAdvertiser()advertiser.startAdvertising(settings, data, callback);

解决方法:

摘要:将客户端的I / O功能设置为“仅键盘”.

说明:

我不太确定系统“幕后”会发生什么.但是我可以告诉您根据BLE CoreSpec应该发生什么.首先请参阅CoreSpec V4.2,第1卷.第三部分,H章. 2.3.5.1,表2.7& 2.8.在此定义了使用哪种配对,具体取决于身份验证要求和设备的I / O功能.

所需的内容描述为“密码输入:响应者显示,发起者输入”.如果使用旧式配对(根据Bluetooth V4.0配对),并且如果:

>服务器(响应者)具有显示屏AND
>客户端(发起方)具有键盘AND
>服务器和客户端都没有显示器和键盘.

(并且,如果未使用OOB数据并且强制执行了MITM,但我假设这样做是给定的.)请注意,如果客户端和服务器都具有显示器和键盘,则默认情况是客户端显示并由服务器输入.看来,如果您的协议自动处理配对,它也会自动选择CoreSpec中定义的配对方法.

因此,您所看到的对应于不同服务器的不同I / O功能.看来您的客户端具有显示器和键盘,因此,如果您使用带有显示器和键盘的服务器,客户端将显示密码,响应者将等待输入(适合您的情况1).对于案例2,我们有数值比较;仅当客户端和服务器都支持LE安全连接(根据Bluetooth V4.2配对)时,才有可能.

对于情况3,我不知道发生了什么,但这可能是AndroID系统和iOS系统不能很好地协同运行的问题(但我不知道为什么).

由于配对似乎在此处已完全自动化,因此更改内容的唯一可能性是更改I / O功能.应该有一个更改这些功能的功能,请查阅手册.如果您不想在客户端上使用显示器,请将其I / O功能设置为“仅键盘”,它将显示您期望的行为.(*)

(*)仅在使用旧式配对时成立.如果两个设备均支持LE安全连接,则建议您使用此较新的配对协议,因为它消除了旧协议的安全性问题. (不过,我认为在这种情况下,无论如何都会自动使用较新的协议.)

总结

以上是内存溢出为你收集整理的Android上的BLE外设配对引脚全部内容,希望文章能够帮你解决Android上的BLE外设配对引脚所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1093748.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存