在我尝试的所有手机上,包括带有API 2.3.7和4.0的Galaxy Nexus,在调用takePicture方法后,曲面视图会更改为拍摄的图像,即“图像查看”。
我已经在这些平板电脑设备上进行了测试,但图片审核没有显示出来: XOOM API 3.1 Galaxy Tab 10.1 API 3.1 Galaxy Tab 10.1 API 3.2
surfaceView = (SurfaceView)findViewById(R.id.surfaceView);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
...
public void takePicture() {
cam.takePicture(this, null, this); //Shuttercallback, RawCallback, JpegCallback
}
...
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// Stop preview before changing camera parameters
if(isPreviewRunning) {
this.cam.stopPreview();
}
Camera.Parameters p = this.cam.getParameters();
LogUtils.info("CheckCapture", "Preview Size: " + String.valueOf(width) +"x" + String.valueOf(height));
p.setPreviewSize(width, height);
//Set picture size to a multiple of previewSize to maintain aspect ratio AND minimum capture width
//LogUtils.info("CheckCapture", "Picture Size: " + String.valueOf(width*factor) +"x" + String.valueOf(height*factor));
p.setPictureSize(width, height);
p.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
//Set picture format (we can check device capabilities, but all devices at API level 8 should support JPEG)
p.setPictureFormat(PixelFormat.JPEG);
//Set new camera parameters
try {
this.cam.setParameters(p);
}catch (Exception e) {
e.printStackTrace();
}
//Setup preview display on our surfaceViewHolder
try {
this.cam.setPreviewDisplay(surfaceHolder);
} catch (IOException e) {
e.printStackTrace();
}
//Start preview
this.cam.startPreview();
this.isPreviewRunning = true;
}
答案 0 :(得分:3)
on btn_click.onclickListener使用回调方法如下
_btn_click.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
ShutterCallback shutterCallBack = new ShutterCallback() {
@Override
public void onShutter() {}
};
PictureCallback pictureCallBack = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {}
};
PictureCallback pictureCallBackJPG = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Bitmap capturedBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
}
};
setFlashMode();
camera.takePicture(shutterCallBack, pictureCallBack,
pictureCallBackJPG);
showProgressDialog("Bitte warten", CameraCaptureActivity.this);
}
});
在此代码主线中
Bitmap capturedBitmap = BitmapFactory.decodeByteArray(data,0,data.length);
在imageview.setImageBitmap(capturedBitmap)中使用capturedBitmap;显示图像。
快乐编码