diff --git a/app/src/main/java/com/futo/platformplayer/Settings.kt b/app/src/main/java/com/futo/platformplayer/Settings.kt
index c99e14d0..30e91231 100644
--- a/app/src/main/java/com/futo/platformplayer/Settings.kt
+++ b/app/src/main/java/com/futo/platformplayer/Settings.kt
@@ -813,20 +813,20 @@ class Settings : FragmentedStorageFileJson() {
var gestureControls = GestureControls();
@Serializable
class GestureControls {
- @FormField(R.string.volume_slider, FieldForm.TOGGLE, -1, 1)
+ @FormField(R.string.volume_slider, FieldForm.TOGGLE, R.string.volume_slider_descr, 1)
var volumeSlider: Boolean = true;
- @FormField(R.string.brightness_slider, FieldForm.TOGGLE, -1, 2)
+ @FormField(R.string.brightness_slider, FieldForm.TOGGLE, R.string.brightness_slider_descr, 2)
var brightnessSlider: Boolean = true;
- @FormField(R.string.toggle_full_screen, FieldForm.TOGGLE, -1, 3)
+ @FormField(R.string.toggle_full_screen, FieldForm.TOGGLE, R.string.toggle_full_screen_descr, 3)
var toggleFullscreen: Boolean = true;
- @FormField(R.string.system_brightness, FieldForm.TOGGLE, -1, 4)
- var useSystemBrightness: Boolean = false;
+ @FormField(R.string.system_brightness, FieldForm.TOGGLE, R.string.system_brightness_descr, 4)
+ var useSystemBrightness: Boolean = true;
- @FormField(R.string.system_brightness, FieldForm.TOGGLE, -1, 4)
- var useSystemVolume: Boolean = false;
+ @FormField(R.string.system_volume, FieldForm.TOGGLE, R.string.system_volume_descr, 5)
+ var useSystemVolume: Boolean = true;
}
@FormField(R.string.info, FieldForm.GROUP, -1, 20)
diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt
index 695edab3..a80b1aab 100644
--- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt
+++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt
@@ -145,7 +145,6 @@ import com.futo.polycentric.core.Opinion
import com.futo.polycentric.core.toURLInfoSystemLinkUrl
import com.google.protobuf.ByteString
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@@ -1372,7 +1371,9 @@ class VideoDetailView : ConstraintLayout {
val toResume = _videoResumePositionMilliseconds;
_videoResumePositionMilliseconds = 0;
loadCurrentVideo(toResume);
- _player.setGestureSoundFactor(1.0f);
+ if (!Settings.instance.gestureControls.useSystemVolume) {
+ _player.setGestureSoundFactor(1.0f);
+ }
updateQueueState();
diff --git a/app/src/main/java/com/futo/platformplayer/views/behavior/GestureControlView.kt b/app/src/main/java/com/futo/platformplayer/views/behavior/GestureControlView.kt
index 1d0f258e..2fa89c8e 100644
--- a/app/src/main/java/com/futo/platformplayer/views/behavior/GestureControlView.kt
+++ b/app/src/main/java/com/futo/platformplayer/views/behavior/GestureControlView.kt
@@ -3,8 +3,10 @@ package com.futo.platformplayer.views.behavior
import android.animation.Animator
import android.animation.AnimatorSet
import android.animation.ObjectAnimator
+import android.app.Activity
import android.content.Context
import android.graphics.drawable.Animatable
+import android.media.AudioManager
import android.util.AttributeSet
import android.view.GestureDetector
import android.view.LayoutInflater
@@ -60,6 +62,7 @@ class GestureControlView : LinearLayout {
private val _progressSound: CircularProgressBar;
private var _animatorSound: ObjectAnimator? = null;
private var _brightnessFactor = 1.0f;
+ private var _originalBrightnessFactor = 1.0f;
private var _adjustingBrightness: Boolean = false;
private val _layoutControlsBrightness: FrameLayout;
private val _progressBrightness: CircularProgressBar;
@@ -560,10 +563,34 @@ class GestureControlView : LinearLayout {
fun setFullscreen(isFullScreen: Boolean) {
if (isFullScreen) {
+ val c = context
+ if (c is Activity && Settings.instance.gestureControls.useSystemBrightness) {
+ _brightnessFactor = c.window.attributes.screenBrightness
+ if (_brightnessFactor == -1.0f) {
+ _brightnessFactor = android.provider.Settings.System.getInt(
+ context.contentResolver,
+ android.provider.Settings.System.SCREEN_BRIGHTNESS
+ ) / 255.0f;
+ }
+ _originalBrightnessFactor = _brightnessFactor
+ }
+
+ if (Settings.instance.gestureControls.useSystemVolume) {
+ val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
+ val currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)
+ val maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
+ _soundFactor = currentVolume.toFloat() / maxVolume.toFloat()
+ }
+
onBrightnessAdjusted.emit(_brightnessFactor);
onSoundAdjusted.emit(_soundFactor);
} else {
- onBrightnessAdjusted.emit(1.0f);
+ val c = context
+ if (c is Activity && Settings.instance.gestureControls.useSystemBrightness) {
+ onBrightnessAdjusted.emit(_originalBrightnessFactor);
+ } else {
+ onBrightnessAdjusted.emit(1.0f);
+ }
//onSoundAdjusted.emit(1.0f);
stopAdjustingBrightness();
stopAdjustingSound();
diff --git a/app/src/main/java/com/futo/platformplayer/views/video/FutoVideoPlayer.kt b/app/src/main/java/com/futo/platformplayer/views/video/FutoVideoPlayer.kt
index 7e1d20e2..9583c051 100644
--- a/app/src/main/java/com/futo/platformplayer/views/video/FutoVideoPlayer.kt
+++ b/app/src/main/java/com/futo/platformplayer/views/video/FutoVideoPlayer.kt
@@ -1,15 +1,18 @@
package com.futo.platformplayer.views.video
+import android.app.Activity
import android.content.Context
import android.content.res.Resources
import android.graphics.Color
import android.graphics.drawable.Drawable
+import android.media.AudioManager
import android.util.AttributeSet
import android.util.Log
import android.util.TypedValue
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
+import android.view.WindowManager
import android.widget.FrameLayout
import android.widget.ImageButton
import android.widget.TextView
@@ -235,14 +238,29 @@ class FutoVideoPlayer : FutoVideoPlayerBase {
gestureControl.setupTouchArea(_layoutControls, background);
gestureControl.onSeek.subscribe { seekFromCurrent(it); };
- gestureControl.onSoundAdjusted.subscribe { setVolume(it) };
+ gestureControl.onSoundAdjusted.subscribe {
+ if (Settings.instance.gestureControls.useSystemVolume) {
+ val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
+ val maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
+ audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, (it * maxVolume).toInt(), 0)
+ } else {
+ setVolume(it)
+ }
+ };
gestureControl.onToggleFullscreen.subscribe { setFullScreen(!isFullScreen) };
gestureControl.onBrightnessAdjusted.subscribe {
- if (it == 1.0f) {
- _overlay_brightness.visibility = View.GONE;
+ if (context is Activity && Settings.instance.gestureControls.useSystemBrightness) {
+ val window = context.window
+ val layout: WindowManager.LayoutParams = window.attributes
+ layout.screenBrightness = it
+ window.attributes = layout
} else {
- _overlay_brightness.visibility = View.VISIBLE;
- _overlay_brightness.setBackgroundColor(Color.valueOf(0.0f, 0.0f, 0.0f, (1.0f - it)).toArgb());
+ if (it == 1.0f) {
+ _overlay_brightness.visibility = View.GONE;
+ } else {
+ _overlay_brightness.visibility = View.VISIBLE;
+ _overlay_brightness.setBackgroundColor(Color.valueOf(0.0f, 0.0f, 0.0f, (1.0f - it)).toArgb());
+ }
}
};
@@ -730,7 +748,6 @@ class FutoVideoPlayer : FutoVideoPlayerBase {
}
}
-
fun setGestureSoundFactor(soundFactor: Float) {
gestureControl.setSoundFactor(soundFactor);
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 12775179..64923346 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -346,10 +346,15 @@
Info
Gesture controls
Volume slider
+ Enable slide gesture to change volume
Brightness slider
- Toogle full screen
+ Enable slide gesture to change brightness
+ Toggle full screen
+ Enable swipe gesture to toggle fullscreen
System brightness
+ Gesture controls adjust system brightness
System volume
+ Gesture controls adjust system volume
Live Chat Webview
Fullscreen portrait
Allow fullscreen portrait