银河S4的Android定制的相机问题 [英] Galaxy S4 Android Custom Camera Issue
问题描述
我正在开发一个自定义的摄像头的应用程序。一切工作正常摩托罗拉摩托摹但是当我试图挽救采取银河S4的图片,它tooks这个方面:
HTTPS://www.dropbox。 COM / S / cxyn6eivtcejzln /图片 - 6186%5B1%5D.jpg?DL = 0
CameraSurface.java
@覆盖
公共无效surfaceChanged(SurfaceHolder持有人,INT格式,诠释的宽度,高度INT){
Camera.Size previewSize =确定previewSize(真,宽,高);
Camera.Parameters参数= camera.getParameters();
camera.setDisplayOrientation(90);
parameters.set previewSize(previewSize.width,previewSize.height);
名单< Camera.Size>尺寸= parameters.getSupportedPictureSizes();
Camera.Size大小= sizes.get(0);
的for(int i = 0; I< sizes.size();我++){
如果(sizes.get(我).WIDTH> size.width)
大小= sizes.get(ⅰ);
}
parameters.setPictureSize(size.width,size.height);
parameters.set(display_mode,肖像);
camera.setParameters(参数);
camera.start preVIEW();
}
我发现自己对上述问题的解决方案。
当您设置设置previewSize 和 setPictureSize 他们的必须有相同的宽高比。如果你的方法确定previewSize(真,宽,高)返回一个大小与纵横比为16:9,你需要setPictureSize用相同的纵横比为16,分辨率:9
因此,解决方案是实现它选择从 getSupportedPictureSizes()由给定的宽高比相匹配的最佳分辨率确定previewSize(真,宽,高)<方法/ STRONG>
I'm developing an app with a custom camera. Everything works fine in Motorola Moto G but when I try to save the pictures taken by a Galaxy S4, it tooks this aspect:
https://www.dropbox.com/s/cxyn6eivtcejzln/Image-6186%5B1%5D.jpg?dl=0
CameraSurface.java
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
Camera.Size previewSize = determinePreviewSize(true, width, height);
Camera.Parameters parameters = camera.getParameters();
camera.setDisplayOrientation(90);
parameters.setPreviewSize(previewSize.width, previewSize.height);
List<Camera.Size> sizes = parameters.getSupportedPictureSizes();
Camera.Size size = sizes.get(0);
for (int i = 0; i < sizes.size(); i++) {
if (sizes.get(i).width > size.width)
size = sizes.get(i);
}
parameters.setPictureSize(size.width,size.height);
parameters.set("display_mode","portrait");
camera.setParameters(parameters);
camera.startPreview();
}
I've found myself the solution for the problem described above.
When you set setPreviewSize and setPictureSize they MUST have the same aspect ratio. If your method determinePreviewSize(true, width, height) returns a size with aspect ratio 16:9 you need to setPictureSize a resolution with the SAME aspect ratio 16:9.
So the solution is to implement a method which selects from getSupportedPictureSizes() the best resolution that matches the aspect ratio given by determinePreviewSize(true, width, height)
这篇关于银河S4的Android定制的相机问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!