概述: 錄音整體上是混編api比較多, 但總體上比較簡(jiǎn)單, api比較多主要是有資源搶奪問(wèn)題,以及與音頻播放的沖突導(dǎo)致的, 所以需要比較多的api給js, js使用這些api做了很多嚴(yán)密的邏輯判斷.
錄音比較簡(jiǎn)單,這里就直接來(lái)了.
和播放一樣, 我們首先需要封裝一個(gè)工具類,
class RecordTool{
? ? Recorder ?recoder; //這個(gè)是真正的錄音工具
? ? String status; // 這個(gè)和音頻播放器一樣, status由app管理.
}
然后里面就是常規(guī)的其他方法,如開(kāi)始錄音,暫停錄音等. 錄音格式為mp3.
這個(gè)錄音工具和播放器一樣,掛在WebviewActivity的靜態(tài)變量上.全局只有一個(gè).
重點(diǎn)是status
//100準(zhǔn)備中 101錄音中 102暫停中 103錄音結(jié)束 104狀態(tài)錯(cuò)誤 105其他狀態(tài)
在RecordTool的內(nèi)部,同樣管理好status, 比如開(kāi)始錄音需要設(shè)置status為101,暫停也需要102. 一會(huì)同樣js會(huì)問(wèn)詢錄音工具當(dāng)前狀態(tài).
(1)開(kāi)始錄音:
協(xié)議名:?recordStart
參數(shù): 無(wú)
回調(diào)JS:?不需要
iOS代碼:?無(wú)
(2)暫停錄音:
協(xié)議名:?recordPause
參數(shù): 無(wú)
回調(diào)JS:?不需要
iOS代碼:?無(wú)
(3)繼續(xù)錄音:
協(xié)議名:recordResume
參數(shù): 無(wú)
回調(diào)JS:?不需要
iOS代碼:?無(wú)
(4)結(jié)束錄音:
協(xié)議名:recordStop
參數(shù): 無(wú)
回調(diào)JS:?不需要
iOS代碼:?無(wú)
(5)獲取錄音狀態(tài):
協(xié)議名:getRecordStatus
參數(shù): 無(wú)
回調(diào)JS: 需要, 回調(diào)格式為{"status": "101"}
iOS代碼:?無(wú)
(6)獲取錄音時(shí)間:
協(xié)議名:?getRecordTime
參數(shù): 無(wú)
回調(diào)JS: 需要, 格式為{"time": "12"}
iOS代碼:?無(wú)
錄音和播放差不多, 如果錄音中, js則會(huì)開(kāi)啟一個(gè)990毫秒的定時(shí)器,定時(shí)詢問(wèn)當(dāng)前錄音時(shí)間.
(7)上傳錄音文件:
協(xié)議名:uploadRecordFile
參數(shù): 無(wú)
回調(diào)JS:?需要,和圖片一樣,直接回傳服務(wù)器的返回值.
iOS代碼:?無(wú)