Android前置摄像头预览尺寸

时间:2012-12-17 22:11:36

标签: android android-camera

我正在使用的应用程序可以使用设备上的前置摄像头。我试图通过获取支持的预览大小列表来设置预览大小,并通过它们循环查找非常接近的预览大小。我写的方法基本上与OS自己的相机应用程序相同。该方法工作正常,我想要的方式,这不是我在这里的原因。

我在相机预览方面遇到问题,看起来在某些设备上看起来很明显;要么压扁或拉伸图像的预览。我无法弄清楚它为什么会这样做所以我逐步完成它并查看我前置摄像头可用的所有支持的预览尺寸,发现只有2个,并且它们都不是正确的方面可用。我的SurfaceHolder.Callback类中的“surfaceChanged”方法报告前置摄像头的宽度和高度为762x480,但两个支持的预览尺寸(使用cam.getParameters()获取.getSupportedPreviewSizes())都在相反方面:480x800,320x640。

由于这些是唯一的选择,我的前置摄像头预览似乎是不可能的。我知道在版本2.3或更低版本中,任意值都可以用于宽度和高度,而不考虑支持的大小,但我试图使我的应用程序也适用于较新版本的操作系统。如何使预览看起来正确?

1 个答案:

答案 0 :(得分:1)

我的初步问题在技术上尚未解决(我仍然认为这是不可能的)但是我确实找到了非倾斜预览的技巧。

鉴于支持的预览尺寸与我的设备屏幕相比方向都不正确,确实似乎无法正常预览填满整个屏幕。在查看几个原生相机应用程序之后不同的设备(所有设备都显示正面预览而完全没有倾斜)我注意到很少有设备(实际上只有一个,而且有一个非标准的屏幕尺寸)有预览覆盖了整个屏幕,因为我试图在我的应用程序中做。

我重新设计了我的应用程序,以获得与设备屏幕最接近的宽度和高度的尺寸,但不会在任何尺寸或纵横比上进行,而是手动设置SurfaceView的高度和宽度以匹配所选尺寸。确实,现在某些设备上的预览周围有一些黑色空间,但它肯定比倾斜更好看。我有一个带按钮的面板,用于拍摄照片和操纵闪光灯设置等等,所以它确实不像人们想象的那么明显。