package org.andengine.extension.augmentedreality; import java.io.IOException; import org.andengine.util.debug.Debug; import android.content.Context; import android.hardware.Camera; import android.view.SurfaceHolder; import android.view.SurfaceView; /** * (c) 2010 Nicolas Gramlich * (c) 2011 Zynga Inc. * * @author Nicolas Gramlich * @since 21:38:21 - 24.05.2010 */ class CameraPreviewSurfaceView extends SurfaceView implements SurfaceHolder.Callback { // =========================================================== // Constants // =========================================================== // =========================================================== // Fields // =========================================================== private final SurfaceHolder mSurfaceHolder; private Camera mCamera; // =========================================================== // Constructors // =========================================================== public CameraPreviewSurfaceView(final Context pContext) { super(pContext); this.mSurfaceHolder = this.getHolder(); this.mSurfaceHolder.addCallback(this); this.mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } // =========================================================== // Getter & Setter // =========================================================== // =========================================================== // Methods for/from SuperClass/Interfaces // =========================================================== public void surfaceCreated(final SurfaceHolder pSurfaceHolder) { this.mCamera = Camera.open(); try { this.mCamera.setPreviewDisplay(pSurfaceHolder); } catch (IOException e) { Debug.e("Error in Camera.setPreviewDisplay", e); } } public void surfaceDestroyed(final SurfaceHolder pSurfaceHolder) { this.mCamera.stopPreview(); this.mCamera.release(); this.mCamera = null; } public void surfaceChanged(final SurfaceHolder pSurfaceHolder, final int pPixelFormat, final int pWidth, final int pHeight) { final Camera.Parameters parameters = this.mCamera.getParameters(); parameters.setPreviewSize(pWidth, pHeight); this.mCamera.setParameters(parameters); this.mCamera.startPreview(); } // =========================================================== // Methods // =========================================================== // =========================================================== // Inner and Anonymous Classes // =========================================================== }