Приложение камеры, использующее сбой SurfaceView - PullRequest
0 голосов
/ 15 ноября 2011

Приложение аварийно завершает работу (прежде чем что-либо запускается, есть диалоговое окно, которое необходимо принудительно закрыть, а затем приложение закрывается) в setPreviewDisplay (holder) в SurfaceCreated, и я не могу понять, почему.Пожалуйста, порекомендуйте.Ниже мой код.

</p> <pre><code> 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()); } }

1 Ответ

0 голосов
/ 16 ноября 2011

В surfaceCreated, непосредственно перед setPreviewDisplay, требуется Camera.open, а затем вызывать указанный метод для объекта камеры.Между этими двумя не может быть никаких других утверждений, иначе он вылетит.

...