概述: 录音整体上是混编api比较多, 但总体上比较简单, api比较多主要是有资源抢夺问题,以及与音频播放的冲突导致的, 所以需要比较多的api给js, js使用这些api做了很多严密的逻辑判断.
录音比较简单,这里就直接来了.
和播放一样, 我们首先需要封装一个工具类,
class RecordTool{
Recorder recoder; //这个是真正的录音工具
String status; // 这个和音频播放器一样, status由app管理.
}
然后里面就是常规的其他方法,如开始录音,暂停录音等. 录音格式为mp3.
这个录音工具和播放器一样,挂在WebviewActivity的静态变量上.全局只有一个.
重点是status
//100准备中 101录音中 102暂停中 103录音结束 104状态错误 105其他状态
在RecordTool的内部,同样管理好status, 比如开始录音需要设置status为101,暂停也需要102. 一会同样js会问询录音工具当前状态.
(1)开始录音:
协议名: recordStart
参数: 无
回调JS: 不需要
iOS代码: 无
(2)暂停录音:
协议名: recordPause
参数: 无
回调JS: 不需要
iOS代码: 无
(3)继续录音:
协议名:recordResume
参数: 无
回调JS: 不需要
iOS代码: 无
(4)结束录音:
协议名:recordStop
参数: 无
回调JS: 不需要
iOS代码: 无
(5)获取录音状态:
协议名:getRecordStatus
参数: 无
回调JS: 需要, 回调格式为{"status": "101"}
iOS代码: 无
(6)获取录音时间:
协议名: getRecordTime
参数: 无
回调JS: 需要, 格式为{"time": "12"}
iOS代码: 无
录音和播放差不多, 如果录音中, js则会开启一个990毫秒的定时器,定时询问当前录音时间.
(7)上传录音文件:
协议名:uploadRecordFile
参数: 无
回调JS: 需要,和图片一样,直接回传服务器的返回值.
iOS代码: 无