预览宽高比在不同设备上有所不同

时间:2012-10-18 13:24:47

标签: android

在我的应用中,我有一个预览屏幕。在一台设备(LG,Android 2.2,320x480屏幕)和另一台设备(HTC,Android 2.3,480x800屏幕)上一切正常。在这两种情况下,支持的预览尺寸列表包括一个完全符合屏幕尺寸的尺寸,我选择它并且图像是完美的。 问题来自另一台设备,屏幕类似于第一个(三星,Android 2.3,320x480屏幕)。无论我选择适合屏幕尺寸的预览尺寸,如前面的情况,图像都不会保留其纵横比;圆圈呈椭圆形;图像沿着屏幕的短轴挤压。看来硬件本身,为了获得320x480预览,挤压图像(相机的外形尺寸为4:3,而屏幕的外形尺寸为3:2)。 所以我改变了预览出现的视图的布局参数,以适应相机的外形尺寸(尺寸:360x480。这部分解决了问题;实际上,要完全解决它我必须设置380x480(!! !)。 事实是,我不可能找到任何告诉我这种不同行为的API,以便我可以自动补偿它。即使Camera.Parameters.getHorizontalViewAngleCamera.Parameters.getHorizontalViewAngle似乎也没有帮助;他们在所有三个设备上给出相同的值! 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

经过深入调查,其中包括编写特殊代码以检查预览在屏幕上的实际显示方式,这就是我发现的内容。 在一台设备(LG E-720)上,裁剪预览图像以获得3:2的外形尺寸,然后将其调整大小以适合屏幕。宽高比保留: enter image description here

在第二台设备(Samsung ACE)上,预览图像似乎以不同方式裁剪,产生5:4图像(!?),然后调整大小以适应屏幕。由于形状因素的不同,屏幕上的图像会出现挤压: enter image description here

我已经检查过第二台设备是否有可用的软件更新,但事实并非如此。因此,为了在屏幕上获得或多或少的正确图像,我将目标视图定义为384像素高;这实际上会导致裁剪恢复正确的宽高比。但是,由于原始裁剪是水平不对称的,所以它不能补偿小的水平偏移。