カメラプレビューのサイズ
cam = Camera.open(); Camera.Parameters cam_params = cam.getParameters(); List<Size> prev_sizes = cam_params.getSupportedPreviewSizes(); for(Size s : prev_sizes){ Log.v("CameraTest", s.height + "," +s.width); }
HTC Desireの場合、これ以外を指定すると強制終了する
V/CameraTest( 2553): 720,1280 V/CameraTest( 2553): 480,800 V/CameraTest( 2553): 480,720 V/CameraTest( 2553): 480,640 V/CameraTest( 2553): 432,576 V/CameraTest( 2553): 320,480 V/CameraTest( 2553): 240,400 V/CameraTest( 2553): 288,384 V/CameraTest( 2553): 288,352 V/CameraTest( 2553): 240,320 V/CameraTest( 2553): 272,272 V/CameraTest( 2553): 240,240 V/CameraTest( 2553): 160,240 V/CameraTest( 2553): 144,176
画面サイズが4:3ではないので、320x240とかを表示させると画がつぶれる
とくにHTC Desire自体を回転させてみるとよくわかる
Activityの方で
this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
してタイトルバーとステータスバーを非表示にしてフルスクリーンにしておいて
SurfaceViewの方で
Camera.Parameters cam_params = cam.getParameters();
Size size = cam_params.getSupportedPreviewSizes().get(0);
cam_params.setPreviewSize(size.width, size.height);
cam.setParameters(cam_params);
cam.startPreview();
パラメータの最高解像度のやつをセットすれば縦横比はおかしくならない
参考