uniapp 录音弹窗
时间: 2025-07-05 19:42:49 浏览: 19
### 录音功能与弹窗提示的实现
在 UniApp 中实现录音功能并结合弹窗提示的操作,可以通过 `uni.getRecorderManager` 方法管理录音器,并利用 `uni.showModal` 提供用户交互反馈。以下是具体实现方式:
#### 1. **初始化录音器**
通过 `uni.getRecorderManager()` 获取全局唯一的录音管理器实例。
```javascript
const recorderManager = uni.getRecorderManager();
recorderManager.onStart(() => {
console.log('录音开始');
});
recorderManager.onStop((res) => {
console.log('录音结束', res.tempFilePath); // 输出临时文件路径
});
```
此部分代码用于监听录音状态的变化[^1]。
#### 2. **设置录音参数**
在启动录音前,需定义录音的相关配置项。
```javascript
let options = {
duration: 60000, // 最大录制时长 (ms),默认 60s
sampleRate: 44100, // 采样率,默认 16000
numberOfChannels: 1, // 录音通道数,默认单声道
encodeBitRate: 96000, // 编码码率,默认 32kbps
format: 'mp3' // 音频格式,默认 aac
};
```
这些选项可以根据实际需求调整。
#### 3. **请求权限**
由于录音涉及敏感权限,在 Android 平台上需要显式获取用户的授权许可。
```javascript
// 检查是否已授予权限
async function checkPermission() {
try {
const authStatus = await new Promise(resolve => {
uni.authorize({
scope: 'scope.record',
success: () => resolve(true),
fail: () => resolve(false)
});
});
if (!authStatus) {
handleNoPermission();
}
} catch (error) {
console.error(error);
}
}
function handleNoPermission() {
uni.showModal({
title: '未授予录音权限',
content: '请前往应用设置页面开启录音权限',
confirmText: '去设置',
cancelText: '取消',
success(res) {
if (res.confirm) {
openSettingsPage();
}
}
});
}
```
上述逻辑实现了当用户拒绝权限时提供引导至设置页的功能[^2]。
#### 4. **触发录音操作**
结合按钮事件绑定录音行为。
```html
<button @click="startRecord">开始录音</button>
<button @click="stopRecord">停止录音</button>
<script>
export default {
methods: {
startRecord() {
this.checkPermission().then(() => {
recorderManager.start(this.options);
uni.showToast({ title: '正在录音...', icon: 'none' });
});
},
stopRecord() {
recorderManager.stop();
uni.showToast({ title: '录音已完成', icon: 'success' });
}
}
};
</script>
```
以上代码片段展示了如何将录音功能嵌入到界面交互中。
#### 5. **处理异常情况**
对于可能发生的错误(如设备不支持、无可用麦克风等),应提前做好捕获机制。
```javascript
recorderManager.onError(err => {
console.error('录音发生错误:', err.errMsg || JSON.stringify(err));
uni.showModal({
title: '录音失败',
content: `${err.errMsg ? err.errMsg : ''}`,
showCancel: false,
success() {}
});
});
```
这部分确保即使出现问题也能及时通知给用户。
---
###
阅读全文
相关推荐













