正文

使用Camera類(9)

Android多媒體開發(fā)高級編程 作者:(美)艾佛瑞


與所有的Camera.Parameters一樣,在已經(jīng)打開Camera對象并設(shè)置它的預(yù)覽顯示Surface之后,就可以在surfaceCreated中獲取和設(shè)置它們。

public void surfaceCreated(SurfaceHolder holder) { 

     camera = Camera.open();

     try { 

        camera.setPreviewDisplay(holder);

        Camera.Parameters parameters = camera.getParameters();

我們將采用以下兩個變量來記錄小于但最接近上述常量的值。

        int bestWidth = 0;

        int bestHeight = 0;

然后,就可以獲得設(shè)備所支持的所有大小的列表。這將返回一個Camera.Size對象的列表,可以對其進行循環(huán)遍歷。

          List<Camera.Size> previewSizes = parameters.

getSupportedPreviewSizes();

          if (previewSizes.size() > 1) 

          {

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

               while (cei.hasNext()) 

               {

                    Camera.Size aSize = cei.next();

如果該列表中的當(dāng)前大小大于保存的最佳大小,并且小于或等于LARGEST_WIDTH和LARGEST_HEIGHT常量,那么將在bestWidth和bestHeight變量中保存這個高度和寬度并繼續(xù)檢查。

                    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;

                    }

               }


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號