目录:
1、开始录音
2、结束录音
3、播放录音
4、暂停/继续
1、开始录音
public void startSound(){
path= Environment.getExternalStorageDirectory().getAbsolutePath()+"/1video";
name="sound";
mMediaRecorder=new MediaRecorder();
//设置音频格式
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//设置音频输出后的保存格式
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
//设置音频编码格式
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
//设置音频通道号
mMediaRecorder.setAudioChannels(1);
//设置录音文件的清晰度
mMediaRecorder.setAudioSamplingRate(44100);
mMediaRecorder.setAudioEncodingBitRate(192000);
Filefile=newFile(path);
if(!file.exists()){
file.mkdirs();
}
//指定一个输出文件
mMediaRecorder.setOutputFile(path+ File.separator+name+".mp4");
File file1=new File(path+File.separator+name+".mp4");
if(file1.exists()){
file1.delete();
}
try{
mMediaRecorder.prepare();
mMediaRecorder.start();
mStartingTimeMillis=System.currentTimeMillis();
}catch(IOExceptione){
Log.e(TAG,"prepare()failed");
}}
2、结束录音
public void stopSound(){
if(mMediaRecorder!=null){
mMediaRecorder.stop();
mMediaRecorder.release();
mMediaRecorder = null;
}
}
3、播放录音
播放录音资源使用的是MediaPlayer,其使用过程类似,也是经过prepare到start直至release和stop。
mMediaPlayer = new MediaPlayer();
try{
mMediaPlayer.setDataSource(file.getPath());
mMediaPlayer.prepare();
mMediaPlayer.setOnPreparedListener(newMediaPlayer.OnPreparedListener(){
@Override
publicvoidonPrepared(MediaPlayermp){
mMediaPlayer.start();
}
});
mMediaPlayer.setOnCompletionListener(newMediaPlayer.OnCompletionListener(){
@Override
Public void onCompletion(MediaPlayermp){
if(mMediaPlayer.isPlaying()){
Log.i(TAG,"onCompletion:正在播放");
}else{
mMediaPlayer.release();
}}});
}catch(IOExceptione){
e.printStackTrace();
}
4、暂停/继续
在点击暂停/继续按钮时,通过自定义一个变量判断当前的播放状态,然后通过mMediaPlayer执行对播放器的处理。
if(pause==0){//暂停状态
BTN_pauseSound.setText("继续播放");
mMediaPlayer.pause();
pause=1;
}else{//播放状态
BTN_pauseSound.setText("暂停播放");
mMediaPlayer.start();
pause=0;
}
欢迎关注晓涵说(CSDN)、xukang868(github)账号信息,查看更多文章。