Android Cameraは画面の最適なサイズを見つけます
1949 ワード
皆さんは普段からCameraというAPIを呼び出し、Cameraを設定しています.Parameraのパラメータの場合、プレビューサイズがあります.つまり、setPreviewSize(int width,ing height)というカメラの大きさは勝手に設定できず、許容できない値を設定するとプログラムがクラッシュします.今、皆さんに使いやすい方法を提供します.
この方法のいくつかのパラメータはどこから来たのか.SurfaceHolderのCallbackコールバック法でカメラを初期化する必要がある.
私たちは通常写真を撮った後、写真の大きさを設定しますが、実は同じです.Camera.Parameterには、getSupportedPictureSize()という方法があります.
小さな方法、大きなテクニック.これはAndroid権威ガイドという本で見たもので、メモを取っています.
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権威ガイドという本で見たもので、メモを取っています.