使用Camera类(9)

与所有的Camera.Parameters一样,在已经打开Camera对象并设置它的预览显示Surface之后,就可以在surfaceCreated中获取和设置它们。

public void surfaceCreated(SurfaceHolder holder) { 

     camera = Camera.open();

     try { 

        camera.setPreviewDisplay(holder);

        Camera.Parameters parameters = camera.getParameters();

我们将采用以下两个变量来记录小于但最接近上述常量的值。

        int bestWidth = 0;

        int bestHeight = 0;

然后,就可以获得设备所支持的所有大小的列表。这将返回一个Camera.Size对象的列表,可以对其进行循环遍历。

          List<Camera.Size> previewSizes = parameters.

getSupportedPreviewSizes();

          if (previewSizes.size() > 1) 

          {

               Iterator<Camera.Size> cei = previewSizes.iterator();

               while (cei.hasNext()) 

               {

                    Camera.Size aSize = cei.next();

如果该列表中的当前大小大于保存的最佳大小,并且小于或等于LARGEST_WIDTH和LARGEST_HEIGHT常量,那么将在bestWidth和bestHeight变量中保存这个高度和宽度并继续检查。

                    Log.v("SNAPSHOT","Checking " + aSize.width + " x "

 + aSize.height);

                    if (aSize.width > bestWidth && aSize.width <= LARGEST_WIDTH 

                        && aSize.height > bestHeight 

                        && aSize.height <= LARGEST_HEIGHT) { 

                        // 迄今为止,它是最大的大小,且不超过屏幕尺寸 

                            bestWidth = aSize.width;

                            bestHeight = aSize.height;

                    }

               }

读书导航