录制和存储多个音频文件

时间:2017-03-16 01:57:34

标签: android

我已经设置了一个名为 Say Sentence 的活动,当按下“Start Speaking”按钮时,该活动会记录用户的音频,然后在按下“Stop Speaking”按钮时停止录制。然后,它将文件保存在主应用程序文件夹中名为 SaySentence 的子目录中。我设法让我的代码工作,以便它保存一个名为 saysentence.3gpp 的音频文件,并在每次用户再次记录时替换它。

但是,我想设置它以便用户可以记录多个文件,也可以命名为saysentence001.3gpp,saysentence002.3gpp等。

这是我目前的活动:

public class SaySentence extends AppCompatActivity {

    private MediaRecorder recorder;
    private String OUTPUT_FILE;
    private TextView mStatus;
    private TextView mRecorded;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_say_sentence);

        String sep = File.separator;
        String newFolder = "SaySentence";
        String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
        File myNewFolder = new File(extStorageDirectory + sep + "AudioRecordingTest" + sep + newFolder);
        myNewFolder.mkdir();

        OUTPUT_FILE = Environment.getExternalStorageDirectory().toString()+ sep + "AudioRecordingTest" + sep + newFolder + sep + "saysentence.3gpp";
        mStatus = (TextView) findViewById(R.id.txtStatus);
        mRecorded = (TextView) findViewById(R.id.txtRecorded);

    }

    public void startSpeaking(View view) {
        try {
            beginRecording();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void stopSpeaking(View view) {
        try {
            stopRecording();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void beginRecording() {
        ditchMediaRecorder();
        File outFile = new File(OUTPUT_FILE);

        mStatus.setText("Recording");

        if(outFile.exists()){
            outFile.delete();
        }

        recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        recorder.setOutputFile(OUTPUT_FILE);

        try {
            recorder.prepare();
        } catch (Exception e) {
            e.printStackTrace();
        }

        recorder.start();

    }

    private void stopRecording() {
        mStatus.setText("Recording Stopped");
        mRecorded.setText("Audio file saved to: " + OUTPUT_FILE);

        if(recorder != null){
            recorder.stop();
        }

    }

    private void ditchMediaRecorder() {
        if(recorder != null) {
            recorder.release();
        }
    }
}

如何轻松实现该功能以允许我的应用程序记录和存储多个音频文件?

1 个答案:

答案 0 :(得分:0)

您有两个选项可供选择

  1. 首先检查文件夹中的文件。计算文件数量,计数结果+1将是您的新文件名。

  2. 使用SharedPreferences。跟踪共享首选项中的文件数。