カメラプレビューのサイズ

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();

パラメータの最高解像度のやつをセットすれば縦横比はおかしくならない



参考