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

本文出自APICloud官方論壇ios

audioRecorder 模塊經過封裝系統的錄音接口,可以快速的爲開發者提供一個完整的錄音功能。
該模塊提供Android和iOS版本,錄音方式及錄製的音頻格式也依賴於相關係統。api

須要注意的是:安卓跟ios所支持的格式是不同的,最好選擇aac格式,
若是不選擇acc格式大家就須要判斷此設備是ios仍是安卓,(api.systemType使用這個能夠獲取是安卓仍是ios)
而後根據設備不一樣去配置對應錄製音頻格式。app

Android系統支持的錄製音頻格式爲:amr、aac、3gpui

iOS 系統支持的錄製音頻格式爲:aac、wavthis

模塊文檔地址:https://docs.apicloud.com/Cli...spa

接口詳解:
startRecord接口:
必定須要詳細看下sampleRates跟format這倆個參數對應配置,看本身需求去設置,否則配置錯誤有可能出現未知錯誤,或者報錯,必定看清楚format配置類型對應的sampleRates取值範圍是否對應了文檔要求;
var audioRecorder = api.require('audioRecorder');
var audioRecorder = api.require('audioRecorder');
audioRecorder.startRecord({code

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){orm

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最終效果圖:

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

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

錄音開始界面:
圖片描述

錄音暫停界面:

圖片描述

相關文章
相關標籤/搜索