APICloud开发者进阶之路 |audioRecorder录音模块Demo

本文出自APICloud官方论坛

audioRecorder 模块通过封装系统的录音接口,能够快速的为开发者提供一个完整的录音功能。
该模块提供Android和iOS版本,录音方式及录制的音频格式也依赖于相关系统。

需要注意的是:安卓跟ios所支持的格式是不一样的,最好选择aac格式,
如果不选择acc格式你们就需要判断此设备是ios还是安卓,(api.systemType使用这个可以获取是安卓还是ios)
然后根据设备不同去配置对应录制音频格式。

Android系统支持的录制音频格式为:amr、aac、3gp

iOS 系统支持的录制音频格式为:aac、wav

模块文档地址: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;
});
});
复制代码

注意点2: 在关闭窗口的时候,需要调用停止录音的接口,如果不调用会出现app闪退情况:
// 停止录音
audioRecorder.stopRecord(function(ret) {
console.warn(JSON.stringify(ret));
});
//重置按钮关闭状态
this.Show = false;
// 延迟关闭录音界面返回录音列表
setTimeout(function() {
api.closeWin();
}, 300);
复制代码

Demo整体结构说明截图:
APICloud开发者进阶之路 |audioRecorder录音模块Demo

核心代码截图:
APICloud开发者进阶之路 |audioRecorder录音模块Demo

APICloud开发者进阶之路 |audioRecorder录音模块Demo

APICloud开发者进阶之路 |audioRecorder录音模块Demo

Demo最终效果图:

无录音文件时显示:
APICloud开发者进阶之路 |audioRecorder录音模块Demo
有录音文件时显示:
APICloud开发者进阶之路 |audioRecorder录音模块Demo

录音开始界面:
APICloud开发者进阶之路 |audioRecorder录音模块Demo

录音暂停界面:
APICloud开发者进阶之路 |audioRecorder录音模块Demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的录音Demo,使用audiorecorder来录制音频: 1. 在AndroidManifest.xml中添加录音权限: ```xml <uses-permission android:name="android.permission.RECORD_AUDIO" /> ``` 2. 在布局文件中添加一个按钮,用于开始录制音频: ```xml <Button android:id="@+id/start_recording_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start Recording" /> ``` 3. 在Activity中添加如下代码: ```java private MediaRecorder mediaRecorder; private String audioFilePath; private Button startRecordingButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); startRecordingButton = findViewById(R.id.start_recording_button); startRecordingButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startRecording(); } }); } private void startRecording() { // 创建音频文件 File audioFile = null; try { audioFile = createAudioFile(); } catch (IOException e) { e.printStackTrace(); } // 初始化MediaRecorder mediaRecorder = new MediaRecorder(); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mediaRecorder.setOutputFile(audioFile.getAbsolutePath()); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); // 开始录制音频 try { mediaRecorder.prepare(); mediaRecorder.start(); startRecordingButton.setText("Stop Recording"); } catch (IOException e) { e.printStackTrace(); } } private void stopRecording() { // 停止录制音频 mediaRecorder.stop(); mediaRecorder.release(); mediaRecorder = null; startRecordingButton.setText("Start Recording"); } private File createAudioFile() throws IOException { String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String audioFileName = "AUDIO_" + timeStamp + "_"; File storageDir = getExternalFilesDir(Environment.DIRECTORY_MUSIC); File audioFile = File.createTempFile(audioFileName, ".3gp", storageDir); audioFilePath = audioFile.getAbsolutePath(); return audioFile; } @Override protected void onStop() { super.onStop(); if (mediaRecorder != null) { mediaRecorder.release(); mediaRecorder = null; } } ``` 这个Demo实现了一个简单的录音功能,点击按钮即可开始录制音频,再次点击按钮即可停止录制。录制完成后,音频文件会保存在应用的私有目录中,可以通过audioFilePath获取到音频文件的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值