2010-04-12 141 views
2

我是新来的。我一直在尝试使用android模拟器创建视频捕捉应用程序,但没有取得太大的成功。据我所知,通过互联网上的所有样本和代码(本网站和其他网站),我仍然错过了一步。MediaRecorder准备失败

我已经使用接近这个线程通过JonPro做出结束这个样本的尝试: http://www.anddev.org/viewtopic.php?p=24723#24723

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

即使该论坛中的代码声称工作,我发现这条线丢失: recorder.setCamera(camera);

但仍然没有喜悦的记录表明: “无法获取摄像机(0x16b70)参数” 时准备()被调用,但它仍然作为预览是好的,没有什么意义,但没有记录!任何帮助或建议将不胜感激。

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

+0

我一直在试图长时间录制视频没有成功。作为解决方案,我使用MediaStore.ACTION_CAPTURE_VIDEO意图启动内置应用程序来录制和返回视频。 – 2010-05-20 07:14:02

回答

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

+0

对于摄像机必须在'prepare'之前和'setPreviewDisplay'之后解锁的信息+1 – Jomoos 2012-02-13 07:53:21

0
recorder.setVideoSize(176, 144); 
recorder.setVideoFrameRate(20); 
recorder.setAudioChannels(1); 
recorder.setPreviewDisplay(mHolder.getSurface()); 

帮我。在调试过程中查看logcat