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