From c41a554b9537655c61a384b5883d50f5ad84017a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=81nis?= <97699850+janisslsm@users.noreply.github.com> Date: Fri, 17 Jun 2022 14:21:55 +0300 Subject: [PATCH 1/6] Implement autoplay --- .../libretube/fragments/PlayerFragment.kt | 19 ++++++++++++++++++- app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/advanced_settings.xml | 7 +++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt index b354bc2bc..be7543f92 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -53,6 +53,7 @@ import com.github.libretube.obj.Segment import com.github.libretube.obj.Segments import com.github.libretube.obj.Streams import com.github.libretube.obj.Subscribe +import com.github.libretube.obj.StreamItem import com.github.libretube.preferences.SponsorBlockSettings import com.github.libretube.util.CronetHelper import com.github.libretube.util.DescriptionAdapter @@ -101,6 +102,8 @@ class PlayerFragment : Fragment() { private var eId: Int = 0 private var paused = false private var whichQuality = 0 + private var transitioning = false + private var autoplay = false; private var isZoomed: Boolean = false private var isSubscribed: Boolean = false @@ -115,6 +118,7 @@ class PlayerFragment : Fragment() { private lateinit var motionLayout: MotionLayout private lateinit var exoPlayer: ExoPlayer private lateinit var segmentData: Segments + private var relatedStreams: List? = arrayListOf() private var relatedStreamsEnabled = true private lateinit var relDownloadVideo: LinearLayout @@ -386,10 +390,13 @@ class PlayerFragment : Fragment() { uploader = response.uploader!! thumbnailUrl = response.thumbnailUrl!! - // check whether related streams are enabled + // check whether related streams and autoplay are enabled val sharedPreferences = PreferenceManager .getDefaultSharedPreferences(requireContext()) + autoplay = sharedPreferences.getBoolean("autoplay", false) relatedStreamsEnabled = sharedPreferences.getBoolean("related_streams_toggle", true) + // save related streams for autoplay + relatedStreams = response.relatedStreams runOnUiThread { createExoPlayer(view) prepareExoPlayerView() @@ -515,8 +522,18 @@ class PlayerFragment : Fragment() { !playWhenReady ) + + // check if video has ended, next video is available and autoplay is enabled. + if(playbackState == Player.STATE_ENDED && relatedStreams != null && relatedStreams!!.isNotEmpty() && !transitioning && autoplay) + { + transitioning = true + videoId = relatedStreams!![0].url!!.replace("/watch?v=","") + fetchJsonAndInitPlayer(view) + } + if (playWhenReady && playbackState == Player.STATE_READY) { // media actually playing + transitioning = false view.findViewById(R.id.play_imageView) .setImageResource(R.drawable.ic_pause) } else if (playWhenReady) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 82603e8da..c94dd0e49 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -184,4 +184,5 @@ Preloading Max. amount of seconds of video to buffer. Video format for player + Autoplay diff --git a/app/src/main/res/xml/advanced_settings.xml b/app/src/main/res/xml/advanced_settings.xml index a82c50bba..afda1a47e 100644 --- a/app/src/main/res/xml/advanced_settings.xml +++ b/app/src/main/res/xml/advanced_settings.xml @@ -40,6 +40,13 @@ app:summary="@string/buffering_goal_summary" app:title="@string/buffering_goal" /> + + From 46b89de25befb55424d41d9fe4dd907adbf747b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=81nis?= <97699850+janisslsm@users.noreply.github.com> Date: Fri, 17 Jun 2022 14:25:17 +0300 Subject: [PATCH 2/6] Remove unnecessary semicolon --- .../main/java/com/github/libretube/fragments/PlayerFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt index be7543f92..a90e09b9e 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -103,7 +103,7 @@ class PlayerFragment : Fragment() { private var paused = false private var whichQuality = 0 private var transitioning = false - private var autoplay = false; + private var autoplay = false private var isZoomed: Boolean = false private var isSubscribed: Boolean = false From 05959a41d90c0440960d5601557070a4f01bd6ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=81nis?= <97699850+janisslsm@users.noreply.github.com> Date: Fri, 17 Jun 2022 14:27:51 +0300 Subject: [PATCH 3/6] Fix formatting --- .../java/com/github/libretube/fragments/PlayerFragment.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt index a90e09b9e..d5cb3b8cb 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -524,10 +524,9 @@ class PlayerFragment : Fragment() { // check if video has ended, next video is available and autoplay is enabled. - if(playbackState == Player.STATE_ENDED && relatedStreams != null && relatedStreams!!.isNotEmpty() && !transitioning && autoplay) - { + if(playbackState == Player.STATE_ENDED && relatedStreams != null && relatedStreams!!.isNotEmpty() && !transitioning && autoplay) { transitioning = true - videoId = relatedStreams!![0].url!!.replace("/watch?v=","") + videoId = relatedStreams!![0].url!!.replace("/watch?v=", "") fetchJsonAndInitPlayer(view) } From 2329daef5716ec26a7b084cee696aa41e97465c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=81nis?= <97699850+janisslsm@users.noreply.github.com> Date: Fri, 17 Jun 2022 14:29:39 +0300 Subject: [PATCH 4/6] More reviewdog satisfaction --- .../java/com/github/libretube/fragments/PlayerFragment.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt index d5cb3b8cb..c1fc1fccf 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -522,9 +522,9 @@ class PlayerFragment : Fragment() { !playWhenReady ) - // check if video has ended, next video is available and autoplay is enabled. - if(playbackState == Player.STATE_ENDED && relatedStreams != null && relatedStreams!!.isNotEmpty() && !transitioning && autoplay) { + if(playbackState == Player.STATE_ENDED && relatedStreams != null && + relatedStreams!!.isNotEmpty() && !transitioning && autoplay) { transitioning = true videoId = relatedStreams!![0].url!!.replace("/watch?v=", "") fetchJsonAndInitPlayer(view) From 3c61aa2ee5c9d910c7014a05d25ef0f29e78933d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=81nis?= <97699850+janisslsm@users.noreply.github.com> Date: Fri, 17 Jun 2022 14:32:00 +0300 Subject: [PATCH 5/6] attempt 2 --- .../com/github/libretube/fragments/PlayerFragment.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt index c1fc1fccf..6cee457c5 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -523,8 +523,13 @@ class PlayerFragment : Fragment() { ) // check if video has ended, next video is available and autoplay is enabled. - if(playbackState == Player.STATE_ENDED && relatedStreams != null && - relatedStreams!!.isNotEmpty() && !transitioning && autoplay) { + if( + playbackState == Player.STATE_ENDED && + relatedStreams != null && + relatedStreams!!.isNotEmpty() && + !transitioning && + autoplay + ) { transitioning = true videoId = relatedStreams!![0].url!!.replace("/watch?v=", "") fetchJsonAndInitPlayer(view) From a47eb63ac2e49526ef5745e55c1d2e08e8c1fbc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=81nis?= <97699850+janisslsm@users.noreply.github.com> Date: Fri, 17 Jun 2022 14:33:10 +0300 Subject: [PATCH 6/6] Hopefully last --- .../main/java/com/github/libretube/fragments/PlayerFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt index 6cee457c5..2bee35ca3 100644 --- a/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/fragments/PlayerFragment.kt @@ -523,7 +523,7 @@ class PlayerFragment : Fragment() { ) // check if video has ended, next video is available and autoplay is enabled. - if( + if ( playbackState == Player.STATE_ENDED && relatedStreams != null && relatedStreams!!.isNotEmpty() &&