我正在使用 Android 相机 API 构建相机应用程序,我需要设置相机的预览尺寸。我读到我应该在相机对象的参数对象上调用 getSupportedPreviewSizes() 来获取每个支持的尺寸的列表。问题是该列表包含三种尺寸:640x480、352x288 和 320x240。
我正在使用 Android Studio 和内置模拟器。我尝试过模拟 Nexus 5、6 和 10,它们都提供了这三种尺寸。所以我怀疑这是模拟器的限制。如果是这样,有什么办法可以绕过它吗?或者这是因为其他原因而发生的?
最佳答案
预览尺寸很少(如果有的话)与您渲染预览的表面的尺寸完全匹配。 SurfaceView
和 TextureView
将缩放预览以填充这些 View 的可用空间。
因此,您的工作是将表面调整为您想要的大小,同时保持预览的纵横比,以便缩放不会拉伸(stretch)或挤压图像。 Grafika's AspectFrameLayout
,或者可能my AspectLockedFrameLayout
,都是实现这一目标的方法,就像子类化 SurfaceView
或 TextureView
以及重写 onMeasure()
一样。
关于java - Android getSupportedPreviewSizes() on Camera 仅返回 3 个尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30965969/