2012-12-17 130 views
0

我有一个应用程序,我正在使用该设备上的前置摄像头。我试图通过获取支持的预览大小列表来设置预览大小,并通过它们循环查找非常接近的预览大小。我写这样做的方法与操作系统自带的相机应用程序基本相同。该方法工作正常,我想怎么样,这不是我在这里的原因。Android前置摄像头预览大小

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

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

回答

1

我的第一个问题在技术上仍然没有解决(我仍然认为这是不可能的),但是我确实弄清楚了非歪斜预览的技巧。

鉴于支持的预览大小与我的设备的屏幕相比都不正确,所以确实看起来不可能有填充整个屏幕的正常预览在不同设备上查看了几个本机相机应用程序(所有这些应用程序都显示前面预览并没有任何偏斜),我注意到很少的设备(实际上只有一个设备,标准屏幕尺寸)的预览覆盖了整个屏幕,正如我在我的应用程序中试图做的那样。

我重新编写了我的应用程序,以获得与设备屏幕最接近的宽度和高度的尺寸,但无需以任何尺寸或高宽比进行翻阅,然后手动设置SurfaceView的高度和宽度以匹配所选尺寸。事实上,现在在某些设备上预览周围存在少量黑色空间,但它绝对看起来比倾斜更好。无论如何,我有一个带有按钮的面板,用于捕捉图片和操纵闪光灯设置等,所以它实际上并不像人们想象的那么明显。