首页 > 解决方案 > 如何将录制的音频保存在特定位置

问题描述

使用 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 ,只有我所做的更改是权限和存储路径位置。

标签: androidlocal-storagemedia

解决方案


尝试这个 ;

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());
    }

推荐阅读