【uniapp】使用permission获取录音权限及实现录音功能

需求

app获取录音权限权限, 实现录音并且播放功能

实现

一. 使用permission获取录音权限

原博 : https://www.wanjunshijie.com/note/uniapp/3203.html

1.1 manifest.json 配置权限 android.permission.RECORD_AUDIO
1.2 permision使用和下载 ( 自行百度搜索即可 )
1.3 获取录音权限( 若未打开, 会自动弹窗 )
javascript 复制代码
		import permision from "@/utils/permission.js"
			open() {
				let env = uni.getSystemInfoSync().platform
				if (env === 'android') {
					permision.requestAndroidPermission('android.permission.RECORD_AUDIO').then((e) => {
						if (e === -1) {
							uni.showToast({
								title: '您已经永久拒绝录音权限,请在应用设置中手动打开',
								icon: 'none',
							})
						} else if (e === 0) {
							uni.showToast({
								title: '您拒绝了录音授权',
								icon: 'none',
							})
						} else if (e === 1) {
							this.show = true
						} else {
							uni.showToast({
								title: '授权返回值错误',
								icon: 'none',
							})
						}
					}).catch((err) => {
						uni.showToast({
							title: '拉起录音授权失败',
							icon: 'none',
						})
					})
				} else if (env === 'ios') {
					if (permision.judgeIosPermission("record"))
						this.show = true
					else
						uni.showToast({
							title: '您拒绝了录音授权,请在应用设置中手动打开',
							icon: 'none',
						})
				}
			},

二. 开始 / 停止 / 播放 录音

文档 : https://uniapp.dcloud.net.cn/api/media/record-manager.html#getrecordermanager

html 复制代码
	<view>
		<button @click="startRecord">开始录音</button>
		<button @click="endRecord">停止录音</button>
		<button @click="playVoice">播放录音</button>
	</view>
javascript 复制代码
		const recorderManager = uni.getRecorderManager();
		const innerAudioContext = uni.createInnerAudioContext();
		innerAudioContext.autoplay = true;
		
			startRecord() {
				console.log('开始录音');
				recorderManager.start();
			},
			endRecord() {
				console.log('录音结束');
				recorderManager.stop()
				recorderManager.onStop((res) => {
					console.log(res, '开始录音的回调')
					this.voicePath = res.tempFilePath;
				})
			},
			playVoice() {
				console.log('播放录音');

				if (this.voicePath) {
					innerAudioContext.src = this.voicePath;
					innerAudioContext.play();
				}
			},
相关推荐
陈随易8 小时前
bm2,Node.js 与 Bun 项目部署新选择
前端·后端·程序员
福兮说9 小时前
canvas 旋转图片的六个坑:四角被裁、Math.ceil 多出 1px 黑边、JPG 角发黑、翻转方向反了
前端·javascript·图像处理·canvas
传人once10 小时前
多图片上传预览功能如何写
前端·css·html·jquery·html5
Eric.4611 小时前
Wan‑Animate+MiniMax-H3 本地部署 AI 漫剧流水线:8G 显存动作迁移与动态分镜工程实战
前端·人工智能·comfyui·ai漫剧
库拉镜像AI牛牛12 小时前
短剧内容自动化生产:知漫剧工作室落地教程
大数据·服务器·前端·人工智能·语音识别
律宏阔12 小时前
Flutter 列表图片内存优化:CachedNetworkImage 与 ClipRRect 的取舍
前端·flutter
行者全栈架构师12 小时前
【鸿蒙心迹】相册文搜图工程化落地:HarmonyOS 7.0 端侧 AI 检索全链路实战与 5 个踩坑解法
前端
律宏阔13 小时前
Dart 3 Record:解决 Future.wait 异构返回值的类型问题
前端·flutter
Seraphina3613 小时前
DVWA(XSS Reflected/Stored High,CSRF Low)
前端·xss·csrf
默_笙14 小时前
🍔 中间件不只是打日志:四个钩子、一次短路,和自带的工具
前端·javascript