在AndroidManifest.xml文件中添加录音权限:
在调用录音功能之前,检查录音是否被禁用,并在需要的时候请求启用录音功能:
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
if(audioManager.isMicrophoneMute()) {
audioManager.setMicrophoneMute(false);
}
在调用录音功能之前,检查录音是否被其他应用或进程占用,如果占用则释放资源:
AudioRecord audioRecord = null;
try {
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, 44100, AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_DEFAULT, AudioRecord.getMinBufferSize(44100, AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_DEFAULT));
if(audioRecord.getState() != AudioRecord.STATE_INITIALIZED) {
audioRecord = null;
}
} catch(Exception e) {
audioRecord = null;
}
if(audioRecord == null) {
// 录音被占用,释放资源
Log.e(TAG, "Unable to initialize audio recorder");
return;
}
在录音结束后,检查录音是否成功,如果不成功则提示用户并清理已记录的音频文件:
if(AudioRecord.RECORDSTATE_STOPPED != recorder.getRecordingState()) {
recorder.stop();
}
if(mFileSize <= MIN_FILE_SIZE) {
// 录音时间太短,文件可能无效,删除文件
deleteRecordingFile();
showToast(R.string.recording_file_is_too_short);
} else if(mHasError) {
// 录音出错,删除文件
deleteRecordingFile();
showToast(String.format(getString(R.string.error_occurred_in_recording), mErrorMessage));