2011-07-15 18 views
2

我已經創建了一個自定義的系統服務,並且我希望我的服務能夠在沒有預覽的情況下在後臺捕獲相機幀。我遵循了developer.android網站中的步驟並實現了以下代碼,但它不生成任何框架。這裏的代碼是:Camera.Preview回調不產生相機幀

public void startCapture() { 

//Start The camera 
int openCamera = 0;//default camera to be opened 
mCamera = Camera.open(openCamera); 
Camera.Parameters p = mCamera.getParameters(); 
setPreviewSize(p.getPreviewSize());//method to get Camera size 
mCamera.getParameters().setPreviewFpsRange(1, 2); 
try{ 
    Camera.PreviewCallback mPreviewCallback = new Camera.PreviewCallback() 
    { 

    @Override 

    public void onPreviewFrame(byte[] data, Camera camera) { 

    // public void cameraPreview(byte[] data, Camera camera) { 

    // TODO Auto-generated method stub 

    decodeYUV420SP(rgb, data, width, height);//method for processing the image 

    bitmap.setPixels(rgb, 0, width, 0, 0, width, height); 

    String newFolder = "/Pictures"; 

    String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 

    File myNewFolder = new File(extStorageDirectory + newFolder); 

    if (!myNewFolder.exists()) 

     myNewFolder.mkdir();    



    File file = new File(path, "/Pictures/Frame-"+count+".jpg"); 

    boolean fileCreated = file.createNewFile(); 

    FileOutputStream out = new FileOutputStream(file); 

    bitmap.compress(Bitmap.CompressFormat.PNG, 90, out); 

    out.flush(); 

    out.close(); 
    }; 

}catch (Exception e) 
{ 

     e.printStackTrace(); 

} 
} 
mCamera.setPreviewCallback(mPreviewCallback); 
mCamera.startPreview(); 
} 

我想幀被捕獲和存儲在提到的路徑SD卡中,但我沒有完成它。我在這裏做錯了什麼。需要一些幫助!

感謝提前回復。

回答

0

我有類似的問題。您需要與您查看的「持有者」對象同步,鎖定畫布,處理畫面,然後再次解鎖畫布。我認爲問題在於,預覽數據在回調中返回並一前一後繪製到屏幕上(同步關鍵字允許您將其捕獲)。