summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/Util.java6
-rw-r--r--src/com/android/camera/VideoModule.java13
2 files changed, 17 insertions, 2 deletions
diff --git a/src/com/android/camera/Util.java b/src/com/android/camera/Util.java
index ed42de85a..44af42531 100644
--- a/src/com/android/camera/Util.java
+++ b/src/com/android/camera/Util.java
@@ -39,6 +39,7 @@ import android.location.Location;
import android.net.Uri;
import android.os.Build;
import android.os.ParcelFileDescriptor;
+import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.util.DisplayMetrics;
import android.util.FloatMath;
@@ -375,6 +376,11 @@ public class Util {
return x;
}
+ public static boolean systemRotationLocked(Activity activity) {
+ return Settings.System.getInt(activity.getContentResolver(),
+ Settings.System.ACCELEROMETER_ROTATION, 0) == 0;
+ }
+
public static int getDisplayRotation(Activity activity) {
int rotation = activity.getWindowManager().getDefaultDisplay()
.getRotation();
diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java
index 2c654fc29..2eb3d1bad 100644
--- a/src/com/android/camera/VideoModule.java
+++ b/src/com/android/camera/VideoModule.java
@@ -583,6 +583,11 @@ public class VideoModule implements CameraModule,
// back to use SurfaceTexture for preview and we need to stop then start
// the preview. This will cause the preview flicker since the preview
// will not be continuous for a short period of time.
+
+ // Get orientation directly from display rotation to make sure it's up
+ // to date. OnConfigurationChanged callback usually kicks in a bit later, if
+ // device is rotated during recording.
+ mDisplayRotation = Util.getDisplayRotation(mActivity);
((CameraScreenNail) mActivity.mCameraScreenNail).animateCapture(mDisplayRotation);
mUI.enablePreviewThumb(true);
@@ -1537,7 +1542,9 @@ public class VideoModule implements CameraModule,
mUI.enableCameraControls(false);
mMediaRecorderRecording = true;
- mActivity.getOrientationManager().lockOrientation();
+ if (!Util.systemRotationLocked(mActivity)) {
+ mActivity.getOrientationManager().lockOrientation();
+ }
mRecordingStartTime = SystemClock.uptimeMillis();
mUI.showRecordingUI(true, mParameters.isZoomSupported());
@@ -1612,7 +1619,9 @@ public class VideoModule implements CameraModule,
fail = true;
}
mMediaRecorderRecording = false;
- mActivity.getOrientationManager().unlockOrientation();
+ if (!Util.systemRotationLocked(mActivity)) {
+ mActivity.getOrientationManager().unlockOrientation();
+ }
// If the activity is paused, this means activity is interrupted
// during recording. Release the camera as soon as possible because