0

SurfaceCreatedのsetPreviewDisplay(holder)でアプリケーションがクラッシュし(何かが始まる前に、強制的に閉じてからアプリを終了する必要があるダイアログが表示されます)、その理由がわかりません。お知らせ下さい。以下は私のコードです。

  public void onCreate(Bundle savedInstanceState) { 
       cameraPreview = new CameraPreview();//CameraPreview has a methos to open the Camera
       cameraObject = CameraPreview.getCameraInstance();
       mHolder = previewSurface.getHolder();//previewSurface is the SurfaceView declared in XML and then I'm doinf findViewById
       mHolder.addCallback(this);

}

   public void surfaceCreated(SurfaceHolder holder) {        

    // The Surface has been created, now tell the camera where to draw the preview.       
   try {           
            cameraObject.setPreviewDisplay(holder);  //CRASHES HERE         
           //cameraObject.startPreview();       
        } catch (IOException e) {   
            Log.d(TAG, "Error setting camera preview: " + e.getMessage());       
        }   
}  

public void surfaceDestroyed(SurfaceHolder holder) {       
    // empty. Take care of releasing the Camera preview in your activity.    
}

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        // If your preview can change or rotate, take care of those events here.       
        // Make sure to stop the preview before resizing or reformatting it.        
        if (mHolder.getSurface() == null){         
            // preview surface does not exist         
                return;        
            }        
        // stop preview before making changes       
        try {            
            cameraObject.stopPreview();      
            } catch (Exception e){         
                   // ignore: tried to stop a non-existent preview     
            }      
            // make any resize, rotate or reformatting changes here     
            // start preview with new settings    
            try {           
                cameraObject.setPreviewDisplay(mHolder);       
                cameraObject.startPreview();        
                } catch (Exception e){      
                       Log.d(TAG, "Error starting camera preview: " + e.getMessage());     
                }   
}

4

1 に答える 1

0

surfaceCreatedでは、setPreviewDisplayの直前に、Camera.openが必要であり、カメラオブジェクトで上記のメソッドを呼び出す必要があります。これら2つの間に他のステートメントを含めることはできません。そうしないと、クラッシュします。

于 2011-11-16T05:53:57.280 に答える