Tomeba のすべての投稿

Nexus5x,6P のカメラ reverse landscapに対応

Nexus5x及び6Pで、QRコード読み取り,3D 行先コンパス ARでカメラ画像が、180度回転表示するバグを修正しました。

Nexus 5Xのイメージセンサーは設計上の部品配置の都合で、他のAndroid端末と異なり逆(reverse landscape)に取り付けられているとのことで、rotationが未設定のアプリはpreviewが反転するようになった。
http://qiita.com/tomoima525/items/f59d345ea40c36244f9b

当アプリも180度回転表示してしまいました。

元々は、
camera.setDisplayOrientation(90)
で90度回転させて縦表示するようにしていたのですが、
Nexus5xだと、
camera.setDisplayOrientation(90 + 180)
にしないとだめで、

camera2 APIを利用すれば全自動ですが、
最終、以下のコードを追加して対応致しました。

[js] int numCameras = Camera.getNumberOfCameras();
int cameraID;
int back_camera_flg = 0;

int index = 0;
Camera.CameraInfo cameraInfo;
int result = 0;

while (index < numCameras) {
cameraInfo = new Camera.CameraInfo();
Camera.getCameraInfo(index, cameraInfo);
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT && back_camera_flg == 0){
result = (cameraInfo.orientation) % 360;
result = (360 – result) % 360;
Log.w(TAG,"—– CAMERA INFO FRONT " + result );
}
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
back_camera_flg = 1;
result = (cameraInfo.orientation + 360) % 360;
Log.w(TAG,"—– CAMERA INFO BACK " + result );
break;
}
index++;
}
//camera.setDisplayOrientation(90);
camera.setDisplayOrientation(result);
//
camera.setParameters(parameters);
}
[/js]