4:3 平板电脑上的 Android 相机预览纵横比

Posted

技术标签:

【中文标题】4:3 平板电脑上的 Android 相机预览纵横比【英文标题】:Android camera preview aspect ratio on 4:3 tablets 【发布时间】:2015-02-06 02:20:44 【问题描述】:

我有一个带有前置和后置摄像头的 4:3 屏幕平板电脑 (op3n dott)。 如果我使用getSupportedPreviewSizes() 获得预览尺寸,则会报告流动尺寸:

**Back camera:**
1024*576
720*480
640*480
640*360
352*288
320*240
176*144

**Front camera:**
1280*720
1024*576
640*480
176*144

当我为后置摄像头设置 1024*576 大小并且预览布局被调整为这个大小时,预览中显示的图片被拉伸。如果将预览版面调整为4:3纵横比,将图片拉伸到1024*768,图片看起来还可以。

前置摄像头和1280*720的预览尺寸,预览中的图片没有任何花招。

当我尝试两个相机的 640x480 预览尺寸时,图片看起来也很好。

所以结论是1024*576(16:9)预览尺寸的后置摄像头实际上是一张4:3的拉伸图片。

我有一个朋友的 hp touchPad 也有类似的问题。

我的问题是 我怎么知道预览的 16:9 纵横比图像何时真正是 4:3 拉伸图像?我可以使用 4:3 平板电脑的 640x480 预览尺寸来解决这个问题吗?

【问题讨论】:

拉伸与预览大小和图片大小无关。您的布局大小和预览大小不匹配 布局是根据预览大小调整大小的,所以这不是问题。 参考这个问题***.com/questions/19577299/… Camera.Parameters 参数 = mCamera.getParameters(); Camera.Size csize = params.getPreviewSize(); FrameLayout.LayoutParams lparams = (FrameLayout.LayoutParams)getLayoutParams(); lparams.width = csize.width; lparams.height = csize.height; 此调整表面大小可能有点太晚了。真正的测试是将表面硬编码为 1024x576 并选择此预览尺寸。 【参考方案1】:

我发现您必须在 onMeasure() 中使用“measureSpec”约束来调整(预)视图的大小,以便它不会被拉伸或挤压而出现在屏幕上。如果可用视图空间具有不同的纵横比,您可能会在一侧或另一侧获得空白空间。

【讨论】:

以上是关于4:3 平板电脑上的 Android 相机预览纵横比的主要内容,如果未能解决你的问题,请参考以下文章

Android:更改屏幕上的相机预览大小

三星 Galaxy S3 上的 Android 相机预览不正确

Android 自定义相机 Camera 预览变形拉伸问题

如何确定相机预览帧的默认方向?

将图像视图定位为相机预览上的叠加图像

Android:编码的相机预览帧总是横向的。如何旋转?