共计 1780 个字符,预计需要花费 5 分钟才能阅读完成。
本文出自 APICloud 官方论坛
audioRecorder 模块通过封装系统的录音接口,能够快速的为开发者提供一个完整的录音功能。
该模块提供 Android 和 iOS 版本,录音方式及录制的音频格式也依赖于相关系统。
需要注意的是:安卓跟 ios 所支持的格式是不一样的,最好选择 aac 格式,
如果不选择 acc 格式你们就需要判断此设备是 ios 还是安卓,(api.systemType 使用这个可以获取是安卓还是 ios)
然后根据设备不同去配置对应录制音频格式。
Android 系统支持的录制音频格式为:amr、aac、3gp
iOS 系统支持的录制音频格式为:aac、wav
模块文档地址:https://docs.apicloud.com/Cli…
接口详解:
startRecord 接口:
一定需要详细看下 sampleRates 跟 format 这俩个参数对应配置,看自己需求去设置,不然配置错误有可能出现未知错误,或者报错,一定看清楚 format 配置类型对应的 sampleRates 取值范围是否对应了文档要求;
var audioRecorder = api.require(‘audioRecorder’);
var audioRecorder = api.require(‘audioRecorder’);
audioRecorder.startRecord({
channel:2, // 默认是 2 选项有俩个 1 单声道 2 立体声道,如果对于声道没有要求可以直接实际代码可以不写;sampleRates:16000, // 设置采样率 aac 支持范围(8000 - 96000)amr 支持 8000、16000 pcm 只支持 16000
savePath:'fs://test.amr', // 这块是配置录音存储的位置
format:'amr' // 设置音频格式 aac (支持 Android 4.1+ & iOS) pcm (支持 Android & iOS) amr (仅支持 Android) 3gp (仅支持 Android) caf (仅支持 iOS) wav (仅支持 iOS) acm (仅支持 iOS)
}, function(ret, err){
console.log(JSON.stringify(ret));
});
复制代码
getVolume 接口:
获取录音的时时声音大小,个人感觉如果配置了监听 audioRecorder.addEventListener({name: ‘volume’ 事件,这个接口可以不需要调用
var audioRecorder = api.require(‘audioRecorder’);
audioRecorder.getVolume(function(ret){
console.log(JSON.stringify(ret));
});
复制代码
addEventListener 接口:
此接口是监听录音时获取时时声音大小,这样可以拿来作为录音状态喇叭大小的,此处楼主虽然获取了,但是没有去显示这个功能;
楼主在监听这个接口调用 getAttr 接口获取音频时长,这样就能配置录音的时间进度 00:00:00
// 监听声音
audioRecorder.addEventListener({name: 'volume'}, function(ret) {console.warn(JSON.stringify(ret));
window.ListVue.volume = ret.volume;
// 获取录音时间进度
audioRecorder.getAttr({path: window.ListVue.recording}, function(ret) {window.ListVue.Time = ret.duration;});
});
复制代码
注意点 2:在关闭窗口的时候,需要调用停止录音的接口,如果不调用会出现 app 闪退情况:
// 停止录音
audioRecorder.stopRecord(function(ret) {console.warn(JSON.stringify(ret));
});
// 重置按钮关闭状态
this.Show = false;
// 延迟关闭录音界面返回录音列表
setTimeout(function() {api.closeWin();
}, 300);
复制代码
Demo 整体结构说明截图:
核心代码截图:
Demo 最终效果图:
无录音文件时显示:
有录音文件时显示:
录音开始界面:
录音暂停界面: