我有正确实施相机预览的问题。我查看了StackOverflow和许多教程中提供的许多答案。我创建了自己的项目以使其正确完成。
https://bitbucket.org/rdkit/cameratutorial
我认为它工作正常,但在Sony Xperia SP上检查此代码之后结果却很遗憾,但事实并非如此。
任何人都可以查看此代码并帮助我吗?
Moto G的截图
和Sony Xperia SP
答案 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
}