我面临的问题是倾斜图像上的相机预览。
我的目标是在容器(FrameLayout).上缩放和填写摄像机预览。
当我将setPreviewSize()设置为16:9时,以及当我试图将FrameLayout上的图像拉伸为16:9 (此视图可能大于显示屏幕大小以填充整个屏幕区域)时,摄像机预览上的图像开始倾斜,这让我非常困惑。
但是,如果我setPreviewSize()为16:9,FrameLayout为4:3,则相机预览上的图像一点也不偏斜。
Ex.Secenario #1图像倾斜
preview size -> w: 1920 h: 1080 (16:9)
display size -> w: 1774 h:1080 (887:540)
container size -> w: 1920 h: 1080 (16:9)Ex.Secenario #2图像不偏斜
preview size -> w: 1920 h: 1080 (16:9)
display size -> w: 1774 h:1080 (887:540)
container size -> w: 1800 h: 1350 (4:3)那么,相机预览的纵横比和它的容器之间的关系是什么呢?我现在很困惑为什么16:9预览大小与16:9的容器大小不兼容。
发布于 2015-08-28 06:03:15
我发现意外的行为来自于不包括以下代码。在surfaceChanged()中
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
try {
mCamera.stopPreview();
} catch (Exception e){
// ignore: tried to stop a non-existent preview
}
// Before do any configuration to camera
// StopPreview() and StartPreview()
// after finish it
try {
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();
} catch (Exception e){
Log.d(TAG, "Error starting camera preview: " + e.getMessage());
}
}重要:一些相机的功能不能随意改变。特别是,更改摄像机预览的大小或方向要求您首先停止预览,更改预览大小,然后重新启动预览。从Android4.0 (API级别14)开始,可以更改预览方向,而无需重新启动预览。
我只是误解了android文档中这个重要的注释。因此,如果您使用停止,然后配置您的相机预览分辨率或调整您的父布局与相机预览的纵横比相同。开始预览后,倾斜图像预览不会发生。
https://stackoverflow.com/questions/32216938
复制相似问题