项目背景:项目是用 vue 写的,最终打包为 apk ,其中涉及到录音的功能,利用 h5+ 实现的。
(在vue中集成 html5 plus, 参考 https://www.cnblogs.com/luobiao/p/10552030.html)
需求:长按录音,录音之前判断是否已经获取录音权限,如果没有权限,则需要获取权限;如果有权限,则开始录音。
录音功能,使用了触摸事件,触摸开始,则录音开始,触摸结束,则录音结束。并且限制录音时长最长为一分钟
<div class="record" @touchstart="startRecord" @touchend="stopRecord"></div>
因为要使用录音,所以在 mounted 钩子函数中需要先获取设备的录音对象
使用 plus.audio.getRecorder() 可以获取设备的录音对象。
mounted () {
let vm = this
this.onPlusReady(() => {
console.log('plus ready')
// eslint-disable-next-line
vm.recorderPlus = plus.audio.getRecorder()
})
},
录音时,首先要先判断是否已经获取录音的权限。 plus.navigator.checkPermission() 方法可以检查运行环境的权限。
plus.navigator.checkPermission(permission)
向系统检查当前程序的权限状态,不触发权限相对应的功能API的调用。
permission : 要检查的权限名称。
返回值:"authorized"表示程序已被用户授权使用此权限; "denied"表示程序已被用户拒绝使用此权限; "undetermined"表示程序未确定是否可使用此权限,此时调用对应的API时系统会弹出提示框让用户确认; "notdeny"表示程序未被用户拒绝使用此权限(与denied相反,可能是"authorized"或者"undetermined"); "unknown"表示程序未知此权限状态(系统存在权限管理但无法查询&#