android:在模拟器上使用 MediaPlayer 录制音频

Posted

技术标签:

【中文标题】android:在模拟器上使用 MediaPlayer 录制音频【英文标题】:android: record audio with MediaPlayer on emulator 【发布时间】:2012-01-03 11:09:48 【问题描述】:

我正在尝试使用以下代码从 android 模拟器上的麦克风录制音频:

recorder = new MediaRecorder();
recorder.setAudiosource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(Environment.getExternalStorageDirectory() + "/test/test.3gp");
try 
    recorder.prepare();

catch (IOException io) 
    Log.v(LOG_TAG, "Could not prepare the audio " + io.getMessage());

recorder.start();

要停止音频,代码如下:

recorder.stop();
recorder.reset();
recorder.release();

录制过程正常,但产生的音频失真。当我录制一段 60 秒的音频并播放时,它的持续时间显示为 120 秒。测量值不准确,但这只是为了给您一个想法。

只有 AMR_NB 编码器在我的模拟器上工作。我尝试了不同的输出格式,但结果总是一样的。

这是模拟器的限制还是我在这里做错了什么?

编辑 1: 我也尝试了 AudioRecord 类,结果是相同的拖动音频。

谢谢。

【问题讨论】:

【参考方案1】:

我一直在为此工作并找到了解决方案,请尝试使用以下代码:

    private void startRecording()
    

        this.recorder = new MediaRecorder();
        this.recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        this.recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        this.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        MediaRecorder.getAudioSourceMax();
        this.recorder.setOutputFile(this.getFilename());
        this.recorder.setOnErrorListener(this.errorListener);
        this.recorder.setOnInfoListener(this.infoListener);

        try
        
            this.recorder.prepare();
            this.recorder.start();
         catch (final IllegalStateException e)
        
            e.printStackTrace();
         catch (final IOException e)
        
            e.printStackTrace();
        
    

这确实有效。希望对你有帮助:)

【讨论】:

感谢发帖;不过我没有运气。我添加了“MediaRecorder.getAudioSourceMax();”线,但音频仍然拖动。仅供参考,我正在尝试使用 Android 4.0.3、API 级别 15、Mac 上的 ARM 模拟器。

以上是关于android:在模拟器上使用 MediaPlayer 录制音频的主要内容,如果未能解决你的问题,请参考以下文章

Android开源项目:GifView——Android显示GIF动画

android:在模拟器上使用 MediaPlayer 录制音频

android 怎样显示gif动画

在 Android(模拟器)上使用 Google Chrome 开发工具

Android显示GIF动画 GifView

如何在 Android 模拟器上使用 Xposed 框架