Android 語(yǔ)音錄制工具類(lèi)

? ? ? ? ? ? ? ?最近在寫(xiě)項(xiàng)目中的Demo,下個(gè)項(xiàng)目中有IM的需求,其中有個(gè)語(yǔ)音消息的功能,網(wǎng)上github上找了開(kāi)源的SDK,但是老大要求完全自制,那沒(méi)辦法,只能自己寫(xiě)了。

了解MediaRecorder

? ? ? ? ? ? ? ? ? MediaRecorder是google針對(duì)麥克風(fēng)硬件提供的相對(duì)應(yīng)的類(lèi),使用非常方便,有興趣的可以去看看這個(gè)MediaRecorder,介紹非常詳細(xì)使用起來(lái)也是非常簡(jiǎn)單,

? 首先 new一個(gè)對(duì)象

? MediaRecorder ? mMediaRecorder=new MediaRecorder();

? 然后做一些固定的設(shè)置

mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);

mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

? ? ? 以上三個(gè)設(shè)置 是必須要的,第一個(gè)是設(shè)置采集源,設(shè)置為麥克風(fēng);第二工人是設(shè)置音頻文件的輸出格式,我選的默認(rèn),這樣就會(huì)根據(jù)第三個(gè)設(shè)置的編碼格式一樣,第三個(gè)我選的amr,因?yàn)槭亲稣Z(yǔ)音,我沒(méi)試過(guò)別的模式,但微信的語(yǔ)音是這個(gè),先試試這個(gè)吧,有時(shí)間再試試別的格式

filePath=FolderPath+ TimeUtils.getCurrentTime() +".amr";

mMediaRecorder.setOutputFile(filePath);

mMediaRecorder.setMaxDuration(1000*60*10);

mMediaRecorder.prepare();

? ? ?以上兩個(gè)設(shè)定,第二行是設(shè)定錄音文件的保存路徑,為了不覆蓋,我加了時(shí)間戳,第三行設(shè)設(shè)定錄音文件的最大時(shí)長(zhǎng)。最后一句,表明設(shè)定完成,可以開(kāi)始錄音了。


以上就是完整的設(shè)定了,然后就可以拿來(lái)用了

mMediaRecorder.start();//開(kāi)始錄音

? 需要錄音過(guò)程中的回調(diào)什么的 ?都寫(xiě)在這里,最好加個(gè)時(shí)間戳 跟結(jié)束后的時(shí)間戳對(duì)比,這樣可以拿到時(shí)長(zhǎng)。

然后還有取消跟停止功能

取消

public voidcancelRecord(){

mMediaRecorder.stop();

mMediaRecorder.reset();

mMediaRecorder.release();

mMediaRecorder=null;

File file =newFile(filePath);

if(file.exists())

file.delete();

filePath="";

}

? ? ?這是取消,除了調(diào)用 stop()方法外,還要 調(diào)用reset() release()方法,然后mMediaRecorder置空 同時(shí)清除已保存的錄音文件,這樣才可以完整的取消。不過(guò)既然mMediaRecorder.reset()然后=null ?下次調(diào)用就要重新new 然后重新set屬性。

? ? 停止的方法類(lèi)似,不過(guò)不用刪除已保存的錄音文件,另外如果有需要回調(diào)的地方,也可以寫(xiě)在stop之后,比如回調(diào)一下文件路徑什么的

public longstopRecord() {

mMediaRecorder.stop();

mMediaRecorder.reset();

mMediaRecorder.release();

mMediaRecorder=null;

filePath="";

returnendTime-startTime;

}


主要的方法就完成了,其實(shí)我是寫(xiě)了一個(gè)類(lèi),這樣用起來(lái)方便

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 研究錄音是源于即時(shí)通訊的項(xiàng)目。寫(xiě)出一個(gè)即時(shí)通訊很簡(jiǎn)單,但是寫(xiě)好一個(gè)即時(shí)通訊就不是一件容易的事,比如聊天中語(yǔ)音的加入...
    2c2z0閱讀 2,473評(píng)論 0 2
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評(píng)論 19 139
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線(xiàn)程,因...
    小菜c閱讀 7,322評(píng)論 0 17
  • 安卓平臺(tái)和聲音錄制與播放相關(guān)的主要是4個(gè)類(lèi):MediaRecorder,MediaPlayer,SoundPool...
    閑庭閱讀 10,880評(píng)論 1 47
  • 該文章轉(zhuǎn)載于http://www.2cto.com/kf/201408/326131.html 手機(jī)一般都有麥克風(fēng)...
    raccoon5閱讀 9,664評(píng)論 4 8

友情鏈接更多精彩內(nèi)容