Android相机准备失败

时间:2009-09-10 04:29:15

标签: android video

我正在尝试为Android设备构建一个简单的录像机,但我的成功有限并且结果好坏参半。它工作一次,但现在,没有改变任何东西,我得到一个“相机不可用”错误,然后“准备失败-2147483648”错误

预览器的构造函数看起来像

   private SurfaceHolder holder_;
   private MediaRecorder r_;
   public CameraPreview(Context context, AttributeSet attrs) {
       super(context, attrs);
       holder_ = getHolder();
       holder_.addCallback(this);
       holder_.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
       r_ = new MediaRecorder();
       r_.setAudioSource(MediaRecorder.AudioSource.MIC);
       r_.setVideoSource(MediaRecorder.VideoSource.CAMERA);
       r_.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
       r_.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
       r_.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
    }    

和我的

surfaceCreated()

方法看起来像

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        r_.setPreviewDisplay(holder_.getSurface());
        r_.setOutputFile("/sdcard/test.mpg");
        if (r_ != null){
            try{
                r_.prepare();
                r_.start();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
     }

有什么想法吗?

谢谢,克里斯

2 个答案:

答案 0 :(得分:5)

我没有使用过视频录制功能,但是对于静态图片使用Camera课程,您必须通过Camera明确释放release()对象。如果不这样做意味着相机将被无限期捆绑(可能直到重启)。

如果您未在release()上致电MediaRecorder,则可能会遇到同样的问题。

答案 1 :(得分:0)

您需要致电camera.unlock()

您需要呼叫MediaRecorder对象:

setCamera(theCameraObject) 
// I have this after 'new MediaRecorder' and before 'setAudioSource()

//everything u wrote goes in here and then:

setVideoSize()
setVideoFrameRate()