カメラを使ったAndroidアプリを開発しています。surfaceChanged()メソッドで問題が発生しました。これが私のコードです。
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
Log.e(TAG, "surfaceChanged");
if (mPreviewRunning) {
mCamera.stopPreview();
}
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(w, h);
mCamera.setParameters(parameters);
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
e.printStackTrace();
}
mCamera.startPreview();
mPreviewRunning = true;
}
変数mPreviewRunningは、最初はfalseとして初期化されます。プログラムは水平方向で問題なく実行されます。しかし、電話を垂直方向に回転させると、画面が回転して引き伸ばされます。なぜ起こったのか理解できません。この問題を解決するのを手伝ってください。