在Android上拉伸相机预览

时间:2014-11-06 13:29:39

标签: android camera

我有正确实施相机预览的问题。我查看了StackOverflow和许多教程中提供的许多答案。我创建了自己的项目以使其正确完成。

https://bitbucket.org/rdkit/cameratutorial

我认为它工作正常,但在Sony Xperia SP上检查此代码之后结果却很遗憾,但事实并非如此。

任何人都可以查看此代码并帮助我吗?

Moto G的截图

Moto G

和Sony Xperia SP Sony Xperia SP

2 个答案:

答案 0 :(得分:0)

Camera PreviewSize设置非常棘手。

在某些手机上,不会考虑顶部状态栏的高度,但其他实施方案会考虑这个高度。还有底部的虚拟按钮区域。

例如,如果总屏幕宽度= 1080且高度= 1920,那么当不考虑状态栏的高度和虚拟按钮区域的高度时,如果你将PreviewSize设置为16:9的比例,它看起来会很好。但!当状态栏的高度和virtaul按钮的高度被考虑时,可用的屏幕高度将永远不会达到1920,那么屏幕中的比率将与PreviewSize不同,它将是拉伸。

要解决此问题,您应该实现自己的getOptimalPreviewSize()方法,并根据可用的屏幕高度选择适当的预览比例。

答案 1 :(得分:0)

最后我自己找到了解决方案。在进行更改之前,我没有停止预览。

正如评论中所说的方法

surfaceChanged()

如果您的预览可以更改或旋转,请在此处理这些事件。 确保在调整大小或重新格式化之前停止预览。

所以我需要添加

try {
    mCamera.stopPreview();
} catch (Exception e) {
    // ignore: tried to stop a non-existent preview
}