xfxTab
xfxTab
  • 发布:2026-03-30 17:14
  • 更新:2026-03-30 17:17
  • 阅读:19

【报Bug】小米手机连接蓝牙后。手动关闭手机蓝牙,再次打开蓝牙,就连接不上设备了。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 5.01

手机系统: 全部

手机系统版本号: Android 12

手机厂商: 华为

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

测试过的手机:

小米手机都有这个问题

操作步骤:

连接成功,手动关闭蓝牙,再次打开,就连不上了,code返回-1

预期结果:

小米设备可以正常连接

实际结果:

无法正常连接,影响使用

bug描述:

测试发现,小米手机关闭蓝牙监听不到设备的断开/连接状态,只能监听到蓝牙的开关状态,其它品牌均可以。调试发现再次连接返回的code是-1(文档说明仍是连接状态),但是再次api断开连接却又报10013错误;感觉像是底层没有同步蓝牙的连接状态,希望官方测测看。

2026-03-30 17:14 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

作为DCloud官方人员,对该bug反馈评审如下:

评审结论

该反馈描述了一个有效的平台兼容性问题,但反馈内容存在信息缺失和矛盾,需要补充完善。

内容完整性评估

缺失项:

  1. 缺少代码示例 - 未提供蓝牙连接、断开的关键代码,无法判断API调用方式是否正确
  2. 复现步骤过于简略 - 仅描述"连接成功,手动关闭蓝牙",缺少具体的API调用序列(如uni.createBLEConnectionuni.closeBLEConnection的执行时机)
  3. 设备信息矛盾 - 标题明确说明"小米手机",但分类信息中"手机厂商"填写为"华为",且未提供具体机型(如小米13、Redmi K70等)
  4. 缺少关键日志 - 未提供完整的错误日志和API调用返回的详细数据

建议补充:

  • 提供完整的蓝牙操作流程代码(包括连接、监听、断开逻辑)
  • 明确具体的小米机型和MIUI版本
  • 提供uni.onBLEConnectionStateChange的监听代码和日志输出

技术问题分析

根据知识库记录,该问题属于已知的Android平台兼容性问题

  1. 错误码分析(依据结构化文档):

    • 返回 -1 (already connect):表明底层仍认为设备处于连接状态
    • 断开连接报 10013 (invalid_data):可能因蓝牙关闭后deviceId失效或状态异常导致
  2. 相似案例(对话知识库记录):
    其他开发者反馈过相同场景:"小米手机关闭蓝牙后uni.closeBLEConnection回调不触发,重新打开后提示已连接但实际未连接"。

  3. 问题根源
    当用户手动关闭系统蓝牙时,部分小米手机系统不会主动通知应用层蓝牙连接已断开,导致uni-app框架内部维护的连接状态与实际系统状态不同步。

临时解决方案

在等待官方修复前,建议尝试以下替代方案:

  1. 使用plus蓝牙API(推荐):
    可尝试使用 plus.bluetooth.closeBLEConnection 替代uni API,参考文档:HTML5+蓝牙文档

  2. 状态监听优化
    在监听蓝牙适配器状态变化时,增加强制重置逻辑:

    uni.onBluetoothAdapterStateChange((res) => {  
     if (!res.available) {  
       // 蓝牙被关闭时,强制清理本地连接状态缓存  
       // 重新打开蓝牙后,先执行uni.closeBLEConnection清理,再重新连接  
     }  
    })  

    本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

  3. 重连策略调整
    当遇到返回码-1时,建议先尝试调用uni.getConnectedBluetoothDevices获取已连接设备列表,确认状态后再决定是否需要强制断开。

后续处理建议

请补充以下信息以便进一步定位:

  1. 具体的小米机型和MIUI版本号
  2. 蓝牙设备类型(BLE经典蓝牙/低功耗蓝牙)
  3. 关键代码片段(特别是连接和断开部分的逻辑)
  4. 完整的控制台日志(包含蓝牙状态变化的全过程)

该问题已记录,后续版本将优化小米手机在蓝牙开关状态变化时的连接状态同步机制。

内容为 AI 生成,仅供参考

要回复问题请先登录注册