/**
     * 监听器:当图片捕获后调用
     */
   public interface OnPhotoCapturedListener {
        void onPhotoCaptured (Bitmap bitmap);
    }    /**
     * 设置照片捕获成功的监听器
     */
    public void setOnPhotoCapturedListener (OnPhotoCapturedListener listener) {
        this.listener = listener;
    }    /**
     * 抓取照片
     */
    public boolean startCapturePhoto () {
        if (isOpened == false) {
            return false;
        }        camera.startPreview();        camera.takePicture(null, null, new Camera.PictureCallback() {
            @Override
            public void onPictureTaken(byte[] imgData, Camera camera) {
                if (listener != null) {
                    Bitmap bitmap = BitmapFactory.decodeByteArray(imgData, 0, imgData.length);
                    listener.onPhotoCaptured(bitmap);
                    bitmap.recycle();
                }
            }
        });        return true;
    }    /**
     * 设置Holder
     */
    public void setSurfaceHolder (SurfaceHolder holder) {
        try {
            camera.setPreviewDisplay(holder);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

解决方案 »

  1.   

    startPreview 紧跟着就是 takePicture , 那能这么用呢.
      

  2.   

    我遇到一个问题,app在oppo安卓8.1正常,小米安卓6,安卓8,一加安卓9都正常,但是在红米安卓8.1报android.hardware.Camera.native_takePicture(Native Method)android.hardware.Camera.takePicture(Camera.java:1601) android.hardware.Camera.takePicture(Camera.java:1542) com.xiakesong.xkbj.FaceActivity8$3.onAutoFocus(FaceActivity8.java:653) 而且红米安卓8.1相机看起来像是黑白的,上面还有层阴影,你知道是什么原因吗?