权限申请:
<uses-permission android:name="android.permission.RECORD_AUDIO"/><!--录音-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!--写数据-->
录音代码 [录音文件名不能包含英文冒号 会文件损坏]
private void startRecording() {
try {
recorder = new MediaRecorder();// new出MediaRecorder对象
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 设置MediaRecorder的音频源为麦克风
recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);// 设置MediaRecorder录制的音频格式
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); // 设置MediaRecorder录制音频的编码
String recorderPath = Environment.getExternalStorageDirectory() + "/录音文件.mp3";//录音文件名不能包含英文冒号 会文件损坏
recorder.setOutputFile(recorderPath);// 设置文件保存路径
recorder.prepare();// 准备录制
recorder.start();// 开始录制
} catch (Exception e) {
e.printStackTrace();
}
}
停止录音
private void stopRecording() {
if (recorder != null) {
recorder.stop();//停止捕获
recorder.release();//释放资源
recorder = null;
}
}
获取音频文件时长
private int getDuration(String path) {
try {
MediaPlayer player = new MediaPlayer();
player.setDataSource(path);
player.prepare();//缓冲
int duration = player.getDuration() / 1000;
player.release();//释放资源
player = null;
return duration;
} catch (Exception e) {
return 0;
}
}
播放音频
private void playRecoding(String path){
try {
MediaPlayer player = new MediaPlayer();
player.setDataSource(path);
player.prepare();//缓冲
player.start();//开始或恢复播放
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer arg0) {
//播放结束事件
}
});
} catch (IOException e) {
e.printStackTrace();
//文件损坏
}
}
暂停播放
player.pause();//暂停
停止播放
player.stop();//停止
player.release();//释放资源
player = null;
获取当前播放时长
player.getCurrentPosition()
获取总时长
player.getDuration()