Guest

Untitled

By: a guest on Jan 19th, 2012  |  syntax: Java  |  size: 2.64 KB  |  hits: 37  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. package com.sbm.SunsetVideoMaker;
  2.  
  3. import java.io.IOException;
  4.  
  5. import android.content.Context;
  6. //import android.graphics.Camera;
  7. import android.hardware.Camera;
  8. import android.util.Log;
  9. import android.view.SurfaceHolder;
  10. import android.view.SurfaceView;
  11.  
  12. /** A basic Camera preview class */
  13. public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
  14.     private SurfaceHolder mHolder;
  15.     private Camera mCamera;
  16.  
  17.     public CameraPreview(Context context, Camera camera) {
  18.         super(context);
  19.         mCamera = camera;
  20.  
  21.         // Install a SurfaceHolder.Callback so we get notified when the
  22.         // underlying surface is created and destroyed.
  23.         mHolder = getHolder();
  24.         mHolder.addCallback(this);
  25.         // deprecated setting, but required on Android versions prior to 3.0
  26.         mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  27.     }
  28.    
  29.     public static Camera getCameraInstance(){
  30.         Camera c = null;
  31.         try {
  32.             c = Camera.open(); // attempt to get a Camera instance
  33.         }
  34.         catch (Exception e){
  35.             // Camera is not available (in use or does not exist)
  36.         }
  37.         return c; // returns null if camera is unavailable
  38.     }
  39.    
  40.     public void surfaceCreated(SurfaceHolder holder) {
  41.         // The Surface has been created, now tell the camera where to draw the preview.
  42.         try {
  43.             mCamera.setPreviewDisplay(holder);
  44.             mCamera.startPreview();
  45.         } catch (IOException e) {
  46.             Log.d("", "Error setting camera preview: " + e.getMessage());
  47.         }
  48.     }
  49.  
  50.     public void surfaceDestroyed(SurfaceHolder holder) {
  51.         // empty. Take care of releasing the Camera preview in your activity.
  52.     }
  53.  
  54.     public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
  55.         // If your preview can change or rotate, take care of those events here.
  56.         // Make sure to stop the preview before resizing or reformatting it.
  57.  
  58.         if (mHolder.getSurface() == null){
  59.           // preview surface does not exist
  60.           return;
  61.         }
  62.  
  63.         // stop preview before making changes
  64.         try {
  65.             mCamera.stopPreview();
  66.         } catch (Exception e){
  67.           // ignore: tried to stop a non-existent preview
  68.         }
  69.  
  70.         // make any resize, rotate or reformatting changes here
  71.  
  72.         // start preview with new settings
  73.         try {
  74.             mCamera.setPreviewDisplay(mHolder);
  75.             mCamera.startPreview();
  76.  
  77.         } catch (Exception e){
  78.             Log.d("", "Error starting camera preview: " + e.getMessage());
  79.         }
  80.     }
  81. }