2

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

我试过在 JonPro 制作的这个线程的结尾附近使用这个示例: http ://www.anddev.org/viewtopic.php?p=24723#24723

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

尽管该论坛中的代码声称可以工作,但我发现缺少这一行:recorder.setCamera(camera);

但是仍然没有乐趣,因为日志显示:调用 prepare() 时“无法获取相机(0x16b70)参数”,但它仍然没有意义,因为预览还可以,但没有录制!任何帮助或建议将不胜感激。

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

4

2 回答 2

5

The fix for this problem is mCameraDevice.unlock() must be set before prepare. It's important that this is set after mCameraDevice.setPreviewDisplay(mHolder);

example:

/*--------------------------------------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

于 2010-05-21T06:50:18.057 回答
0
recorder.setVideoSize(176, 144);
recorder.setVideoFrameRate(20);
recorder.setAudioChannels(1);
recorder.setPreviewDisplay( mHolder.getSurface());

这对我有帮助。在调试期间查看 logcat

于 2011-04-14T08:59:51.727 回答