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,然后在camera对象上调用上述方法。这两者之间不能有任何其他语句,否则它会崩溃。

于 2011-11-16T05:53:57.280 回答