Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on Nov 2nd, 2012  |  syntax: Java  |  size: 2.94 KB  |  views: 193  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. /*
  2.          * Camera management
  3.          */
  4.  
  5.         /**
  6.          * Selects the last used camera or a front-facing one
  7.          */
  8.         public void selectCamera()
  9.         {
  10.                 int cameraID = preferences.getInt("cameraID", -1);
  11.                 if (cameraID == -1)
  12.                 {
  13.                         // no camera was selected previously, select a front-facing one
  14.                         int nCameras = Camera.getNumberOfCameras();
  15.  
  16.                         CameraInfo cameraInfo = new CameraInfo();
  17.                         for (int i = 0; i < nCameras; i++)
  18.                         {
  19.                                 Camera.getCameraInfo(i, cameraInfo);
  20.                                 if (cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT)
  21.                                 {
  22.                                         cameraID = i;
  23.                                 }
  24.                         }
  25.  
  26.                         // there's no front camera
  27.                         if (cameraID == -1)
  28.                         {
  29.                                 cameraID = 0;
  30.                         }
  31.                 }
  32.  
  33.                 setPreviewSurface(previewSurface);
  34.                 setupCamera(cameraID);
  35.         }
  36.  
  37.         /**
  38.          * Sets the camera used for face detection
  39.          *
  40.          * @param cameraID the ID of the camera to use
  41.          */
  42.         public void setupCamera(int cameraID)
  43.         {
  44.                 // release previous one
  45.                 if (camera != null)
  46.                 {
  47.                         camera.release();
  48.                         camera = null;
  49.                 }
  50.  
  51.                 // save selection
  52.                 Editor editor = preferences.edit();
  53.                 editor.putInt("cameraID", cameraID);
  54.                 editor.commit();
  55.  
  56.                 try
  57.                 {
  58.                         // open camera
  59.                         camera = Camera.open(cameraID);
  60.  
  61.                         // get smallest available preview size
  62.                         Parameters params = camera.getParameters();
  63.                         List<Size> psizes = params.getSupportedPreviewSizes();
  64.                         Collections.sort(psizes, new Comparator<Size>()
  65.                         {
  66.                                 @Override
  67.                                 public int compare(Size size1, Size size2)
  68.                                 {
  69.                                         long pixels1 = size1.height * size1.width;
  70.                                         long pixels2 = size2.height * size2.width;
  71.  
  72.                                         return (pixels1 < pixels2) ? -1 : (pixels1 > pixels2) ? 1 : 0;
  73.                                 }
  74.                         });
  75.                         Size smallest = psizes.get(0);
  76.                         params.setPreviewSize(smallest.width, smallest.height);
  77.  
  78.                         // set preferred preview format
  79.                         params.setPreviewFormat(ImageFormat.NV21);
  80.  
  81.                         // save parameters
  82.                         camera.setParameters(params);
  83.  
  84.                         // set preview display
  85.                         camera.setPreviewDisplay(previewSurface.getHolder());
  86.  
  87.                         // set orientation
  88.                         CameraInfo info = new CameraInfo();
  89.                         Camera.getCameraInfo(cameraID, info);
  90.                         WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
  91.                         int _rotation = wm.getDefaultDisplay().getRotation();
  92.                         int degrees = 0;
  93.                         switch (_rotation)
  94.                         {
  95.                                 case Surface.ROTATION_0:
  96.                                         degrees = 0;
  97.                                         break;
  98.                                 case Surface.ROTATION_90:
  99.                                         degrees = 90;
  100.                                         break;
  101.                                 case Surface.ROTATION_180:
  102.                                         degrees = 180;
  103.                                         break;
  104.                                 case Surface.ROTATION_270:
  105.                                         degrees = 270;
  106.                                         break;
  107.                         }
  108.  
  109.                         int result = (360 + info.orientation - degrees) % 360;
  110.                         rotation = degrees;
  111.  
  112.                         camera.setDisplayOrientation(result);
  113.                         swapMetrics = (result % 180 == 0);
  114.  
  115.                         // set camera in imageprocessor
  116.                         if (processor != null)
  117.                                 processor.setCamera(camera, result);
  118.  
  119.                         calculator.loadSettings();
  120.                        
  121.                         // start preview
  122.                         camera.startPreview();
  123.                 }
  124.                 catch (Exception e)
  125.                 {
  126.                         // TODO Auto-generated catch block
  127.                         e.printStackTrace();
  128.                 }
  129.         }