Я внедрил пример кода прямо из Google с помощью MediaRecorder.
Также я добавил некоторые свойства и установил тип файла «.mp3» (я знаю, что он не создает настоящий mp3, но «.3gp» тоже не имеет для меня смысла, я записываю аудио, а не видео ..)
Теперь моя проблема в том, что если я хочу воспроизвести файл, он ничего не делает (0:00 сек). Я проверил свойства файла, он занимает место в хранилище.
ДОПОЛНИТЕЛЬНЫЙ:
В любом случае я хочу реализовать визуальную обратную связь во время записи. Horizon кажется единственной красивой библиотекой. Но используя Horizon, вы должны кормить его буфером от Audiorecorder, что невозможно с MediaRecoder. Кто-нибудь знает красивую библиотеку, которая визуализирует текущую запись звука с помощью MediaRecorder?
Большое тебе спасибо
private void startRecording() {
if(this.mRecorder != null)
return;
String fileToWrite = this.ProjectDirPath + File.separator + GetToday() + this.fileTpye;
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setOutputFile(fileToWrite);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
mRecorder.setAudioSamplingRate(16000);
mRecorder.setAudioEncodingBitRate(44100);
mRecorder.setAudioChannels(1);
try {
mRecorder.prepare();
}catch (IOException e) {
Log.e("startRecording()", "prepare() failed");
}
initRecorder();
mRecorder.start();
isRecording = true;
}
private void stopRecording() {
if(this.mRecorder == null)
return;
else{
try{
mRecorder.stop();
mRecorder.release();
mRecorder = null;
isRecording = false;
this.updateListView();
} catch(Exception e){
mRecorder = null;
isRecording = false;
}
}
}
public static String GetToday(){
Date presentTime_Date = Calendar.getInstance().getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return dateFormat.format(presentTime_Date);
}
Разрешения устанавливаются в манифесте и во время выполнения.