解决方案 »

  1.   

    MediaRecorder mediaRecorder = new MediaRecorder();  
    // 第1步:设置音频来源(MIC表示麦克风)  
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);  
    //第2步:设置音频输出格式(默认的输出格式)  
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);  
    //第3步:设置音频编码方式(默认的编码方式)  
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);  
    //创建一个临时的音频输出文件  
    audioFile = File.createTempFile("record_", ".amr");  
    //第4步:指定音频输出文件  
    mediaRecorder.setOutputFile(audioFile.getAbsolutePath());  
    //第5步:调用prepare方法  
    mediaRecorder.prepare();  
    //第6步:调用start方法开始录音  
    mediaRecorder.start();  上面的代码指定了一个临时的音频输出文件,这就意味着每次将生成不同的音频文件。文件名的格式是record_N.amr,其中N是整数。在录完音后,在SD卡的根目录会看到很多这样的文件(由录音的次数多少决定amr文件的多少)。
    停止录音可以使用MediaRecorder类的stop方法
      

  2.   

    我不是想要得到文件,得到文件自然用mediaRecorder就好了,我想得到直接得到数据流,进行DCT或者加一个FIR滤波之类的。您的意思是生成amr文件然后读取amr文件的数据流吗?
      

  3.   

    startRecording()调用过了吗?
    我记得这个read应该是在startRecording之后启一个thread循环调用好,你最好多抓点数据看看吧。