dcloudio / dcloudio/uni-app

uni.onBluetoothAdapterStateChange 返回值错误

Open
#5,472 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
41.6k
Forks
3.7k
Avg merge
7h 6m
Merged PRs (30d)
6

Description

### 发行方式

None

### 具体平台

android 12

### 开发环境

macOS

### 项目创建方式

HBuilderX

### 依赖版本

HBuilder X: 4.57

### 问题描述

uni.onBluetoothAdapterStateChange 返回值错误

### 重现步骤

### 复现方式一
1. 调用 uni.openBluetoothAdapter()
2. 调用 uni.onBluetoothAdapterStateChange(), 监听蓝牙状态
3. 调用 uni.startBluetoothDevicesDiscovery(), 开始探索设备
4. 关闭系统蓝牙, 此时 uni.onBluetoothAdapterStateChange() 返回 {available: false, discovering: true}
5. 打开系统蓝牙, 此时 uni.onBluetoothAdapterStateChange() 返回 {available: true, discovering: true}

### 复现方式二
1. 调用 uni.openBluetoothAdapter()
2. 调用 uni.onBluetoothAdapterStateChange(), 监听蓝牙状态
3. 调用 uni.startBluetoothDevicesDiscovery()
4. 关闭系统蓝牙, 此时 uni.onBluetoothAdapterStateChange(), 返回 {available: false, discovering: true}
5. uni.stopBluetoothDevicesDiscovery() 此时 uni.onBluetoothAdapterStateChange(), 返回 {available: true, discovering: false}

### 期望行为

uni.onBluetoothAdapterStateChange() 与实际蓝牙/探索状态相同

### 实际行为

从表现来看 uni.onBluetoothAdapterStateChange() 的返回值 available 和 discovering 是根据调用蓝牙方法来标记的, 并不是根据实际状态来标记的

如果为解决"复现方式一"中第4步的问题, 在 uni.onBluetoothAdapterStateChange() 手动处理返回值并调用 uni.stopBluetoothDevicesDiscovery(), 则会出现"复现方式二"

### 截图或录屏

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.