MediaRecorder与MediaPlayer步骤

MediaRecorder音频录制步骤:

1    创建MediaRecorder对象

MediaRecorder mr=new MediaRecorder();

2    设置录音的来源

mr.setAudioSource(MediaRecorder.AudioSource.MIC);//一般使用麦克风

3    设置输出格式

mr.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);

4    设置编码格式

mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

    设置编码位率

//mr.setAudioEncodeingBitRate(int bitRate);

    设置采样率

//mr.setAudioAudioSamling(int samplingRate);

5    设置保存位置

mr.setOutputFile("/sdcard/recorder.amr");

6    录制准备

mr.prepare();

7 开始录制

mr.start();

录制完成之后

8 停止录制

mr.stop();

9 释放资源

mr.release();


MediaPlayer音频播放步骤:

1 创建MediaPlayer对象MediaPlayer mp=new MediaPlayer();

或者直接创建制定文件 MediaPlayer mp=MediaPlayer.create(context,R.raw.music);//如果采用此方法创建则可以跳过2、3两个步骤

2 设置播放文件 mp.setDataSource("/sdcard/recorder.amr");

//参数可以为文件路径("/sdcard/music.mp3")、网络URL("http://www.../music.mp3")、res/raw下面的音频文件(context,R.raw.music)等

3 播放准备(同步) mp.prepare();

播放准备(异步)mp.prepareAsunc();

4 开始播放 mp.start();

暂停播放//mp.pause();

5 停止播放 mp.stop();

6 释放资源 mp.release();


TIP:

定位 mp.seekTo(int);

取得当前位置 mp.getCurrentPosition();

取得总长 mp.getDuration();

当需要用播放定位时,调用mp.seekTo(int position)函数不知道position应该是多少。由于FPS的不同,给固定的int值很不准确。

于是乎,想到了用百分比来确定位置。我们可以调用mp.getDuration();函数来获取该资源的总长度,该长度官方定义为毫秒但是应该不准确。不过它的值与seekTo函数中的int是对应的。


比如要定义到15%的位置:

int position=(int)(mp.getDuration()*0.15);

mp.seekTo(position);

mp.start();


你可能感兴趣的:(MediaRecorder,mediaplayer)