银河S4的Andr​​oid定制的相机问题 [英] Galaxy S4 Android Custom Camera Issue

查看:149
本文介绍了银河S4的Andr​​oid定制的相机问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个自定义的摄像头的应用程序。一切工作正常摩托罗拉摩托摹但是当我试图挽救采取银河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的Andr​​oid定制的相机问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆