1.MediaRecorder及MediaPlayer:
MediaRecorder类父类是object,位于media包下,是用来录制音频和视频。
下面是录音模型:
看起来很是复杂的样子,当然了解下流程还是有必要的。至少你知道如果想重新初始化的话,可以直接使用 reset()方法,不管在哪个阶段都可以重置,有图有真相是吧!
其他的话,也没啥说的,流程都是规范化了的,改动的空间不大,看api好了。
MediaPlayer也位于media包下,直接继承与object类,可以用来放音频/视频的文件和流。
下面是工作流程:
看起来比录音的流程更复杂了,更深的东西我们暂时就不深究了。相对于录音来说,主要多了暂停,回放的状态,方法中更是添加了循环,进度等东西,更多的就不说了,有兴趣的童鞋可以慢慢研究,可以对下面的实例进行扩展。
首先,我对功能进行了封装。
/**
* 录音的类,封装了录音/播放的开始停止功能
*/
public class MyRecord {
/** 录音 */
private MediaRecorder mRecorder;
/** 播放 */
private MediaPlayer mPlayer;
private String path = "";
public static MyRecord myRecord = null;
// 单例
private MyRecord() {
mkMyDir();
};
public static synchronized MyRecord getInstance() {
if (myRecord == null) {
myRecord = new MyRecord();
}
return myRecord;
}
// 在sdcard上创建文件夹
public void mkMyDir() {
File dir = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/TestRecord");
path = dir.getAbsolutePath();
dir.mkdir();
}
// 获取文件夹路径
public String getPath() {
return path;
}
// 开始录音
public void startRecord(String filePath) {
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
m