Trên tất cả các thiết bị cầm tay tôi đã thử, bao gồm Galaxy Nexus với cả API 2.3.7 và 4.0 sau phương thức takePicture được gọi là thay đổi bề mặt đối với hình ảnh đã chụp, "Đánh giá hình ảnh".Xem lại hình ảnh không được hiển thị sau khi camera.takePicture
tôi đã thử nghiệm trên các thiết bị máy tính bảng và việc xem xét hình ảnh không hiển thị lên: 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;
}
Nó có vẻ như một vấn đề tôi có [ở đây] (http://stackoverflow.com/questions/11676726/its-a-kind-of-magic-videoview-and-displaying-videos- trên-android-3-1-vs-4-1) nhưng với video và với cùng một thiết bị. Bạn đã sửa nó à? – 2dvisio
Thật không may tôi đã từ bỏ và lấy một cách tiếp cận tương tự như của dinesh. Lấy hình ảnh từ việc chụp và hiển thị nó trong một ImageView như vậy, 'imageView.setImageBitmap (ImageUtils.jpegDecode (dữ liệu));' –