Android上使用相机的的Preview的时候,如果不使用Buffer,相机程序会反复创建销毁Byte数组,造成系统频繁垃圾回收,非常影响体验,这时可以用Buffer来进行处理。
首先,在调用相机的回调时,用如下代码:
for (int i = 0; i < 3; i++) { camera.addCallbackBuffer(new byte[((previewWidth * previewHeight) * bitsPerPixel) / 8 ]); } camera.setPreviewCallbackWithBuffer(this);
在Callback中加了3个Buffer,一般2个应该够用,保险起见加3个。
在OnPreviewFrame处理完毕后,再把Buffer加回去。
public void onPreviewFrame(byte[] data, Camera camera) { camera.addCallbackBuffer(data);
时间: 2024-09-29 01:00:20