From b50b7b985f09ad4f73c209722fb5080ba564e6c4 Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester <32322857+jarnedemeulemeester@users.noreply.github.com> Date: Mon, 9 May 2022 21:22:59 +0200 Subject: [PATCH] Upgrade ExoPlayer to 2.17.1 (#116) * Upgrade ExoPlayer to 2.17.1 * Upgrade ExoPlayer FFmpeg extension to 2.17.1 * Revert subtitle and audio track buttons changes * Clean up layout files and code * Clean up activity_player.xml * Fix warnings about exo drawables overrides --- app/build.gradle.kts | 2 +- app/libs/extension-ffmpeg-release.aar | Bin 3177533 -> 3178232 bytes .../dev/jdtech/jellyfin/PlayerActivity.kt | 18 ++--- .../jellyfin/utils/PlayerGestureHelper.kt | 6 +- app/src/main/res/layout/activity_player.xml | 21 +++--- app/src/main/res/layout/exo_player_view.xml | 63 ---------------- ...xml => exo_styled_player_control_view.xml} | 6 +- .../res/layout/exo_styled_player_view.xml | 71 ++++++++++++++++++ app/src/main/res/values/drawables.xml | 6 +- 9 files changed, 103 insertions(+), 90 deletions(-) delete mode 100644 app/src/main/res/layout/exo_player_view.xml rename app/src/main/res/layout/{exo_player_control_view.xml => exo_styled_player_control_view.xml} (97%) create mode 100644 app/src/main/res/layout/exo_styled_player_view.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0b3a74be..b73c08e3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -113,7 +113,7 @@ dependencies { kapt("com.google.dagger:hilt-compiler:$hiltVersion") // ExoPlayer - val exoplayerVersion = "2.16.1" + val exoplayerVersion = "2.17.1" implementation("com.google.android.exoplayer:exoplayer-core:$exoplayerVersion") implementation("com.google.android.exoplayer:exoplayer-ui:$exoplayerVersion") implementation(files("libs/extension-ffmpeg-release.aar")) diff --git a/app/libs/extension-ffmpeg-release.aar b/app/libs/extension-ffmpeg-release.aar index cbcf99aad8d0578634a4c68e023d7954d08aab31..019feffa6bfe036bdf8b34e446025d039db8f3be 100644 GIT binary patch delta 10573 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 MKtO!I>mVTi1F1N@n*aa+ delta 9870 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 diff --git a/app/src/main/java/dev/jdtech/jellyfin/PlayerActivity.kt b/app/src/main/java/dev/jdtech/jellyfin/PlayerActivity.kt index 19815b8a..95520971 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/PlayerActivity.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/PlayerActivity.kt @@ -10,7 +10,7 @@ import android.widget.TextView import androidx.activity.viewModels import androidx.navigation.navArgs import com.google.android.exoplayer2.C -import com.google.android.exoplayer2.SimpleExoPlayer +import com.google.android.exoplayer2.ExoPlayer import com.google.android.exoplayer2.ui.TrackSelectionDialogBuilder import dagger.hilt.android.AndroidEntryPoint import dev.jdtech.jellyfin.databinding.ActivityPlayerBinding @@ -64,9 +64,9 @@ class PlayerActivity : BasePlayerActivity() { val videoNameTextView = binding.playerView.findViewById(R.id.video_name) - viewModel.currentItemTitle.observe(this, { title -> + viewModel.currentItemTitle.observe(this) { title -> videoNameTextView.text = title - }) + } val audioButton = binding.playerView.findViewById(R.id.btn_audio_track) val subtitleButton = binding.playerView.findViewById(R.id.btn_subtitle) @@ -89,7 +89,7 @@ class PlayerActivity : BasePlayerActivity() { "trackselectiondialog" ) } - is SimpleExoPlayer -> { + is ExoPlayer -> { val mappedTrackInfo = viewModel.trackSelector.currentMappedTrackInfo ?: return@setOnClickListener @@ -120,7 +120,7 @@ class PlayerActivity : BasePlayerActivity() { "trackselectiondialog" ) } - is SimpleExoPlayer -> { + is ExoPlayer -> { val mappedTrackInfo = viewModel.trackSelector.currentMappedTrackInfo ?: return@setOnClickListener @@ -152,7 +152,7 @@ class PlayerActivity : BasePlayerActivity() { ) } - viewModel.fileLoaded.observe(this, { + viewModel.fileLoaded.observe(this) { if (it) { audioButton.isEnabled = true audioButton.imageAlpha = 255 @@ -161,13 +161,13 @@ class PlayerActivity : BasePlayerActivity() { speedButton.isEnabled = true speedButton.imageAlpha = 255 } - }) + } - viewModel.navigateBack.observe(this, { + viewModel.navigateBack.observe(this) { if (it) { onBackPressed() } - }) + } viewModel.initializePlayer(args.items) hideSystemUI() diff --git a/app/src/main/java/dev/jdtech/jellyfin/utils/PlayerGestureHelper.kt b/app/src/main/java/dev/jdtech/jellyfin/utils/PlayerGestureHelper.kt index ff4bb00a..9b7b830e 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/utils/PlayerGestureHelper.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/utils/PlayerGestureHelper.kt @@ -9,7 +9,7 @@ import android.view.View import android.view.WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL import android.view.WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_OFF import com.google.android.exoplayer2.ui.AspectRatioFrameLayout -import com.google.android.exoplayer2.ui.PlayerView +import com.google.android.exoplayer2.ui.StyledPlayerView import dev.jdtech.jellyfin.PlayerActivity import timber.log.Timber import kotlin.math.abs @@ -17,7 +17,7 @@ import kotlin.math.abs class PlayerGestureHelper( private val appPreferences: AppPreferences, private val activity: PlayerActivity, - private val playerView: PlayerView, + private val playerView: StyledPlayerView, private val audioManager: AudioManager ) { @@ -44,7 +44,7 @@ class PlayerGestureHelper( override fun onSingleTapUp(e: MotionEvent?): Boolean { playerView.apply { - if (!isControllerVisible) showController() else hideController() + if (!isControllerFullyVisible) showController() else hideController() } return true } diff --git a/app/src/main/res/layout/activity_player.xml b/app/src/main/res/layout/activity_player.xml index 65efc487..8546d4f5 100644 --- a/app/src/main/res/layout/activity_player.xml +++ b/app/src/main/res/layout/activity_player.xml @@ -6,11 +6,12 @@ android:layout_height="match_parent" tools:context=".PlayerActivity"> - + tools:visibility="visible"> + android:textColor="@color/white" /> + tools:progress="58" /> + tools:visibility="visible"> + android:textColor="@color/white" /> + tools:progress="58" /> - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/exo_player_control_view.xml b/app/src/main/res/layout/exo_styled_player_control_view.xml similarity index 97% rename from app/src/main/res/layout/exo_player_control_view.xml rename to app/src/main/res/layout/exo_styled_player_control_view.xml index 4667c681..f2baaef7 100644 --- a/app/src/main/res/layout/exo_player_control_view.xml +++ b/app/src/main/res/layout/exo_styled_player_control_view.xml @@ -62,6 +62,7 @@ android:layout_height="wrap_content" android:layout_gravity="end" android:background="@drawable/transparent_circle_background" + android:contentDescription="@string/select_playback_speed" android:padding="16dp" android:src="@drawable/ic_gauge" app:tint="@color/white" /> @@ -126,7 +127,7 @@ android:src="@drawable/ic_rewind" /> + android:paddingStart="8dp" + android:paddingEnd="8dp"> + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/drawables.xml b/app/src/main/res/values/drawables.xml index 131b14cb..f50bbce9 100644 --- a/app/src/main/res/values/drawables.xml +++ b/app/src/main/res/values/drawables.xml @@ -1,5 +1,5 @@ - - @drawable/ic_play - @drawable/ic_pause + + @drawable/ic_play + @drawable/ic_pause \ No newline at end of file