- fixing orientation of camera viewport for Android Nexus 5x devices

This commit is contained in:
Jacob Hargrave 2016-03-01 17:29:55 -05:00 committed by Daniel Cousens
parent 86f2ba77f7
commit 57dcc5f9dc

View File

@ -28,6 +28,8 @@ import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.content.pm.PackageManager;
import android.view.Surface;
import java.util.ArrayList;
import java.util.Collection;
@ -221,7 +223,29 @@ implements SurfaceHolder.Callback {
return;
}
}
private void setCameraDisplayOrientation(Activity activity ,int cameraId) {
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);
}
@Override
public void onPause ()
{
@ -500,7 +524,9 @@ implements SurfaceHolder.Callback {
break;
}
// 90 degrees rotation for Portrait orientation Activity.
camera.setDisplayOrientation(rotation);
// camera.setDisplayOrientation(rotation);
setCameraDisplayOrientation(this, 0);
android.hardware.Camera.Parameters camParams = camera.getParameters();
//camParams.setFlashMode(Parameters.FLASH_MODE_TORCH);