2013-07-25 100 views
0

我想使用onPreviewFrame将预定义数量的帧保存到缓冲区,然后将它们保存为png。Android相机:将预览帧保存到缓冲区?

有很多关于如何一次完成整个捕获和保存的例子,但是我需要做的只是缓冲,比如我们先说3个连续的帧。也许我可以创建一个字节对象数组?我是新来的Java所以任何建议,欢迎。

回答

2

在内存不足的情况下,你必须限制你的数组大小

private ArrayList<byte[]> queue = new ArrayList<byte[]>(3); 
    private Camera.PreviewCallback mPreviewCallback = new Camera.PreviewCallback() { 

     @Override 
     public void onPreviewFrame(byte[] data, Camera camera) {   
      // TODO Auto-generated method stub 

      if (queue.size() == 3) { 
       queue.remove(0); 
      } 
      queue.add(data); 
     } 

    }; 
+0

当然,数组的大小会受到限制,以防止内存不足。感谢您的提示,现在就试试 – casper

+1

如果您想要同时在其他线程中转储数据,请不要忘记添加同步(队列){}以覆盖代码块 – yushulx

+0

保存可以在离线后完成将帧捕获到Array中。我仍然必须弄清楚如何做到这一点...... – casper