MediaRecorder类设置音频源的问题 - setAudioSource() - 不支持的参数

时间:2010-06-09 01:22:08

标签: android audio audio-recording

我是Android开发的新手,我有下一个问题/问题。

我正在使用MediaRecorder类来录制麦克风中的音频。我正在按照官方网站上指示的步骤进行操作:http://developer.android.com/reference/android/media/MediaRecorder.html

所以我有一个初始化和配置MediaRecorder对象的方法,以便开始录制。这里有代码:


        this.mr = new MediaRecorder();
        this.mr.setAudioSource(MediaRecorder.AudioSource.MIC);
        this.mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        this.mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        this.mr.setOutputFile(this.path + this.fileName);
        try {
            this.mr.prepare();
        } catch (IllegalStateException e) {
            Log.d("Syso", e.toString());
            e.printStackTrace();
        } catch (IOException e) {
            Log.d("Syso", e.toString());
            e.printStackTrace();
        }

当我在模拟器中执行此代码时,感谢logcat,我可以看到方法setAudioSource(MediaRecorder.AudioSource.MIC)在调用时给出了下一个错误(标记为audio_ipunt):


ERROR/audio_input(34): unsupported parameter: x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value
ERROR/audio_input(34): VerifyAndSetParameter failed

然后当调用方法prepare()时,我再次得到另一个错误:


ERROR/PVOMXEncNode(34): PVMFOMXEncNode-Audio_AMRNB::DoPrepare(): Got Component OMX.PV.amrencnb handle 

如果我开始通过调用方法start()开始记录...我收到很多消息说:


AudioFlinger(34):RecordThread: buffer overflow

然后......在停止和释放之后......我可以看到已经创建了一个文件,但它似乎没有被记录好。不管怎样,如果我在一个真实的设备上尝试这个,我可以毫无问题地录制,但我不能播放我刚录制的内容。

我认为关键在于我之前提到过的这些错误。我该如何解决这些问题?有任何建议或帮助??

3 个答案:

答案 0 :(得分:1)

模拟器在录音方面存在很多问题。让我们说它不起作用。您最好的选择是在真实设备中试用您的代码!!!

答案 1 :(得分:1)

  

注意:Android模拟器无法捕获音频,   但实际设备可能会提供这些功能。

参考:http://developer.android.com/guide/topics/media/audio-capture.html

答案 2 :(得分:0)

好吧,我在这个Android编程方面相当新,但是我会告诉你们到目前为止我学到的东西。这里的一些答案表明他们在真实设备上遇到问题,主要是Galaxy S,而且模拟器/虚拟设备也没有工作。好吧,我从谷歌那里读到虚拟设备现在不支持录音。这可能是也可能不准确。然而,一位经验丰富的Android程序员告诉我,没有理由相信设备之间存在相似之处,因为硬件可以在如此众多的设备上使用。此外,每个Android操作系统都经过轻微修改,专门针对每个设备,因此即使Droid和Droid X都可以运行Android Froyo,Froyo的版本也略有不同。所有这一切,也许Galaxy S的麦克风或其他东西的呼叫方法略有不同。我的测试设备碰巧是MotoDroid,所以我不能确定,抱歉。但我希望这有点帮助!

编辑: 我的坏,模拟器确实支持录音。