如何获得设备的真实相机最大百万像素?

时间:2014-08-31 09:40:04

标签: android android-camera

我正在尝试找到设备的REAL Camera max Megapixels,我测试了stackoverflow上的一些代码和google cam.getParameters().getSupportedPictureSizes();,但代码在所有设备上都不能正常工作。

例如在NEXUS 5上它工作正常并且告诉该设备具有8Mpx,但是在具有KitKat 4.4.2的BQ Aquaris E5 FHD中它不能很好地工作并且告诉该设备具有19 Mpx(它具有13 Mpx .. 。)

Bq​​ Aquaris的问题是代码获得所有支持的图片尺寸,最大的值是5888x3312,这个值意味着19.5 mpx,但实际上这个设备不支持19.5 mpx,所以我不明白为什么5888x3312是由getSupportedPictureSizes()回复,我不知道我必须如何忽略像这个值那样的非实际值。

这是无法正常运行的代码:

DecimalFormat localDecimalFormat = new DecimalFormat("#.#", symbols);   
        String sizeInMegapixel=getString(R.string.not_available);
        if(cam!=null){          
            Camera.Parameters camParams=cam.getParameters();
            List<Size> list = cam.getParameters().getSupportedPictureSizes();
            Camera.Size size;
            Size maxSize=list.get(0);
            int aux;
            int maxAux=0;           

            for (int i=0;i<list.size();i++){
                size=list.get(i);
                aux = size.width*size.height;
                if (aux>maxAux){
                    maxAux=aux;
                    maxSize=size;
                }
            }
            sizeInMegapixel=localDecimalFormat.format((maxSize.width*maxSize.height)/1000000.0D);
        }

3 个答案:

答案 0 :(得分:1)

  

所以我不明白为什么5888x3312是由getSupportedPictureSizes()

回归

因为制造商认为这是支持的最大图片尺寸。尝试拍摄那么大的照片 - 如果失败了,那么这个设备就有一个错误。如果成功,那么你可能对相机分辨率有误。

  

我不知道我必须如何忽略像这个值那样的非实际值

除了通过测试之外,你不会这样做。设备制造商始终从getSupportedPictureSizes()返回好奇值。

答案 1 :(得分:1)

Camera camera = Camera.open();
Parameters paramOfCamera = camera.getParameters();
android.hardware.Camera.Size sizeOfImage = paramOfCamera.getPictureSize();
int width = sizeOfImage .width ;
int height = sizeOfImage .height ;

double pixelOfCamera = (width*height)/1024000 ;

<强>更新

List<Size> sizes = paramOfCamera .getSupportedPictureSizes();
Size mSize = null;
for (Size size : sizes) {
        System.out.println("Size =="+size.width+"==Height=="+size.height);
        break;
}

您将获得所有支持的尺寸,但第一个索引将提供最大图片尺寸。

答案 2 :(得分:0)

如果您有相机对象,请尝试

android.hardware.Camera.Parameters parameters = camera.getParameters();
android.hardware.Camera.Size size = parameters.getPictureSize();


int height = size.height;
int width = size.width;

随着相机中拾音设备的百万像素增加,您可以制作的最大尺寸图像也会增加。这意味着500万像素的摄像头能够拍摄比300万像素摄像头更大的图像。

示例:1936 x 1552/1024000 = 3百万像素