java - Android getSupportedPreviewSizes() on Camera 仅返回 3 个尺寸

标签 java android android-studio android-emulator android-camera

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

我正在使用 Android Studio 和内置模拟器。我尝试过模拟 Nexus 5、6 和 10,它们都提供了这三种尺寸。所以我怀疑这是模拟器的限制。如果是这样,有什么办法可以绕过它吗?或者这是因为其他原因而发生的?

最佳答案

预览尺寸很少(如果有的话)与您渲染预览的表面的尺寸完全匹配。 SurfaceViewTextureView 将缩放预览以填充这些 View 的可用空间。

因此,您的工作是将表面调整为您想要的大小,同时保持预览的纵横比,以便缩放不会拉伸(stretch)或挤压图像。 Grafika's AspectFrameLayout ,或者可能my AspectLockedFrameLayout ,都是实现这一目标的方法,就像子类化 SurfaceViewTextureView 以及重写​​ onMeasure() 一样。

关于java - Android getSupportedPreviewSizes() on Camera 仅返回 3 个尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30965969/

相关文章:

安卓工作室 - 错误 : No resource found that matches the given name: attr 'metaButtonBarButtonStyle'

java - 请求权限对话框未显示

java - java从文件中读取对象

java - 多层应用程序中的 Hibernate 依赖项位置

java - 在android中通过TCP Socket传输一个byte[]

java - 无法在 SD 卡中创建文件

android - Android Studio Beta Channel、Android Studio Canary Channel、Android Studio Dev Channel 有什么区别?

java - 无法为Android build.gradle文件添加其他Maven存储库

java - 只有创建 View 层次结构的原始线程才能接触其 View 。在安卓上

java - 使用运行时调用的抽象方法的值