set Camera Display Orientation by Activity or by Display - Android android.hardware

Android examples for android.hardware:Camera Orientation

Description

set Camera Display Orientation by Activity or by Display

Demo Code

import android.app.Activity;
import android.hardware.Camera;
import android.view.Display;
import android.view.Surface;

public class Main {

  public static int setCameraDisplayOrientation(Activity activity, int cameraId, android.hardware.Camera camera) {
    return setCameraDisplayOrientation(activity.getWindowManager().getDefaultDisplay(), cameraId, camera);
  }/*ww w. j a va 2  s.  c om*/

  public static int setCameraDisplayOrientation(Display display, int cameraId, android.hardware.Camera camera) {
    int result = calcCameraDisplayOrientation(display, cameraId, camera);
    camera.setDisplayOrientation(result);
    return result;
  }

  public static int calcCameraDisplayOrientation(Display display, int cameraId, android.hardware.Camera camera) {
    android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();
    android.hardware.Camera.getCameraInfo(cameraId, info);
    int rotation = display.getRotation();
    int degrees = 0;
    switch (rotation) {
    case Surface.ROTATION_0:
      degrees = 0;
      break;
    case Surface.ROTATION_90:
      degrees = 90;
      break;
    case Surface.ROTATION_180:
      degrees = 180;
      break;
    case Surface.ROTATION_270:
      degrees = 270;
      break;
    }

    int result;
    if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
      result = (info.orientation + degrees) % 360;
      result = (360 - result) % 360; // compensate the mirror
    } else { // back-facing
      result = (info.orientation - degrees + 360) % 360;
    }
    return result;
  }

}

Related Tutorials