diff --git a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java index 73e4d87ac..e68f56edb 100644 --- a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java @@ -22,12 +22,15 @@ package org.schabi.newpipe.player; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.graphics.Color; import android.media.AudioManager; import android.os.Build; import android.os.Bundle; +import android.preference.PreferenceManager; +import android.provider.Settings; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.RecyclerView; @@ -81,6 +84,8 @@ public final class MainVideoPlayer extends Activity { private boolean activityPaused; private VideoPlayerImpl playerImpl; + private SharedPreferences defaultPreferences; + /*////////////////////////////////////////////////////////////////////////// // Activity LifeCycle //////////////////////////////////////////////////////////////////////////*/ @@ -89,6 +94,7 @@ public final class MainVideoPlayer extends Activity { protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (DEBUG) Log.d(TAG, "onCreate() called with: savedInstanceState = [" + savedInstanceState + "]"); + defaultPreferences = PreferenceManager.getDefaultSharedPreferences(this); ThemeHelper.setTheme(this); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) getWindow().setStatusBarColor(Color.BLACK); setVolumeControlStream(AudioManager.STREAM_MUSIC); @@ -99,6 +105,8 @@ public final class MainVideoPlayer extends Activity { return; } + + showSystemUi(); setContentView(R.layout.activity_main_player); playerImpl = new VideoPlayerImpl(this); @@ -146,6 +154,11 @@ public final class MainVideoPlayer extends Activity { activityPaused = false; } + if(globalScreenOrientationLocked()) { + boolean lastOrientationWasLandscape + = defaultPreferences.getBoolean(getString(R.string.last_orientation_landscape_key), false); + setLandScape(lastOrientationWasLandscape); + } } @Override @@ -198,11 +211,28 @@ public final class MainVideoPlayer extends Activity { } private void toggleOrientation() { - setRequestedOrientation(getResources().getDisplayMetrics().heightPixels > getResources().getDisplayMetrics().widthPixels + setLandScape(!isLandScape()); + defaultPreferences.edit() + .putBoolean(getString(R.string.last_orientation_landscape_key), !isLandScape()) + .apply(); + } + + private boolean isLandScape() { + return getResources().getDisplayMetrics().heightPixels < getResources().getDisplayMetrics().widthPixels; + } + + private void setLandScape(boolean v) { + setRequestedOrientation(v ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); } + private boolean globalScreenOrientationLocked() { + // 1: Screen orientation changes using acelerometer + // 0: Screen orientatino is locked + return !(android.provider.Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1); + } + protected void setRepeatModeButton(final ImageButton imageButton, final int repeatMode) { switch (repeatMode) { case Player.REPEAT_MODE_OFF: diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index 5eee12c6c..0b8a6e0f6 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -75,6 +75,8 @@ @string/audio_webm_key + last_orientation_landscape_key + theme light_theme