1.传统方式
camera.setPreviewCallback(this);
camera.setPreviewDisplay(holder);
@Override public void onPreviewFrame(byte[] data, Camera camera) { Log.i("jack", "onPreviewFrame " ); }
2.另外一种
camera.setPreviewCallback(this); //预览参数 int size = setFixPictureWidth * setFixPictureHeight; size = size * ImageFormat.getBitsPerPixel(camera.getParameters().getPreviewFormat()) / 8; //回调必须用到 mBuffer = new byte[size]; camera.addCallbackBuffer(mBuffer); camera.setPreviewCallbackWithBuffer(this); SurfaceTexture mSurfaceTexture = new SurfaceTexture(MAGIC_TEXTURE_ID); camera.setPreviewTexture(mSurfaceTexture); @Override public void onPreviewFrame(byte[] data, Camera camera) { Log.i("jack", "onPreviewFrame " ); //必须这样使用 camera.addCallbackBuffer(mBuffer); }