2011-11-08 62 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));