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();