AndroidプログラミングでCameraを呼び出すとプレビュー画面に回転問題の解決方法があります。
本論文の例は、Androidプログラミングにおいて、Cameraを呼び出した時のプレビュー画面の回転問題の解決方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
Cameraを呼び出してアプリケーションを書く時、前後のカメラの状況は時々違っています。時には、明らかに後のカメラは問題がないのに、前のカメラに呼び出された時、180°回転しました。あるいは他の角度が分かりません。Androidのソースコードを調べた後、解決策はとても良いことが分かりました。次はソースを貼り付けて、後で確認します。
ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。
Cameraを呼び出してアプリケーションを書く時、前後のカメラの状況は時々違っています。時には、明らかに後のカメラは問題がないのに、前のカメラに呼び出された時、180°回転しました。あるいは他の角度が分かりません。Androidのソースコードを調べた後、解決策はとても良いことが分かりました。次はソースを貼り付けて、後で確認します。
public static int getDisplayRotation(Activity activity) {
int rotation = activity.getWindowManager().getDefaultDisplay()
.getRotation();
switch (rotation) {
case Surface.ROTATION_0: return 0;
case Surface.ROTATION_90: return 90;
case Surface.ROTATION_180: return 180;
case Surface.ROTATION_270: return 270;
}
return 0;
}
public static void setCameraDisplayOrientation(Activity activity,
int cameraId, Camera camera) {
// See android.hardware.Camera.setCameraDisplayOrientation for
// documentation.
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(cameraId, info);
int degrees = getDisplayRotation(activity);
int result;
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
result = (info.orientation + degrees) % 360;
result = (360 - result) % 360; // compensate the mirror
} else { // back-facing
result = (info.orientation - degrees + 360) % 360;
}
camera.setDisplayOrientation(result);
}
Cameraを呼び出す時はsetCamera DisplayOrientationという方法を呼べばいいです。ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。