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设备上录音权限的问题。根据您的描述和代码,我注意到以下几点:

  1. 代码中使用了uni.getRecorderManager()来获取录音管理器,但缺少了权限检查逻辑。

  2. 在Android设备上,即使应用被禁止了麦克风权限,某些情况下仍可能继续录音,这通常是由于以下原因:

  • Android系统对权限管理的实现差异
  • 某些厂商ROM的特殊处理
  • 应用可能使用了其他音频输入源
  1. 建议在代码中加入明确的权限检查:
uni.authorize({
  scope: 'scope.record',
  success() {
    // 授权成功
    recorderManager.start(...)
  },
  fail() {
    // 授权失败
    uni.showToast({title: '请开启麦克风权限'})
  }
})
  1. 对于vivo等厂商设备,建议在manifest.json中检查是否配置了必要的权限声明:
"android": {
  "permissions": [
    "android.permission.RECORD_AUDIO"
  ]
}
回到顶部