UNIAPP高性能录音组件:支持后台、息屏录制

下载地址:https://ext.dcloud.net.cn/plugin?id=26653

1. 插件简介

muzi-audio-recorder 是一款基于 Vue3 Options API 开发的高性能原生录音组件。它专为 UniApp 生态设计,支持暂停、续录、后台录音及息屏录制,具有极简的集成方式和高度美观的 UI 设计。

  • 适用场景:语音笔记、社交聊天、音频采集、长时间会议记录等。

2. 功能特性

  • 全状态控制:支持开始、停止及删除录音。
  • 无时长限制:支持长时间录制,性能稳定。
  • 后台/息屏录音:在 App 切后台或手机息屏状态下依然保持录制。
  • 暗黑模式:原生适配系统暗黑主题,视效丝滑。
  • 零依赖:不使用任何第三方 UI 库,代码精简,体积小巧。
  • 管理方便:内置录音列表及播放器,支持录音试听与清空。

3. 兼容性

平台 最低版本要求 备注
Android 10.0+ 需配置动态权限
iOS 12.0+ 需配置后台模式
小程序 支持 部分后台能力受限

4. 快速上手

4.1 安装方式

本插件符合 uni_modules 规范,直接下载并导入项目的 uni_modules 目录即可。

4.2 权限配置 (重要)

为了确保后台录音息屏录音 功能正常,请在 manifest.json 中进行如下配置:

Android 权限声明:

json 复制代码
/* app-plus -> distribute -> android -> permissions */
[
  "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
  "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
  "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>"
]

iOS 后台模式:

json 复制代码
/* app-plus -> distribute -> ios -> UIBackgroundModes */
["audio"]

5. 使用示例

由于支持 easycom,你无需引入组件即可直接在页面中使用。

html 复制代码
<template>
  <view>
    <muzi-audio-recorder ref="recorder"></muzi-audio-recorder>
    
    <button @click="getAudioData">获取已录制文件</button>
  </view>
</template>

<script>
export default {
  methods: {
    getAudioData() {
      // 通过 ref 拿到组件内部的音频列表
      const list = this.$refs.recorder.audioList;
      console.log('当前录音列表:', list);
    }
  }
}
</script>

6. API 文档

6.1 组件 Ref 属性

通过 ref 访问组件实例,可以获取以下核心数据:

属性名 类型 说明
audioList Array 存储已完成录音的数组。对象结构:{ path, duration, createTime }
recordStatus String 当前录音状态:idle (空闲), recording (录音中), paused (已暂停)
currentDuration Number 当前正在录音的时长(秒)

6.2 录音对象结构

audioList 中的每个对象包含以下字段:

  • path: 录音文件的临时存放路径。
  • duration: 录音时长(单位:秒)。
  • createTime: 录音完成的时间戳字符串。

7. 注意事项

  1. 真机调试 :录音属于原生功能,请务必在真机环境下运行,H5 模式仅供 UI 预览。
  2. 存储空间:录音文件默认存储在应用临时目录,建议在业务逻辑中及时上传至服务器或移动到永久目录。
  3. 音频焦点:录音时如果系统接收到电话或启动其他音频应用,录音可能会由于硬件冲突被强制停止。