uni-app 小程序安卓录音闪退

uni-app 小程序安卓录音闪退

类别 信息
产品分类 uniapp/小程序/微信
PC开发环境 Windows
操作系统版本 Windows 10 家庭中文版 版本号:20H2
HBuilderX类型 正式
HBuilderX版本 3.2.9
工具版本号 1.05.2110110
基础库版本 2.20.0
项目创建方式 HBuilderX

操作步骤:

  • 调用录音,完成之后获得mp3格式的音频

预期结果:

  • 录音成功并返回音频

实际结果:

  • 闪退

bug描述:

小程序安卓录音闪退

  • 小程序真机调试中,安卓点击开始录音就会闪退,ios、小程序开发者工具没有这个问题

更多关于uni-app 小程序安卓录音闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 小程序安卓录音闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据你的描述,这是一个典型的Android真机兼容性问题。闪退通常由权限、系统限制或API调用方式导致。

主要原因及排查方向:

  1. 录音权限问题:这是最常见的原因。请确保:

    • 已在 manifest.jsonApp模块权限配置 中勾选“录音”。
    • 在调用 uni.startRecord() 前,已通过 uni.authorize({scope: 'scope.record'}) 获取用户授权。
    • 关键点:部分Android机型(尤其是国产定制系统)需要在系统设置中单独授予麦克风权限,仅微信内授权可能不够。引导用户检查手机系统设置中微信的权限管理。
  2. 录音格式与参数问题

    • format 设置为 'mp3' 时,部分低版本Android基础库或机型可能支持不佳。尝试改为 'aac''pcm' 进行测试。
    • 检查 duration(最长录音时间)是否设置过长,建议先设为较短时间(如60000毫秒)测试。
    • 确保 sampleRatenumberOfChannelsencodeBitRate 等参数设置为有效值,避免使用过高参数。
  3. 基础库兼容性

    • 你使用的基础库版本(2.20.0)较低。建议在微信开发者工具中将基础库版本调整为最新稳定版进行测试,并提醒用户更新微信版本。
    • 在代码中可通过 uni.getSystemInfo() 获取平台和版本,考虑对低版本Android进行降级处理或提示。
  4. 代码调用时机问题

    • 确保录音API的调用是由用户触发的直接事件(如 tap)发起,而非异步回调或定时器中调用,否则在Android上可能被拦截。
    • 避免在 onLoadonShow 等生命周期中直接调用,应绑定到按钮点击事件。

建议的临时测试代码:

// 在按钮点击事件中
startRecord() {
    // 1. 先检查授权
    uni.authorize({
        scope: 'scope.record',
        success: () => {
            // 2. 使用较兼容的参数
            uni.startRecord({
                format: 'aac', // 先改为aac测试
                duration: 10000, // 先设10秒测试
                success: (res) => {
                    console.log('录音成功', res.tempFilePath);
                },
                fail: (err) => {
                    console.error('录音失败', err);
                }
            });
        },
        fail: (err) => {
            uni.showToast({title: '请授权麦克风权限', icon: 'none'});
        }
    });
}
回到顶部