2013-07-25 78 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