2014-11-06 114 views
1

我有一个正确实现相机预览的问题。我查看了StackOverflow和许多教程中提供的许多答案。我创建了自己的项目,让它正确完成。Android上的拉伸相机预览

https://bitbucket.org/rdkit/cameratutorial

我认为它工作正常,但检查对索尼XPERIA SP的代码,不幸的是它没有后横空出世。

任何人都可以看看这段代码并帮助我吗?

从Moto G的

Moto G

和索尼的Xperia SP Sony Xperia SP

+0

http://stackoverflow.com/questions/19577299/android-camera-preview-stretched – 2014-11-06 13:34:06

+0

谢谢,但这是导致我的源写一个我自己的代码。也许在执行过程中我错过了一些东西。这就是为什么我提供源代码,也许有人可以指出我犯的错误 – rdkit 2014-11-06 13:37:45

+0

是的,你必须写你自己的方法来选择预览尺寸 – 2014-11-06 14:05:06

回答

0

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

由于意见在方法

surfaceChanged() 

如果您预览可以改变或旋转,把这些事件的关心在这里说。 确保在调整大小或重新格式化之前停止预览。

所以我需要添加

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

相机PreviewSize截图是非常棘手的设置。

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

例如,如果总屏幕的宽度= 1080和高度= 1920,那么当不考虑状态栏的高度和虚拟按钮区域的高度时,如果将预览大小设置为16:9的比例,看起来不错。但!当考虑到状态栏的高度和按钮的高度时,可用的屏幕高度将永远不会达到1920,那么屏幕中的比率将与预览大小不同,并且会拉长。

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