MediaRecorder准备失败

时间:2010-04-12 07:45:48

标签: android mediarecorder

我是新来的。我一直在尝试使用Android模拟器创建一个视频捕获应用程序,但没有取得多大成功。据我所知,并浏览互联网上的所有样本和代码(本网站和其他网站),我仍然必须错过一步。

我尝试在JonPro制作的这个帖子的末尾附近使用这个示例: http://www.anddev.org/viewtopic.php?p=24723#24723

并且我已经尝试制作了自己的但是媒体录音机在准备阶段总是会失败,并且“准备失败”的消息最无益。我不知道我错过了什么。我似乎拥有正确的权限,并根据模拟器安装了SDCard。我应该使用2.1以外的Android SDK版本吗?

即使该论坛中的代码声称可以正常工作,我也发现这条线丢失了: recorder.setCamera(照相机);

但是日志显示: '无法获得相机(0x16b70)参数' 当prepare()被调用但它仍然没有意义,因为预览是好的,但没有录音!任何帮助或建议将不胜感激。

编辑:任何人都可以确认这适用于SDK和模拟器吗?或者我是在浪费时间试图让这个版本在这个版本中工作。我能否获得prepare函数的源代码,因为它是OpenSource?

2 个答案:

答案 0 :(得分:5)

此问题的解决方法是在准备之前必须设置mCameraDevice.unlock()。重要的是,这是在mCameraDevice.setPreviewDisplay(mHolder)之后设置的;

示例:

/*--------------------------------------surfaceCreated---------------------------------------------*/
/**
 * Surface Created sets that the surface is created.
 */
 public void surfaceCreated(SurfaceHolder arg0) {
     // TODO Auto-generated method stu1595
        try {
            Log.d(LOG_TAG, "setPreviewDisplay enter");
            mCameraDevice.setPreviewDisplay(mHolder);
            Log.d(LOG_TAG, "setPreviewDisplay exit");
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        mCameraDevice.unlock();
        Log.d("*************", "***********unlock()****");
     isSurfaceCreated = true;


 }

BR P.N

答案 1 :(得分:0)

recorder.setVideoSize(176, 144);
recorder.setVideoFrameRate(20);
recorder.setAudioChannels(1);
recorder.setPreviewDisplay( mHolder.getSurface());
这对我有帮助。在调试期间查看logcat