package com.mobmonkey.mobmonkeyandroid.utils; import java.io.IOException; import android.content.Context; import android.hardware.Camera; import android.view.SurfaceHolder; import android.view.SurfaceView; public class MMCameraSurfaceView extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder holder; private Camera camera; public MMCameraSurfaceView(Context context, Camera camera) { super(context); this.camera = camera; holder = getHolder(); holder.addCallback(this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } /* * (non-Javadoc) * @see android.view.SurfaceHolder.Callback#surfaceChanged(android.view.SurfaceHolder, int, int, int) */ @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // if preview does not exist if(holder.getSurface() == null) { return; } // stop preview before making changes try { camera.stopPreview(); } catch(Exception ex) { ex.printStackTrace(); } // start preview with new setting try { camera.setPreviewDisplay(holder); camera.startPreview(); } catch(Exception ex) { ex.printStackTrace(); } } /* * (non-Javadoc) * @see android.view.SurfaceHolder.Callback#surfaceCreated(android.view.SurfaceHolder) */ @Override public void surfaceCreated(SurfaceHolder holder) { // surface created, draw preview for camera try { camera.setPreviewDisplay(holder); camera.startPreview(); } catch(IOException ex) { ex.printStackTrace(); } } /* * (non-Javadoc) * @see android.view.SurfaceHolder.Callback#surfaceDestroyed(android.view.SurfaceHolder) */ @Override public void surfaceDestroyed(SurfaceHolder holder) { } }