Galaxy S4 Android自定义相机问题 [英] Galaxy S4 Android Custom Camera Issue
问题描述
我正在开发一个带有自定义相机的应用程序。一切都在摩托罗拉Moto G工作正常,但当我尝试保存由银河S4拍摄的照片,它需要这方面:
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);
}
parameter.setPictureSize(size.width,size.height);
parameter.set(display_mode,portrait);
camera.setParameters(parameters);
camera.startPreview();
}
当您设置 setPreviewSize 和 setPictureSize 时,必须 >具有相同的宽高比。如果您的方法确定PreviewSize(true,width,height)返回宽高比为16:9的尺寸,则需要使用SAME宽高比16:9设置PictureSize分辨率。
因此,解决方案是实现一个方法,该方法从 getSupportedPictureSizes()中选择与 determinPreviewSize(true,width,height)
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 takes this aspect:
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)
这篇关于Galaxy S4 Android自定义相机问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!