Как сделать кастомную камеру, которая всегда будет снимать по горизонтали в Native Android? - PullRequest
2 голосов
/ 24 апреля 2019

Я хочу снимать видео всегда по горизонтали.

Если пользователь поворачивает телефон, я хочу захватить видео по горизонтали.

У меня есть одна ссылка для этого, но я хочу сделать это самостоятельно с настройкой.

как я могу реализовать это плавно?

1 Ответ

0 голосов
/ 24 апреля 2019

Попробуйте это

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...