Записанное аудио не может быть сохранено в /storage/emulated/0/AudioRecorder (иногда сохраненный файл появляется, иногда не появляется)
Я хочу сохранить записанный звук в /storage/emulated/0/AudioRecorder, это мой код:
private String getFilename() {
File file = new File(Environment.getExternalStorageDirectory(), "/AudioRecorder");
if (!file.exists()) {
file.mkdirs();
}
createdDate = DateTools.getDate(System.currentTimeMillis(),"dd-MMM-yyyy hh:mm:ss");
nameFile = createdDate + ".mp4";
pathFile = (file.getAbsolutePath() + "/" + nameFile);
return pathFile;
}
private void startRecording() {
if(RadioManager.getInstance().isPlaying()){
RadioManager.getInstance().stopPlayer();
}
Toast.makeText(VoiceNoteActivity.this, "Mulai Rekam", Toast.LENGTH_SHORT).show();
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(output_formats);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(getFilename());
recorder.setOnErrorListener(errorListener);
recorder.setOnInfoListener(infoListener);
try {
recorder.prepare();
recorder.start();
isRecord = true;
countDown.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void stopRecording() {
if (null != recorder) {
countDown.cancel();
timer = 0;
seekbar.setProgress(timer);
try{
recorder.stop();
recorder.reset();
recorder.release();
recorder = null;
}catch(RuntimeException stopException){
//handle cleanup here
Log.e("Voice Note Activity ","Voice Recording Error : " +stopException.getMessage());
}
isRecord = false;
time.setText("00:00");
enableButtons(false);
}
}
Файл иногда появляется в /storage/emulated/0/AudioRecorder, но иногда не появляется (чаще всего не появляется). Кто-нибудь может помочь?
2 ответа
Решение
Я решил это, добавив этот код:
File file = new File(getFilename());
if (!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
Таким образом, когда файл существует, ему не нужно снова создавать этот файл, но когда сохраненный файл не существует, он должен создать файл.
Хем.. У меня такая же проблема, но с картинкой, а не с голосом. В моем случае картина не появилась, потому что я не бросил ее в галерею. На основе учебника на сайте разработчика Android это код для броска изображения в галерею:
private void galleryAddPic() {
Intent mediaScanIntent = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE");
File f = new File(fileUri.getPath());
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
this.sendBroadcast(mediaScanIntent);
}
может быть, вы можете использовать его для голосового файла. но я не пытался озвучить файл.