uni-app安卓app录音禁止了麦克风权限还可以录音
uni-app安卓app录音禁止了麦克风权限还可以录音
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | Windows 11 | HBuilderX |
产品分类:
uniapp/App
PC开发环境操作系统:
Windows
HBuilderX类型:
Alpha
HBuilderX版本号:
4.61
手机系统:
Android
手机系统版本号:
Android 13
手机厂商:
vivo
手机机型:
IQOOZ7i
页面类型:
vue
vue版本:
vue3
打包方式:
云端
示例代码:
<template> <view> <text class="btn" [@longpress](/user/longpress)="startRecord" [@touchend](/user/touchend)="stopRecord" [@touchcancel](/user/touchcancel)="stopRecord">{{ isTouch ? '当前正在录音': '按住录音,松开结束' }}</text> <text>{{tempFilePath}}</text> </view> </template> <script setup> /* 计时器 */ const timer = ref<number|null>(null) /* 最大时长 */ const maxDuration = 30 /* 录音管理器 */ const recorderManager = uni.getRecorderManager() /* 录音时长 */ const recordingTime = ref(0) /* 录音地址 */ const tempFilePath = ref('') /* 是否按下录音按钮 */ const isTouch = ref(false) /* 录音停止事件 */ recorderManager.onStop((res: RecorderManagerOnStopResult) => { if(timer.value == null) return clearInterval(timer.value!) timer.value = null isTouch.value = false tempFilePath.value = res.tempFilePath console.log(res.tempFilePath) }) /* 录音错误 */ recorderManager.onError((err: any) => { isTouch.value = false if(timer.value == null) return clearInterval(timer.value!) timer.value = null console.log('录音错误', err) }) /* 开始录音 */ const startRecord = () => { recordingTime.value = 0 isTouch.value = true recorderManager.start({ // duration: maxDuration , // 设置录音时长 format: 'mp3' // 录音格式 }) timer.value = setInterval(() => { if(recordingTime.value >= maxDuration){ uni.showToast({ title: '当前录音时长过长,已停止录音' , position: 'bottom' }) if(timer.value == null) return clearInterval(timer.value!) timer.value = null } else{ recordingTime.value++ } }, 1000) } /* 停止录音 */ const stopRecord = () => { console.log('停止录音') recorderManager.stop() } onBeforeUnmount(() => { if(timer.value == null) return clearInterval(timer.value!) timer.value = null }) </script> <style lang="scss"> .btn{ line-height: 40px; text-align: center; width: 100%; background-color: $uni-bg-color-grey; } </style>更多关于uni-app安卓app录音禁止了麦克风权限还可以录音的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app安卓app录音禁止了麦克风权限还可以录音的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个关于uni-app在Android设备上录音权限的问题。根据您的描述和代码,我注意到以下几点:
-
代码中使用了uni.getRecorderManager()来获取录音管理器,但缺少了权限检查逻辑。
-
在Android设备上,即使应用被禁止了麦克风权限,某些情况下仍可能继续录音,这通常是由于以下原因:
- Android系统对权限管理的实现差异
- 某些厂商ROM的特殊处理
- 应用可能使用了其他音频输入源
- 建议在代码中加入明确的权限检查:
uni.authorize({
scope: 'scope.record',
success() {
// 授权成功
recorderManager.start(...)
},
fail() {
// 授权失败
uni.showToast({title: '请开启麦克风权限'})
}
})
- 对于vivo等厂商设备,建议在manifest.json中检查是否配置了必要的权限声明:
"android": {
"permissions": [
"android.permission.RECORD_AUDIO"
]
}