как сохранить записанное аудио в определенном месте - PullRequest
0 голосов
/ 17 июня 2019

Во время использования Media Recorder я столкнулся с проблемой недопустимого состояния: 4, если я выбираю любой другой путь, кроме указанного ниже:

 fileName =  Environment.getExternalStorageDirectory() + File.separator
                + Environment.DIRECTORY_DCIM + File.separator + "audiorecordtest.3gp";

Я хочу сохранить файл 3gp в подпапку DIRECTORY_DCIM.есть ли способ сохранить запись вне DIRECTORY_DCIM.

Я отслеживаю https://developer.android.com/guide/topics/media/mediarecorder только внесенные мною изменения - Путь доступа и путь к хранилищу.

1 Ответ

1 голос
/ 17 июня 2019

Попробуйте это;

public void recordAndSaveAudioFile(String audioName) {
    saved_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "Special Folder";
    File destinationDirectory = new File(saved_path);
    if (!destinationDirectory.exists()) {
        destinationDirectory.mkdirs();
    }

    destinationFile = new File(destinationDirectory, audioName);

    try {
        FileOutputStream outputStream = new FileOutputStream(destinationFile);
        outputStream.flush();
        outputStream.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    setupMediaRecorder(destinationFile);
try {
            mediaRecorder.prepare();
            mediaRecorder.start();

        } catch (IOException e) {
            e.printStackTrace();
        }
        Toast.makeText(this, "Recording...", Toast.LENGTH_SHORT).show();

}



private void setupMediaRecorder(File destination) {
        mediaRecorder = new MediaRecorder();
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        mediaRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
        mediaRecorder.setOutputFile(Uri.parse(String.valueOf(destination)).toString());
    }
...