Android:使用MediaRecorder录制音频 - 文件无法播放

时间:2017-11-10 00:47:56

标签: android audio mediarecorder

我已使用MediaRecorder

直接从Google实施了示例代码

此外,我添加了一些属性,并将文件类型设置为“.mp3”(我知道它不会创建一个真正的mp3,但“。3gp”也没有给我看,我录制音频不是视频.. )

现在我的问题是,如果我想播放文件,它什么都不做(0:00秒)。我检查了文件中的属性,它填满了存储空间。

其他:

无论如何,我想在录制时实现视觉反馈。 Horizon似乎是唯一好看的lib。但是使用Horizo​​n,你必须使用Audiorecorder的缓冲区来提供它,这是MediaRecoder无法实现的。有没有人知道一个好看的lib,用MediaRecorder可视化当前录制的音频?

非常感谢

private void startRecording() {
    if(this.mRecorder != null)
        return;

    String fileToWrite = this.ProjectDirPath + File.separator + GetToday() + this.fileTpye;

    mRecorder = new MediaRecorder();
    mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mRecorder.setOutputFile(fileToWrite);
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
    mRecorder.setAudioSamplingRate(16000);
    mRecorder.setAudioEncodingBitRate(44100);
    mRecorder.setAudioChannels(1);

    try {
        mRecorder.prepare();
    }catch (IOException e) {
        Log.e("startRecording()", "prepare() failed");
    }

    initRecorder();
    mRecorder.start();
    isRecording = true;
}



private void stopRecording() {
    if(this.mRecorder == null)
        return;
    else{
        try{
            mRecorder.stop();
            mRecorder.release();
            mRecorder = null;
            isRecording = false;
            this.updateListView();
        } catch(Exception e){
            mRecorder = null;
            isRecording = false;
        }
    }
}

public static String GetToday(){
    Date presentTime_Date = Calendar.getInstance().getTime();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return dateFormat.format(presentTime_Date);
}

权限在清单和运行时设置。