Попробуйте это
public static void setCameraDisplayOrientation(int phoneRotation, int cameraId, Camera camera) {
Camera.CameraInfo info = new Camera.CameraInfo();
info = Camera.getCameraInfo(cameraId, info);
int degrees = 0;
switch (phoneRotation) {
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;
} else {
result = (info.orientation - degrees + 360) % 360;
}
camera.setDisplayOrientation(result);
}
, когда phoneRotation равно
int phoneRotation = activity.getWindowManager().getDefaultDisplay().getRotation();
Кстати, этот ответ изначально рефакторирован из некоторого ответа в stackoverflow.