From bc9110ed27999ca4a3f8c8780d0510b9eb5bce6c Mon Sep 17 00:00:00 2001 From: Bnyro Date: Wed, 16 Nov 2022 11:00:39 +0100 Subject: [PATCH] add selection logic --- .../libretube/ui/fragments/PlayerFragment.kt | 18 +++++++++++++++++- .../com/github/libretube/util/PlayerHelper.kt | 7 ++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index b8a62f854..8e0bf61df 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -38,6 +38,7 @@ import com.github.libretube.R import com.github.libretube.api.CronetHelper import com.github.libretube.api.RetrofitInstance import com.github.libretube.api.obj.ChapterSegment +import com.github.libretube.api.obj.PipedStream import com.github.libretube.api.obj.SegmentData import com.github.libretube.api.obj.StreamItem import com.github.libretube.api.obj.Streams @@ -1407,8 +1408,23 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { .show(childFragmentManager) } + fun getAudioStreamGroups(audioStreams: List?): Map> { + return audioStreams.orEmpty() + .filter { it.audioTrackName != null } + .groupBy { it.audioTrackName!! } + } + override fun onAudioStreamClicked() { - TODO("Not yet implemented") + val audioGroups = getAudioStreamGroups(streams.audioStreams) + val audioLanguages = audioGroups.map { it.key } + + BaseBottomSheet() + .setSimpleItems(audioLanguages) { index -> + val audioStreams = audioGroups.values.elementAt(index) + val audioUrl = PlayerHelper.getAudioSource(requireContext(), audioStreams) + setMediaSource(streams.videoStreams!!.first().url!!.toUri(), audioUrl) + } + .show(childFragmentManager) } override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) { diff --git a/app/src/main/java/com/github/libretube/util/PlayerHelper.kt b/app/src/main/java/com/github/libretube/util/PlayerHelper.kt index b8d7281fc..77ed8f8a4 100644 --- a/app/src/main/java/com/github/libretube/util/PlayerHelper.kt +++ b/app/src/main/java/com/github/libretube/util/PlayerHelper.kt @@ -3,6 +3,7 @@ package com.github.libretube.util import android.content.Context import android.content.pm.ActivityInfo import android.view.accessibility.CaptioningManager +import com.github.libretube.api.obj.PipedStream import com.github.libretube.constants.PreferenceKeys import com.google.android.exoplayer2.ui.CaptionStyleCompat import com.google.android.exoplayer2.video.VideoSize @@ -12,7 +13,7 @@ object PlayerHelper { // get the audio source following the users preferences fun getAudioSource( context: Context, - audios: List + audios: List ): String { val audioFormat = PreferenceHelper.getString(PreferenceKeys.PLAYER_AUDIO_FORMAT, "all") val audioQuality = if ( @@ -39,7 +40,7 @@ object PlayerHelper { } // get the best bit rate from audio streams - private fun getMostBitRate(audios: List): String { + private fun getMostBitRate(audios: List): String { var bitrate = 0 var audioUrl = "" audios.forEach { @@ -52,7 +53,7 @@ object PlayerHelper { } // get the best bit rate from audio streams - private fun getLeastBitRate(audios: List): String { + private fun getLeastBitRate(audios: List): String { var bitrate = 1000000000 var audioUrl = "" audios.forEach {