получил одинаковый угол ориентации для приложения камеры - PullRequest
0 голосов
/ 05 февраля 2019

Я делаю приложение камеры. В этом мои изображения не сохраняются в правильной ориентации.Я установил

         <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait">

для активности в AndroidMainfest.и теперь я пытаюсь получить ориентацию, это дает 90 градусов всегда.Я хочу получить мобильную ориентацию с screenOrientation = портрет.Если я использую этот код для получения ориентации: -

public int setPhotoOrientation(Activity activity, int cameraId) {
    android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();
    android.hardware.Camera.getCameraInfo(cameraId, info);
    int rotation = activity.getWindowManager().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;
    // do something for phones running an SDK before lollipop
    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;
}

1 Ответ

0 голосов
/ 06 февраля 2019

Возможно, вы пропустили вызов

camera.setDisplayOrientation(result);

после определения градусов и компенсации для фронтальной камеры.

Но это влияет только на способ предварительного просмотра камеры на экране.Видеозаписи или обратные вызовы для предварительного просмотра по-прежнему доставляют кадры камеры в их естественной ориентации.

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