柴先生
柴先生
  • 发布:2023-03-15 09:25
  • 更新:2023-03-15 09:25
  • 阅读:429

【报Bug】安卓蓝牙广播advertisData中数据丢失,ios端正常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 11 家庭中文版 22H2

HBuilderX类型: 正式

HBuilderX版本号: 3.7.3

手机系统: Android

手机系统版本号: Android 8.1

手机厂商: 小米

手机机型: Redmi 6A

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:
onLoad() {  
    //在页面加载时候初始化蓝牙适配器  
    uni.openBluetoothAdapter({  
        success: (e) => {  
            console.log("初始化蓝牙成功:" + e.errMsg);  
            // 初始化完毕开始搜索  
            this.startBluetoothDeviceDiscovery();  
        },  
    });  
},  
methods: {  
    // 初始化完毕开始搜索  
    startBluetoothDeviceDiscovery() {  
        this.bluetooth = [];  
        //在页面显示的时候判断是都已经初始化完成蓝牙适配器若成功,则开始查找设备  
        uni.startBluetoothDevicesDiscovery({  
            allowDuplicatesKey: true,  
            success: (res) => {  
                // 发现外围设备  
                uni.onBluetoothDeviceFound((res) => {  
                    res.devices.forEach((item) => {  
                        item.dataJson = this.ab2hex(item  
                            .advertisData).join(  
                                ',')  
                        item.data = this.ab2hex(item.advertisData)  
                        // item中广播数据,安卓和ios端数据不一致,ios 15.4  
                        console.log(item)  
                    });  
                });  
            },  
            fail: (res) => {  
                uni.showToast({  
                    icon: "none",  
                    title: "查找设备失败!",  
                    duration: 3000,  
                });  
                this.status = 0;  
            },  
        });  
    },  
    // 处理接收的数据  
    ab2hex(buffer) {  
       // 打印16进制数据  
       return Array.prototype.map.call(new Uint8Array(buffer), (x) => ('00' + x.toString(16)).slice(-2));  
       return hexArr;  
   },  

}

预期结果:

安卓和ios数据同步

实际结果:

advertisData中广播数据,
安卓和ios端数据不一致,ios 15.4
安卓缺少部分数据,ios正常

bug描述:

bug出现的前提是BLE蓝牙设备广播中两个包都有数据存在(广播包和响应包)
开启uni.onBluetoothDeviceFound后,解析advertisData的数据发现
安卓丢失广播包 (Advertising Data)数据,只有响应包数据
ios的数据正常,广播包 (Advertising Data)和 响应包 (Scan Response)都存在

2023-03-15 09:25 负责人:DCloud_Android_zl 分享
已邀请:

要回复问题请先登录注册