Как получить поддерживаемый размер с соотношением 18,5: 9 или 18: 9 для камеры? - PullRequest
0 голосов
/ 12 сентября 2018

Я использую пользовательскую камеру и использую полноэкранное разрешение, чтобы отобразить предварительный просмотр на весь экран устройства. У нас есть собственный метод получения всех поддерживаемых размеров изображения, предварительного просмотра и видео, используя Camera или Camera Manager для всех типов устройств. Проверьте ниже код, который я использовал, чтобы получить все поддерживаемые размеры для камеры.

  • Использование камеры

    Camera.Parameters parameters = mCameraHelper.getCamera().getParameters();
    
    // Images supported size by device
    List<Camera.Size> pictureSizes = parameters.getSupportedPictureSizes();
    
    // Camera Preview supported size by device
    List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes();
    
    // Video supported size by device
    List<Camera.Size> videoSizes = parameters.getSupportedVideoSizes();
    
  • Использование диспетчера камеры

    CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
    
    try {
        for (String cameraId : manager.getCameraIdList()) {
            CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
    
    
            StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
    
            // Images supported size by device
            Size[] pictureSizes = map.getOutputSizes(ImageFormat.JPEG);
    
            // Video supported size by device
            Size[] videoSizes = map.getOutputSizes(MediaRecorder.class);
        }
    } catch (CameraAccessException e) {
        e.printStackTrace();
        Log.e(TAG, "setUpCameraOutputs: catch: " + e.getMessage());
    } catch (NullPointerException e) {
        Log.e(TAG, "setUpCameraOutputs: catch: " + e.getMessage());
    }
    

Я использовал этот код и протестировал на Samsung A8 + устройство. Ниже приведены размеры, которые я получаю в выводе после выполнения кода выше.

==============================================
================  Preview size    ============
Preview size : 0 : Width: 1080 , Height: 1920
Preview size : 1 : Width: 1080 , Height: 1440
Preview size : 2 : Width: 1088 , Height: 1088

==============================================
================  Picture size    ============
Picture size : 0 : Width: 3456 , Height: 4608
Picture size : 1 : Width: 2592 , Height: 4608
Picture size : 2 : Width: 3456 , Height: 3456
Picture size : 3 : Width: 2448 , Height: 3264
Picture size : 4 : Width: 1836 , Height: 3264
Picture size : 5 : Width: 2448 , Height: 2448
Picture size : 6 : Width: 1152 , Height: 2048
Picture size : 7 : Width: 1080 , Height: 1920

==============================================
================   Video size   ==============

Video size : 0 : Width: 1080 , Height: 1920
Video size : 1 : Width: 1080 , Height: 1440
Video size : 2 : Width: 1072 , Height: 1072

Сравнение указанного выше выходного размера с реальным собственным Samsung A8 + Размеры камеры устройства, которые перечислены ниже. Исходя из этого, я хочу, чтобы размер отношения 18,5: 9 был TAG, как «мне нужен этот размер» в списке ниже.

==============================================
================  Picture size    ============
Picture size : 0 : Width: 3456 , Height: 4608
Picture size : 1 : Width: 2592 , Height: 4608
Picture size : 2 : Width: 2240 , Height: 4608    <--- I need this size
Picture size : 3 : Width: 3456 , Height: 3456
Picture size : 4 : Width: 1836 , Height: 3264
Picture size : 5 : Width: 2448 , Height: 2448

==============================================
================   Video size   ==============

Video size : 0 : Width: 1080 , Height: 1920
Video size : 1 : Width: 1080 , Height: 2224    <--- I need this size
Video size : 2 : Width: 1072 , Height: 1072
Video size : 2 : Width: 720 , Height: 1280
Video size : 2 : Width: 480 , Height: 640

Мой запрос: Когда я использовал более высокое разрешение для полноэкранного предварительного просмотра из выходного размера с использованием приведенного выше кода, предварительный просмотр камеры растягивается, поскольку он не имеет разрешения 18,5: 9.

Итак, как я могу получить разрешение такого типа, как соотношение 18: 9 или 18,5: 9, которое доступно в наши дни в новых устройствах, которые мы называем устройством полного обзора или надрезающим дисплеем. Мне нужны правильные решения, которые могут работать на всех устройствах и дать мне тот же размер, который указан в родной камере устройства для полноэкранного просмотра камеры.

...