Я пытаюсь сохранить свои записи в базе данных Room, и это почти нормально, но я не знаю, как создать собственный путь к файлу, чтобы сохранить более одного файла.Я пытался до сих пор просто добавить дату и мое собственное имя файла в конце файла, но это не сработало.Если я сохраняю стандартный путь, а затем нажимаю кнопку воспроизведения, он работает, но я могу сохранить только один файл (тот же путь).Если я пытаюсь создать собственный путь, у меня есть информация в журналах: Log.e (TAG, «prepare () fail»);
Настройка:
private void setupMediaRecorder() {
filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "myRecording.3gpp";
File file = new File(filePath);
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
mediaRecorder.setOutputFile(file);
}
Сохранение:
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
name = String.valueOf(nameEditText.getText());
Recording recording = new Recording(name, filePath, length, currentDate);
mainViewModel.insertRecording(recording);
getDialog().dismiss();
}
});
Играть:
private void play() {
playing = true;
playbackButton.setImageResource(R.drawable.ic_pause_black_true_24dp);
mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(filePath);
mediaPlayer.prepare();
mediaPlayer.start();
Toast.makeText(getContext(), "Playing...", Toast.LENGTH_SHORT).show();
Log.d(TAG, filePath);
} catch (Exception e) {
Log.e(TAG, "prepare() failed");
}
}
РЕШЕНИЕ:
Я нашел решение своей проблемы.Проблема была в двух знаках: «:» для времени и «/» для даты.Эти знаки используются для создания пути к файлу, и у медиаплеера возникла проблема с поиском правильного пути.