a***@qq.com
a***@qq.com
  • 发布:2023-02-13 14:02
  • 更新:2023-09-12 08:31
  • 阅读:1515

【报Bug】蓝牙无法完全断开的问题

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 3.6.18

手机系统: Android

手机系统版本号: Android 12

手机厂商: 小米

手机机型: 小米12

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

页面B进入调用uni.openBluetoothAdapter,然后连接蓝牙设备进行通讯, unload调用uni.closeBluetoothAdapter。页面A做一个按钮,跳转到页面B。在页面A点击按钮,进入页面B,返回,再点页面A的按钮,快速操作几次。蓝牙通讯因为快速的多次进入而连接混乱,造成uni.closeBluetoothAdapter无法正确释放蓝牙设备

预期结果:

unload调用uni.closeBluetoothAdapter可以完全的释放蓝牙的连接的设备与释放蓝牙的资源

实际结果:

unload调用uni.closeBluetoothAdapter,无法完全的释放资源

bug描述:

uni.openBluetoothAdapter({  
                    success: e => {  
                        uni.startBluetoothDevicesDiscovery({  
                            success: e => {  
                                _this.searchLoad = true;  
                                _this.ble_status = '搜索中...';  
                                _this.is_searching = true;  
                                console.log('开始搜索蓝牙设备:' + e.errMsg);  
                                console.log(JSON.stringify(e));  
                                this.searchLoad = true;  
                            },  
                            fail: e => {  
                                console.log('搜索蓝牙设备失败,错误码:' + e.errCode);  
                                if (e.errCode !== 0) {  
                                    initTypes(e.errCode);  
                                }  
                            }  
                        });  
                    }  
                });

使用openBluetoothAdapter初始化蓝牙, 每次离开页面都会做以下的代码断开蓝牙连接与蓝牙设备关闭

uni.closeBLEConnection({  
                        deviceId: _this.deviceId,  
                        success(res) {  
                            _this.deviceConnected = false;  
                            _this.btn_conn_dis = false;  
                            _this.btn_disconn_dis = true;  
                            console.log(JSON.stringify(res))  
                            uni.closeBluetoothAdapter({  
                                success: res => {  
                                    _this.deviceConnected = false;  
                                    _this.deviceState = "不可用";  
                                    console.log('断开蓝牙模块成功');  
                                    _this.searchLoad = false;  
                                    _this.adapterState = [];  
                                    _this.btn_conn_dis = true;  
                                    _this.btn_disconn_dis = true;  
                                    console.log(JSON.stringify(res));  
                                    // toast('断开蓝牙模块');  
                                }  
                            });  
                        }  
                    })

问题在于多次进入页面,快速的进入,退出,进入页面,之后蓝牙设备调用uni.closeBluetoothAdapter无法完全关闭蓝牙设备,提示是成功,但是蓝牙还会连接着设备,无法释放。无法搜索到之前连接的蓝牙设备
在APP上存在这个问题,在微信小程序上也会存在这样的问题。但是如果使用wx.closeBluetoothAdapter,在微信小程序上是可以很好的关闭掉蓝牙设备

2023-02-13 14:02 负责人:无 分享
已邀请:
v***@foxmail.com

v***@foxmail.com

请问您的问题解决了吗?我这边也遇到这个问题 api返回断开成功状态 但硬件设备蓝牙依旧连接着

n***@163.com

n***@163.com

解决了吗,我也遇到了,

8***@qq.com

8***@qq.com - 小虾米

俺也一样,出现了 n+1 重复且叠加的数据

远古烂泥

远古烂泥 - 本人太帅无需介绍

我也遇到了,调用断开方法返回true了,但是设备还是连接着,ios基座测试的

要回复问题请先登录注册