uni-app 安卓14版本低耗蓝牙uni.setBLEMTU(OBJECT)设置失败

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app 安卓14版本低耗蓝牙uni.setBLEMTU(OBJECT)设置失败

开发环境 版本号 项目创建方式
Windows 10 HBuilderX
HBuilderX 4.28
第三方开发者工具 1.06.2405020
基础库 3.5.5

示例代码:

uni.setBLEMTU({
deviceId: uuidObj.deviceID,
mtu: 500
})

操作步骤:

uni.setBLEMTU({
deviceId: uuidObj.deviceID,
mtu: 500
})

预期结果:

{errCode: 0}

实际结果:

{errCode: -1, errno: 1500104, errMsg: "setBLEMTU:fail:internal error"}

bug描述:

【报Bug】安卓14版本低耗蓝牙uni.setBLEMTU(OBJECT)设置失败


1 回复

针对你提到的在uni-app中,安卓14版本上使用uni.setBLEMTU(OBJECT)设置低耗蓝牙MTU(Maximum Transmission Unit)失败的问题,这通常与Android系统权限管理、蓝牙API兼容性或uni-app框架本身对最新Android版本的适配情况有关。以下是一些可能的解决思路和代码示例,帮助你进行调试和问题解决。

1. 确认权限

首先,确保你的应用已经请求并获得了必要的蓝牙权限。在manifest.json中添加蓝牙权限:

"plus": {
    "distribute": {
        "android": {
            "permissions": [
                "android.permission.BLUETOOTH",
                "android.permission.BLUETOOTH_ADMIN",
                "android.permission.ACCESS_FINE_LOCATION" // 对于Android 12及以上版本,定位权限可能也影响蓝牙功能
            ]
        }
    }
}

2. 检查API调用

确保uni.setBLEMTU的调用格式正确,并且设备支持MTU更改。以下是一个基本的调用示例:

uni.createBLEConnection({
    deviceId: 'your-device-id',
    success: function (res) {
        uni.setBLEMTU({
            deviceId: 'your-device-id',
            mtu: 23, // 根据需要设置MTU大小,范围通常是23到517
            success: function (mtuRes) {
                console.log('MTU set successfully:', mtuRes);
            },
            fail: function (err) {
                console.error('MTU set failed:', err);
            }
        });
    },
    fail: function (err) {
        console.error('BLE connection failed:', err);
    }
});

3. 捕获错误并处理

fail回调中打印出更详细的错误信息,以便进一步分析:

fail: function (err) {
    console.error('MTU set error:', err.errMsg, err.code, err.stack);
}

4. 系统兼容性检查

考虑到Android 14可能引入了新的蓝牙管理策略或API变更,查阅最新的Android开发者文档,确认setBleMtu方法在Android 14上的行为是否有变化。如果官方文档指出有特定限制或需要额外的步骤,应相应调整代码。

5. 框架和插件更新

确保你的uni-app框架和相关蓝牙插件是最新版本,因为开发者可能已经修复了旧版本中的兼容性问题。

如果上述步骤仍未解决问题,建议查阅uni-app社区或官方GitHub仓库中的issue,看看是否有其他开发者遇到并解决了相同的问题。同时,考虑向uni-app官方提交bug报告,以获得更专业的支持。

回到顶部