您的位置:首页 > 移动开发 > Android开发

Android 录音功能(语音录制保存,播放)

2015-08-10 18:12 821 查看
// 音量,各个音量的图片
private int[] mVolumeImage = { R.drawable.record_animate01_icon,
R.drawable.record_animate02_icon, R.drawable.record_animate03_icon,
R.drawable.record_animate04_icon, R.drawable.record_animate05_icon,
R.drawable.record_animate06_icon, R.drawable.record_animate07_icon,
R.drawable.record_animate08_icon, R.drawable.record_animate09_icon,
R.drawable.record_animate10_icon };
// 语音操作对象
private MediaPlayer mPlayer = null;
private MediaRecorder mRecorder = null;
//录音文件保存路径

private String FileName = FileManager.getSaveImagePath() + "temp.3gp";


开始录音,并保存到手机

private void startRecording() {
//创建保存的路径文件
FileHelper.createDirectory(FileManager.getSavePath());
File file = new File(FileName);
if (file.exists()) {
if (file.delete())
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
} else {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
mRecorder = new MediaRecorder();
//录音配置
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
//输出文件
mRecorder.setOutputFile(FileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
e.printStackTrace();
}
//开始录音
mRecorder.start();
//音量图片显示
updateMicStatus();
//录音时间计时
timingRecord();
}


//音量图片显示

updateMicStatus();

private final Handler mHandler = new Handler();
private Runnable mUpdateMicStatusTimer = new Runnable() {
public void run() {
updateMicStatus();
}
};
private int BASE = 1;
private int SPACE = 100;// 间隔取样时间

private void updateMicStatus() {
if (mRecorder != null) {
double ratio = (double) mRecorder.getMaxAmplitude() / BASE;
double db = 0;// 分贝
if (ratio > 1)
db = 20 * Math.log10(ratio);
int level = ((int) db - 40) / 10;
level = level < 0 ? 0 : level;
level = level > 9 ? 9 : level;
//根据分贝控件音量显示的图片
mRecordingVolume.setImageResource(mVolumeImage[level]);
//循环显示
mHandler.postDelayed(mUpdateMicStatusTimer, SPACE);
}
}


停止录音

private void stopRecording() {
if (mRecorder != null) {
mRecorder.stop();
mRecorder.release();
mRecorder = null;
}
}


播放录音

private void playRecording() {
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(FileName);
mPlayer.prepare();
mPlayer.start();
//播放时间显示
timingPlay();
} catch (IOException e) {
e.printStackTrace();
}
}


停止播放

private void stopRecording() {
if (mRecorder != null) {
mRecorder.stop();
mRecorder.release();
mRecorder = null;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: