目前Ionic官方提供了很多native插件,方便調用手機等設備的原生接口。
最近在研究在ionic項目中加入錄音功能,完成簡單錄音功能後,並做下筆記,我用到的是Ionic native中的media插件和file插件。
簡單介紹下這兩個插件:(官方介紹:media,file)
media插件:實例化一個音頻對象,需要在手機目錄中創建一個音頻類型文件來存儲數據,可以實現對該音頻進行錄音,播放,暫停,設置音頻屬性等。
file插件:實例化一個file對象,可以對移動設備中目錄進行各種操作(創建目錄,文件,移除目錄,文件,把文件格式轉成base64格式等)。
安裝media和file插件
--media插件
ionic cordova plugin add cordova-plugin-media
npm install --save @ionic-native/media
--file插件
ionic cordova plugin add cordova-plugin-file
npm install --save @ionic-native/file
media插件的用法:
import { Media, MediaObject } from '@ionic-native/media';
constructor(private media: Media) { }
//也在app.module中引入,在provider中加入依賴
file插件的用法:
import { File } from '@ionic-native/file';
constructor(private file: File) { }
//也在app.module中引入,在provider中加入依賴
錄音功能的簡單實現:
1. 我的做法是先實例化一個file對象,通過它提供設備的存儲路徑。
2. 要弄清楚media.create()方法的參數。(文件的名字URL)
3. 這樣存儲的錄音文件由於不具備唯一性,所以每一次錄音都會被後一次的覆蓋掉。
4. 建議編寫工具類,如:日期;給錄音文件名字加一個日期前綴,文件就不會被覆蓋。
5. 計時器工具類等,提供錄音記時。
import { Media, MediaObject } from '@ionic-native/media';
import { File } from '@ionic-native/file';
export class Record {
constructor( private media: Media , private file: File ) { }
public filePath : any; //錄音文件的名字
public recordData : any; //錄音對象
startReocrd(){ //開始錄音
//文件URL,文件存放在拓展內存卡中文件夾下,命名爲Record.mp3
this.filePath = this.file.externalDataDirectory + "Record.mp3";
//創建media對象,參數文件名字,上面的filePath也指定了文件存放位置和文件名字
this.recordData = this.media.create(this.filePath);
//開始錄音
this.recordData.startRecord();
}
pauseRecord(){
//暫停錄音
this.recordData.pauseRecord();
}
play(){
//播放錄音
this.recordData.play();
}
resumeRecord(){
//繼續播放錄音
this.recordData.resumeRecord();
}
stopRecord(){
//停止結束錄音
this.recordData.stopRecord();
}}
簡單的錄音功能就實現了。