Я использую пользовательскую камеру и использую полноэкранное разрешение, чтобы отобразить предварительный просмотр на весь экран устройства. У нас есть собственный метод получения всех поддерживаемых размеров изображения, предварительного просмотра и видео, используя 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, которое доступно в наши дни в новых устройствах, которые мы называем устройством полного обзора или надрезающим дисплеем. Мне нужны правильные решения, которые могут работать на всех устройствах и дать мне тот же размер, который указан в родной камере устройства для полноэкранного просмотра камеры.