[Android] VideoPlayerActivity: fix lock with horizontally native tablets

Edward Wang git at videolan.org
Sun Sep 1 14:02:19 CEST 2013


vlc-ports/android | branch: master | Edward Wang <edward.c.wang at compdigitec.com> | Sun Sep  1 13:53:30 2013 +0200| [712f9388d9aee7960a5544af24fa722fe7b0c213] | committer: Edward Wang

VideoPlayerActivity: fix lock with horizontally native tablets

> http://git.videolan.org/gitweb.cgi/vlc-ports/android.git/?a=commit;h=712f9388d9aee7960a5544af24fa722fe7b0c213
---

 .../vlc/gui/video/VideoPlayerActivity.java         |   71 ++++++++++++++------
 1 file changed, 52 insertions(+), 19 deletions(-)

diff --git a/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java b/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java
index 83aec5e..419e68b 100644
--- a/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java
+++ b/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java
@@ -46,7 +46,6 @@ import org.videolan.vlc.Util;
 import org.videolan.vlc.VLCApplication;
 import org.videolan.vlc.WeakHandler;
 import org.videolan.vlc.gui.CommonDialogs;
-import org.videolan.vlc.gui.MainActivity;
 import org.videolan.vlc.gui.CommonDialogs.MenuType;
 import org.videolan.vlc.gui.PreferencesActivity;
 import org.videolan.vlc.gui.audio.AudioPlayerFragment;
@@ -1583,24 +1582,58 @@ public class VideoPlayerActivity extends Activity implements IVideoPlayer {
     }
 
     @TargetApi(Build.VERSION_CODES.GINGERBREAD)
-    private int getScreenOrientation (){
-        switch (getScreenRotation()) {
-        case Surface.ROTATION_0:
-            return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
-        case Surface.ROTATION_90:
-            return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
-        case Surface.ROTATION_180:
-            // SCREEN_ORIENTATION_REVERSE_PORTRAIT only available since API Level 9+
-             return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO
-                    ? ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
-                    : ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
-        case Surface.ROTATION_270:
-            // SCREEN_ORIENTATION_REVERSE_LANDSCAPE only available since API Level 9+
-            return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO
-                    ? ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
-                    : ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
-        default :
-            return 0;
+    private int getScreenOrientation(){
+        WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
+        Display display = wm.getDefaultDisplay();
+        int rot = getScreenRotation();
+        /*
+         * Since getRotation() returns the screen's "natural" orientation,
+         * which is not guaranteed to be SCREEN_ORIENTATION_PORTRAIT,
+         * we have to invert the SCREEN_ORIENTATION value if it is "naturally"
+         * landscape.
+         */
+        @SuppressWarnings("deprecation")
+        boolean defaultWide = display.getWidth() > display.getHeight();
+        if(rot == Surface.ROTATION_90 || rot == Surface.ROTATION_270)
+            defaultWide = !defaultWide;
+        if(defaultWide) {
+            switch (rot) {
+            case Surface.ROTATION_0:
+                return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
+            case Surface.ROTATION_90:
+                return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
+            case Surface.ROTATION_180:
+                // SCREEN_ORIENTATION_REVERSE_PORTRAIT only available since API
+                // Level 9+
+                return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO ? ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
+                        : ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+            case Surface.ROTATION_270:
+                // SCREEN_ORIENTATION_REVERSE_LANDSCAPE only available since API
+                // Level 9+
+                return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO ? ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
+                        : ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+            default:
+                return 0;
+            }
+        } else {
+            switch (rot) {
+            case Surface.ROTATION_0:
+                return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
+            case Surface.ROTATION_90:
+                return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
+            case Surface.ROTATION_180:
+                // SCREEN_ORIENTATION_REVERSE_PORTRAIT only available since API
+                // Level 9+
+                return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO ? ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
+                        : ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+            case Surface.ROTATION_270:
+                // SCREEN_ORIENTATION_REVERSE_LANDSCAPE only available since API
+                // Level 9+
+                return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO ? ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
+                        : ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+            default:
+                return 0;
+            }
         }
     }
 



More information about the Android mailing list