開發者進階之路 |audioRecorder錄音模塊Demo

本文出自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最終效果圖:

無錄音文件時顯示:
圖片描述

有錄音文件時顯示:
圖片描述

錄音開始界面:
圖片描述

錄音暫停界面:

圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章