【发布时间】:2016-12-02 14:47:02
【问题描述】:
我想每秒从相机预览中截取屏幕截图。
我使用 SurfaceView 显示我的相机的预览。我需要每秒预览一次(截图),但不使用拍照。
我知道mCamera.setPreviewCallbackWithBuffer 方法,但我只能从中取帧一次。为了让它每秒更新一次,我需要启动 MediaRecorder 并录制视频。但是对于视频我需要设置outputFile,这意味着它可以使用大量的内存。
mCamera.setPreviewCallbackWithBuffer(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
Camera.Parameters parameters = camera.getParameters();
int width = parameters.getPreviewSize().width;
int height = parameters.getPreviewSize().height;
YuvImage yuv = new YuvImage(data, parameters.getPreviewFormat(), width, height, null);
ByteArrayOutputStream out = new ByteArrayOutputStream();
yuv.compressToJpeg(new Rect(0, 0, width, height), 50, out);
byte[] bytes = out.toByteArray();
final Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
});
如何在不设置输出文件和每秒拍照的情况下做到这一点?
【问题讨论】:
标签: android android-camera screenshot surfaceview