Android 相机上的 getSupportedPreviewSizes() returns 只有 3 种尺寸

Android getSupportedPreviewSizes() on Camera returns only 3 sizes

我正在使用 Android 相机 API 构建相机应用程序,我需要设置相机的预览尺寸。我读过我应该在我的相机对象的参数对象上调用 getSupportedPreviewSizes() 以获得每个支持的大小的列表。问题在于此列表包含三种尺寸:640x480、352x288 和 320x240。

我正在使用 Android Studio 和内置模拟器。我试过模拟 Nexus 5、6 和 10,它们都给了我这三种尺寸。所以我怀疑这是模拟器的限制。如果是这样,有没有办法绕过它?或者这是因为其他原因造成的?

预览大小很少(如果有的话)与您渲染预览的表面大小完全匹配。 SurfaceViewTextureView 将缩放预览以填充可用的 space 这些视图。

因此,您的工作是将表面的大小调整到您想要的大小,同时保持预览的纵横比,因此缩放不会拉伸或挤压图像。 Grafika's AspectFrameLayout, or possibly my AspectLockedFrameLayout 是实现该目标的方法,子类化 SurfaceViewTextureView 并覆盖 onMeasure().