2016年10月18日 星期二

「 Android 」Camera 翻轉時轉方向 - SurfaceView裡的寫法

在
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
寫法:

public static void setCameraDisplayOrientation(Context activity, int cameraId, android.hardware.Camera camera) {
   android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();
   android.hardware.Camera.getCameraInfo(cameraId, info);
   int rotation = ((WindowManager)activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().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;
   }
   camera.setDisplayOrientation(result);
}

沒有留言:

張貼留言

影片的問題請留在影片的留言區裡。
部落格不會另外通知給我,所以很難發現你有留言。