本帖最后由 Mr.ZhouHeng 于 2019-6-13 17:02 编辑
视频全部效果: audioRecorder 模块通过封装系统的录音接口,能够快速的为开发者提供一个完整的录音功能。 该模块提供Android和iOS版本,录音方式及录制的音频格式也依赖于相关系统。
需要注意的是:安卓跟ios所支持的格式是不一样的,最好选择aac格式 , 如果不选择acc格式你们就需要判断此设备是ios还是安卓, (api.systemType使用这个可以获取是安卓还是ios) 然后根据设备不同去配置对应录制音频格式。
- Android系统支持的录制音频格式为:amr、aac、3gp
模块文档地址:https://docs.apicloud.com/Client-API/Func-Ext/audioRecorder
接口详解:
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;
- });
- });
复制代码
注意点1:目前此模块需要注意的地方是暂停跟继续俩个接口,暂时只支持ios,安卓不支持;所以俩个接口需要这样处理:
- // 判断是ios还是安卓
- if (api.systemType != 'ios') {
- api.toast({
- msg: '此模块暂时不支持安卓暂停/继续',
- duration: 2000,
- location: 'bottom'
- });
- return;
- }
- if (Show) {
- // 暂停录音 目前这个方法在ios会导致模块继续之后无法监听 此问题已经反馈
- audioRecorder.pauseRecord(function(ret) {
- api.toast({
- msg: '暂停录音',
- duration: 2000,
- location: 'bottom'
- });
- });
- this.Show = false;
- } else {
- // 继续录音
- audioRecorder.resumeRecord(function(ret) {
- api.toast({
- msg: '继续录音',
- duration: 2000,
- location: 'bottom'
- });
- });
- this.Show = true;
- }
复制代码
注意点2: 在关闭窗口的时候,需要调用停止录音的接口,如果不调用会出现app闪退情况:
- // 停止录音
- audioRecorder.stopRecord(function(ret) {
- console.warn(JSON.stringify(ret));
- });
- //重置按钮关闭状态
- this.Show = false;
- // 延迟关闭录音界面返回录音列表
- setTimeout(function() {
- api.closeWin();
- }, 300);
复制代码
Demo整体结构说明截图:
核心代码截图:
Demo最终效果图:
无录音文件时显示:
有录音文件时显示:
录音开始界面:
录音暂停界面:
|