【发布时间】:2015-07-11 21:52:21
【问题描述】:
我已经在 Android Lollipop 上测试了新的 Camera2 API。我想获取支持的预览尺寸:
StreamConfigurationMap streamConfigurationMap = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
Size[] sizes = streamConfigurationMap.getOutputSizes(SurfaceTexture.class);
在分辨率为 2560x1600 像素的三星 Galaxy Tab S 上,最大预览尺寸为 1440x1080 像素。所以我的 previewSize 是 1440x1080px 和 TextureView 表面尺寸是 2560x1600px 所以图像是扭曲的。
我测试了已弃用的旧相机 API。
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> sizes = parameters.getSupportedPictureSizes();
上面的代码返回 32 种不同的预览尺寸组合,例如:2560x1920、1920x1080、1080x1920、2560x2560 等。在这种情况下,我可以选择最佳尺寸并显示正确的图像。
我不知道如何强制新 API 获得最佳大小。我知道解决方案是缩小显示预览的视图,但内置相机应用程序可以在全屏模式下正常工作。 提前感谢所有建议!
【问题讨论】:
-
“所以我的 previewSize 是 1440x1080px 和 TextureView 表面尺寸是 2560x1600px 所以图像失真” - 那是因为你的纵横比不一样。您需要使
TextureView与相机预览图像具有相同的纵横比,例如使用负边距使其在一个轴上大于您的屏幕。 -
我知道,但为什么预览尺寸这么小?在三星 Galaxy S4 上预览尺寸为 1920 x 1080(与分辨率相同),显示图像没有问题。
-
"我知道,但是为什么预览尺寸这么小?" -- 我怀疑你得问问三星。
-
三星和今天的许多其他制造商一样,还没有(还没有?)全心全意地接受 Camera2 API。他们确实实现了它,因为它在 Lollipop 上是必需的,但除了 Nexus 设备之外,如果您使用已弃用的 Camera API,您今天会得到更好的服务。你会发现Camera2的一些高级功能不起作用,而另外一些基本上是通过旧的HAL实现的。
-
谢谢,这是重要信息。我不会在这个问题上浪费时间。
标签: android android-camera android-5.0-lollipop