图像检查未在camera.takePicture之后显示

时间:2012-04-24 18:11:58

标签: camera android

在我尝试的所有手机上,包括带有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;
}

1 个答案:

答案 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;显示图像。

快乐编码