我正在尝试编写一个不断拍照的应用。我有一个活动和一个预览课程。我用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的摩托罗拉Droid。但是,当我在运行ACS 2.3.4的Samsung Epic上加载它时,我会一直收到以下错误,直到我退出应用程序。没有显示预览,只有黑色。
11-08 11:42:28.207:ERROR / CameraHardwareSec(76):ERR(int android :: CameraHardwareSec :: previewThread()):overlay queueBuffer失败 11-08 11:42:28.238:ERROR / v4l2_utils(76):错误=来自qbuf的无效参数
我已经尝试过寻找这个问题,但只发现了一些尚未解决的问题。
答案 0 :(得分:1)
如果您尝试录制视频,请不要使用
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
即使您正在使用SDK&gt; = 8
,也要设置媒体记录器通常改为:
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
你会停止看
android :: CameraHardwareSec :: previewThread()):overlay queueBuffer fail
此错误的来源是默认相机预览尺寸与MediaRecorder视频尺寸不匹配,因为当您将尺寸设为相同时错误消失:
CamcorderProfile camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
parameters.setPreviewSize(camcorderProfile.videoFrameWidth, camcorderProfile.videoFrameHeight);
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));