图2是录音创建实例的时序图

图2 录音创建实例的时序图
4.Application Framework层与libraries层录音函数对应关系
mMediaRecorder = new MediaRecorder();
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
mMediaRecorder.setOutputFile(recordFile.getAbsolutePath());
mMediaRecorder.prepare();
mMediaRecorder.start();
mMediaRecorder.stop();
mMediaRecorder.release();
sp<MediaRecorder> mr = newMediaRecorder();
mr->setAudioSource(1); //MIC = 1
mr->setOutputFormat(0); //DEFAULT = 0;
mr->setAudioEncoder(0);//DEFAULT = 0;
mr->setOutputFile(fos.getFD(), 0, 0);
mr->prepare();
mr->start();
mr->stop();
mr->release();
5.总结
通过对androidmediarecorder架构的详解,了解各模块调用的流程,不仅可以实现在应用层调用录音接口进行录音,还能直接调用libraries层录音接口函数进行C层录音。同时,若需要监控录音,则可以Hook系统进程/system/bin/mediaserver的ioctl函数,从而拦截该进程的binder通信过程,通过解析binder通信数据包,就可以监控到手机中所有录音软件的录音行为。
6.参考资料
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-50205-5.html
好心疼
中国人
祖国呀