2011-11-08 123 views
1

我正在尝试编写一个连续拍照的应用程序。我有一个活动和预览课程。我使用AsyncTask类来计算出它。摄像头预览失败队列缓冲失败

private class CaptureTask extends AsyncTask<Boolean,Integer,Integer> 
    { 

     @Override 
     protected Integer doInBackground(Boolean... arg0) { 
      // TODO Auto-generated method stub 
      while(running) 
      { 
       if(!takingPicture&&getPreviewState()&&!p.checkCamera()) 
        takePicture(); 
       else if(!takingPicture&&!p.getPreviewState()) 
        clearPic(); 
      } 
      return picCounter; 
     } 
     protected void onPostExecute(Integer pics) 
     { 
      t.setText("Pics taken: "+pics); 
     } 

    } 

这可以在一台设备上运行,运行CM7的Motorola Droid。但是,当我在运行ACS 2.3.4的三星Epic上加载它时,我一直得到以下错误,直到我退出应用程序。没有预览显示,只是黑色。

11月11日至8日:42:28.207:ERROR/CameraHardwareSec(76):ERR(INT ::机器人:: CameraHardwareSec previewThread()):覆盖queueBuffer失败 11月11日至8日:42:28.238:ERROR/v4l2_utils(76):Error =来自qbuf的无效参数

我试过寻找这个问题,但只找到了一些未解决的问题。

回答

1

如果您所要拍摄的视频不使用

mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 

设置,即使您正在使用SDK工作的媒体记录> = 8

做平常,而不是:

mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); 
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); 

而且你会看到

机器人:: CameraHardwareSec :: previewThread()):覆盖queueBuffer失败这个错误的

来源是默认的摄像头预览和MediaRecorder视频大小的尺寸不匹配的错误消失时,你的尺寸相同的搭配:

CamcorderProfile camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); 
parameters.setPreviewSize(camcorderProfile.videoFrameWidth, camcorderProfile.videoFrameHeight); 
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));