【FAQ】【HarmonyOS】鸿蒙java开发关于蓝牙通信api的传输数据大小设置

 【问题描述】

在使用BlePeripheralDevice类的writeCharacteristic方法向蓝牙传输数据,如果数据长度长一点,通过串口工具发现蓝牙设备端是会分包接受数据的各个部分,那么鸿蒙java中有方法可以将数据一次传输给蓝牙设备,从而避免设备分包接受数据的现象吗?

 

【解决方案】

参考如下链接实现:

BLE蓝牙低功耗

1、把代码复制到项目中,但是文档描述BLE设备间通信对数据大小有限制,一次性传输的数据最大不超过20字节,超过部分将无法传输。如下如图所示

cke_2985.png

2、如果想扩大传输字节,可以对项目代码做出如下的修改,把BleCentralAbilitySlice的java的servicesDiscoveredEvent回调方法里添加如下代码

  @Override
        public void servicesDiscoveredEvent(int status) {
            super.servicesDiscoveredEvent(status);
            if (status == BlePeripheralDevice.OPERATION_SUCC) {
                boolean isok=                   peripheralDevice.requestBleMtuSize(251);
                HiLog.error(LABEL,"requestBleMtuSize===>>>"+String.valueOf(isok));
                for (GattService service : peripheralDevice.getServices()) {
                    checkGattCharacteristic(service);
                }
            }
        }

3、运行效果

外围

cke_7415.png

中心

cke_8691.png

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

posted @ 2022-08-10 08:34  华为开发者论坛  阅读(100)  评论(0编辑  收藏  举报