我使用的是自定义相机,并使用全屏分辨率在设备的整个屏幕上显示预览。对于所有类型的设备,我们都可以使用 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());
}
我已使用此代码并在三星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的比例大小,这是标签,因为在下面的列表中“我需要这个尺寸”。
==============================================
================ 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之类的分辨率,如今在称为全屏设备或陷波显示器的新设备中可用。我需要适用于所有设备的适当解决方案,并提供与设备本机相机中列出的尺寸相同的尺寸,以便全屏预览相机。