Android Cameraは画面の最適なサイズを見つけます


皆さんは普段からCameraというAPIを呼び出し、Cameraを設定しています.Parameraのパラメータの場合、プレビューサイズがあります.つまり、setPreviewSize(int width,ing height)というカメラの大きさは勝手に設定できず、許容できない値を設定するとプログラムがクラッシュします.今、皆さんに使いやすい方法を提供します.
private Size getBestSupportedSize(List<Size> sizes), int width, int height) {
    Size bestSize = sizes.get(0);
    int largestArea = bestSize.width * bestSize.height;
    for (Size s : sizes) {
        int area = s.width * s.height;
        if (area > largestArea) {
            bestSize = s;
            largestArea = area;
        }
    }
    return bestSize;
}

この方法のいくつかのパラメータはどこから来たのか.SurfaceHolderのCallbackコールバック法でカメラを初期化する必要がある.
holder.addCallback(new SurfaceHolder.Callback(){
    ...
    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
    Camera.Parameters parameters = mCamera.getParameters();
    Size s = getBestSupportedSize(parameters.getSupportedPreViewSizes(), w, h);
    parameters.setPreviewSeze(s.width, s.height);
    ....
    }
});

私たちは通常写真を撮った後、写真の大きさを設定しますが、実は同じです.Camera.Parameterには、getSupportedPictureSize()という方法があります.
s = getBestSupportedSize(parameters.getSupportedPictureSizes(), w, h);
parameters.setPictureSize(s.width, s.height);

小さな方法、大きなテクニック.これはAndroid権威ガイドという本で見たもので、メモを取っています.