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