- Android
- 2012-04-06
この記事は最終更新日から1年以上経過しています。
android/1683で紹介していた方法で
エラーが発生したので修正しました。
surfaceChanged内のsetPreviewSizeメソッドでエラー発生
元は以下のようなコード
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { Camera.Parameters parameters = mCamera.getParameters(); parameters.setPreviewSize(w, h); mCamera.setParameters(parameters); mCamera.startPreview(); }
サポートしていないプレビューサイズだったことが原因
以下のように修正しました。
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { setPreviewSize(w, h); mCamera.startPreview(); } protected void setPreviewSize(int width, int height) { Camera.Parameters params = mCamera.getParameters(); List<Camera.Size> supported = params.getSupportedPreviewSizes(); if (supported != null) { for (Camera.Size size : supported) { if (size.width <= width && size.height <= height) { params.setPreviewSize(size.width, size.height); mCamera.setParameters(params); break; } } } }
4,865 views