diff --git a/library/src/main/api14/com/google/android/cameraview/Camera1.java b/library/src/main/api14/com/google/android/cameraview/Camera1.java index 0f92ac50..7274ca51 100644 --- a/library/src/main/api14/com/google/android/cameraview/Camera1.java +++ b/library/src/main/api14/com/google/android/cameraview/Camera1.java @@ -250,6 +250,11 @@ public void onPictureTaken(byte[] data, Camera camera) { } } + @Override + int getCameraOrientation() { + return mCameraInfo.orientation; + } + @Override void setDisplayOrientation(int displayOrientation) { if (mDisplayOrientation == displayOrientation) { diff --git a/library/src/main/api21/com/google/android/cameraview/Camera2.java b/library/src/main/api21/com/google/android/cameraview/Camera2.java index 4835f89e..232f31af 100644 --- a/library/src/main/api21/com/google/android/cameraview/Camera2.java +++ b/library/src/main/api21/com/google/android/cameraview/Camera2.java @@ -193,6 +193,8 @@ public void onImageAvailable(ImageReader reader) { private boolean mAutoFocus; private int mFlash; + + private int mCameraOrientation; private int mDisplayOrientation; @@ -341,6 +343,11 @@ void takePicture() { } } + @Override + int getCameraOrientation() { + return mCameraOrientation; + } + @Override void setDisplayOrientation(int displayOrientation) { mDisplayOrientation = displayOrientation; @@ -407,8 +414,8 @@ private boolean chooseCameraIdByFacing() { /** *
Collects some information from {@link #mCameraCharacteristics}.
- *This rewrites {@link #mPreviewSizes}, {@link #mPictureSizes}, and optionally, - * {@link #mAspectRatio}.
+ *This rewrites {@link #mPreviewSizes}, {@link #mPictureSizes}, + * {@link #mCameraOrientation}, and optionally, {@link #mAspectRatio}.
*/ private void collectCameraInfo() { StreamConfigurationMap map = mCameraCharacteristics.get( @@ -435,6 +442,8 @@ private void collectCameraInfo() { if (!mPreviewSizes.ratios().contains(mAspectRatio)) { mAspectRatio = mPreviewSizes.ratios().iterator().next(); } + + mCameraOrientation = mCameraCharacteristics.get(CameraCharacteristics.SENSOR_ORIENTATION); } protected void collectPictureSizes(SizeMap sizes, StreamConfigurationMap map) { diff --git a/library/src/main/base/com/google/android/cameraview/CameraViewImpl.java b/library/src/main/base/com/google/android/cameraview/CameraViewImpl.java index 31dab0c4..12de4e64 100644 --- a/library/src/main/base/com/google/android/cameraview/CameraViewImpl.java +++ b/library/src/main/base/com/google/android/cameraview/CameraViewImpl.java @@ -67,6 +67,8 @@ View getView() { abstract void takePicture(); + abstract int getCameraOrientation(); + abstract void setDisplayOrientation(int displayOrientation); interface Callback { diff --git a/library/src/main/java/com/google/android/cameraview/CameraView.java b/library/src/main/java/com/google/android/cameraview/CameraView.java index 04826d84..84148450 100644 --- a/library/src/main/java/com/google/android/cameraview/CameraView.java +++ b/library/src/main/java/com/google/android/cameraview/CameraView.java @@ -399,6 +399,15 @@ public int getFlash() { return mImpl.getFlash(); } + /** + * Gets the camera orientation relative to the devices native orientation. + * + * @return The orientation of the camera. + */ + public int getCameraOrientation() { + return mImpl.getCameraOrientation(); + } + /** * Take a picture. The result will be returned to * {@link Callback#onPictureTaken(CameraView, byte[])}.