2011-07-15 3 views
2

私はカスタマイズされたシステムサービスを作成しました。私のサービスはプレビューなしでバックグラウンドでカメラフレームをキャプチャします。私はdeveloper.androidのWebサイトの手順に従って、次のコードを実装しましたが、フレームを生成していません。ここでは、コードは次のようになります。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(); 
} 

私はフレームが、私はそれが行わ取得しておりません言及path.butでSDカードにキャプチャして保存することがしたかったです。何が私はここで間違っている。助けが要る!

AdvanceのReplierに感謝します。

答えて

0

私にも同様の問題がありました。表示している「ホルダー」オブジェクトと同期させ、キャンバスをロックし、フレームを処理してキャンバスを再度ロック解除する必要があります。私が思う問題は、プレビューデータがコールバックに返され、同時に(同期キーワードでトラップできるように)画面に描画されるということです。

関連する問題