可用,但需 manifest 配置权限 + 运行时申请双到位;iOS 需 NSMicrophoneUsageDescription 非空,Android 需声明 RECORD_AUDIO,HarmonyOS 需 ohos.permission.MICROPHONE;临时路径文件须 saveFile 保存至持久目录。
uni.getRecorderManager() 在 App 端是否可用?
可用,但有严格前提:仅限
平台(Android/iOS/HarmonyOS),
和
不能直接用它调用原生麦克风——h5 需走
+
,小程序则受限于平台策略(如微信禁止后台录音)。App 端的
是 DCloud 封装的原生桥接 API,底层映射到 Android 的
、iOS 的
、HarmonyOS 的
。
权限申请失败或没弹窗,常见原因和补救步骤
App 端权限不通过 JS 单独触发,必须「manifest 配置 + 运行时申请」双到位:
中必须声明
(Android)或
(HarmonyOS),否则
直接静默失败
iOS 需在
的
下添加
,且
字符串不能为空(否则冷启动闪退)
运行时要用
或更稳妥的
(需引入插件市场「App权限判断和提示」)
若用户拒绝过一次,
不再弹窗,此时应调用
跳转系统设置页
录音文件路径怎么处理才不会丢?
默认
返回的
是临时路径,App 重启或系统清理缓存后大概率失效。必须主动保存到持久目录:
uni-app电商系统实战精讲课程课件
uni-app电商系统实战精讲课程
下载
优先用
,它会把文件移到
下,路径稳定、可被分享、不会被自动清理
不要用
直接操作临时路径——部分 Android 厂商限制访问沙箱外路径,且
可能是 content:// URI 格式,
不识别
保存后建议立即调用
校验文件大小,避免空文件(常见于权限未真正生效就调用
)
HarmonyOS NEXT 推荐用
+
,MP3 在部分机型上可能触发编码异常导致文件损坏
长按录音如何防误触、保时长、适配中断?
长按不是简单绑定
,得配合状态机和系统事件兜底:
触摸开始时启动计时器(
),松开(
)或移出(
)时清除;超时未松开则自动
必须监听
(App 进入后台、来电、闹钟等场景),内部立刻
,否则录音持续占用资源且后续
失败
Android 上长按容易触发系统「语音助手」冲突,可在
前加短延时(
),错开系统监听窗口
录音时长限制别只靠
参数——某些低端机该参数失效,应用层需自己维护
计时,并在达到阈值前 500ms 主动
最易忽略的是:HarmonyOS 和部分 Android 14+ 设备,
返回的路径不含文件扩展名(比如只有
),上传前必须手动拼上
或根据
补全,否则服务端解析失败。
Apph5小程序navigator.mediaDevices.getUserMediaMediaRecorderuni.getRecorderManager()MediaRecorderAVAudioRecorderAVRecordermodule.json5android.permission.RECORD_AUDIOohos.permission.MICROPHONEstart()manifest.jsonplus → distributors → ios → permissionsmicrophoneNSMicrophoneUsageDescriptionuni.authorize({scope: 'scope.record'})uni.getSystemInfoSync().platform === 'android' ? permision.requestAndroidPermission('android.permission.RECORD_AUDIO') : uni.authorize(...)uni.authorizepermision.gotoAppPermissionSetting()onStopres.tempFilePathuni.saveFile({tempFilePath: res.tempFilePath, success})uni.env.USER_DATA_PATHfs.copyFiletempFilePathcopyFileuni.getFileInfostartformat: 'aac'sampleRate: 32000@touchstartsetTimeout@touchend@touchcancelstoprecorderManager.onInterruptionBeginstop()startstartawait new Promise(r => setTimeout(r, 100))durationsetIntervalstoptempFilePath/data/user/0/xxx/cache/123.aacformat