From ab090a01d7cf3db066cd706e8dff782619ee3488 Mon Sep 17 00:00:00 2001 From: nomadics9 Date: Sun, 14 Jul 2024 01:38:34 +0300 Subject: [PATCH] feat: Quality change in player --- .../com/nomadics9/ananas/PlayerActivity.kt | 20 +++ .../res/layout/dialog_quality_selection.xml | 36 +++++ .../src/main/res/layout/exo_player_view.xml | 7 + .../ananas/repository/JellyfinRepository.kt | 2 + .../repository/JellyfinRepositoryImpl.kt | 10 ++ .../JellyfinRepositoryOfflineImpl.kt | 4 + .../viewmodels/PlayerActivityViewModel.kt | 125 ++++++++++++++++++ 7 files changed, 204 insertions(+) create mode 100644 app/phone/src/main/res/layout/dialog_quality_selection.xml diff --git a/app/phone/src/main/java/com/nomadics9/ananas/PlayerActivity.kt b/app/phone/src/main/java/com/nomadics9/ananas/PlayerActivity.kt index 74ad7028..934d34b7 100644 --- a/app/phone/src/main/java/com/nomadics9/ananas/PlayerActivity.kt +++ b/app/phone/src/main/java/com/nomadics9/ananas/PlayerActivity.kt @@ -1,5 +1,6 @@ package com.nomadics9.ananas +import android.app.AlertDialog import android.app.AppOpsManager import android.app.PictureInPictureParams import android.content.Context @@ -86,6 +87,12 @@ class PlayerActivity : BasePlayerActivity() { binding = ActivityPlayerBinding.inflate(layoutInflater) setContentView(binding.root) + + val changeQualityButton: Button = findViewById(R.id.btnChangeQuality) + changeQualityButton.setOnClickListener { + showQualitySelectionDialog() + } + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) binding.playerView.player = viewModel.player @@ -418,6 +425,19 @@ class PlayerActivity : BasePlayerActivity() { } catch (_: IllegalArgumentException) { } } + private fun showQualitySelectionDialog() { + val qualities = arrayOf("1080p", "720p", "480p", "360p") + + AlertDialog.Builder(this) + .setTitle("Select Video Quality") + .setItems(qualities) { _, which -> + val selectedQuality = qualities[which] + viewModel.changeVideoQuality(selectedQuality) + } + .show() + } + + override fun onPictureInPictureModeChanged( isInPictureInPictureMode: Boolean, newConfig: Configuration, diff --git a/app/phone/src/main/res/layout/dialog_quality_selection.xml b/app/phone/src/main/res/layout/dialog_quality_selection.xml new file mode 100644 index 00000000..78d9a0be --- /dev/null +++ b/app/phone/src/main/res/layout/dialog_quality_selection.xml @@ -0,0 +1,36 @@ + + + + + +