我在 Android 上实现了 GATT 服务器和客户端应用程序。连接正常,我通过将 PERMISSION_READ/WRITE_ENCRYPTED_MITM 添加到所有 GattCharacteristics 来强制配对。
但是不同客户端的配对行为不同:
1) Pin 显示在客户端/中央(Samsung Galaxy S3 上的 Android 5)上,应插入服务器/外围设备(Nexus 5 上的 Android 7)。
2) 密钥显示在客户端/中央设备(Samsung 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);