在应用开发过程中,Camera成像有的手机平板出现卧倒(成90度)的情况,可能后置是正常的,而前置就出现卧倒。针对这样仔细查找了一些资料,最终得出,最后还是在SDK中找到了setDisplayOrientation()这个方法,主要是根据摄像头的自身信息与设备的翻转得到相应的翻转角度。在加上摄像头的参数设置中加上后,在各种卧倒的设备上也显示正常了,在这分享给大家。
// make the camera image show in the same orientation as the display
public static void setCameraDisplayOrientation(Activity activity, int cameraId, android.hardware.Camera camera)
{
android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(cameraId, info);
int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0: degrees = 0; break;
case Surface.ROTATION_90: degrees = 90; break;
case Surface.ROTATION_180: degrees = 180; break;
case Surface.ROTATION_270: degrees = 270; break;
}
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);
}