diff --git a/.gitignore b/.gitignore index 9ac549ef..1b800698 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,7 @@ captures/ *.apk *.dm output.json -output-metadata.json +app/phone/libre/release/output-metadata.json # IntelliJ *.iml 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 bb88cee3..4f0e6cc0 100644 --- a/app/phone/src/main/java/com/nomadics9/ananas/PlayerActivity.kt +++ b/app/phone/src/main/java/com/nomadics9/ananas/PlayerActivity.kt @@ -146,6 +146,10 @@ class PlayerActivity : BasePlayerActivity() { it.currentTrickplay = currentTrickplay } + playerGestureHelper?.let { + it.currentTrickplay = currentTrickplay + } + // Chapters if (appPreferences.showChapterMarkers && currentChapters != null) { currentChapters?.let { chapters -> diff --git a/app/phone/src/main/java/com/nomadics9/ananas/utils/PlayerGestureHelper.kt b/app/phone/src/main/java/com/nomadics9/ananas/utils/PlayerGestureHelper.kt index 7be379c0..15c30902 100644 --- a/app/phone/src/main/java/com/nomadics9/ananas/utils/PlayerGestureHelper.kt +++ b/app/phone/src/main/java/com/nomadics9/ananas/utils/PlayerGestureHelper.kt @@ -2,6 +2,7 @@ package com.nomadics9.ananas.utils import android.annotation.SuppressLint import android.content.res.Resources +import android.graphics.Bitmap import android.media.AudioManager import android.os.Build import android.os.SystemClock @@ -19,15 +20,20 @@ import android.view.animation.DecelerateInterpolator import android.widget.ImageView import androidx.media3.ui.AspectRatioFrameLayout import androidx.media3.ui.PlayerView +import coil.transform.RoundedCornersTransformation import com.nomadics9.ananas.AppPreferences import com.nomadics9.ananas.Constants import com.nomadics9.ananas.PlayerActivity import com.nomadics9.ananas.isControlsLocked import com.nomadics9.ananas.models.PlayerChapter +import com.nomadics9.ananas.models.Trickplay import com.nomadics9.ananas.mpv.MPVPlayer import timber.log.Timber import kotlin.math.abs +import kotlinx.coroutines.Dispatchers +import coil.load + class PlayerGestureHelper( private val appPreferences: AppPreferences, private val activity: PlayerActivity, @@ -62,6 +68,10 @@ class PlayerGestureHelper( private val screenWidth = Resources.getSystem().displayMetrics.widthPixels private val screenHeight = Resources.getSystem().displayMetrics.heightPixels + var currentTrickplay: Trickplay? = null + private val roundedCorners = RoundedCornersTransformation(10f) + private var currentBitMap: Bitmap? = null + private var currentNumberOfPointers: Int = 0 private val tapGestureDetector = GestureDetector( @@ -265,6 +275,13 @@ class PlayerGestureHelper( activity.binding.progressScrubberLayout.visibility = View.VISIBLE activity.binding.progressScrubberText.text = "${longToTimestamp(difference)} [${longToTimestamp(newPos, true)}]" swipeGestureValueTrackerProgress = newPos + + if (currentTrickplay != null) { + onMove(newPos) + } else { + activity.binding.imagePreviewGesture.visibility = View.GONE + } + swipeGestureProgressOpen = true true } else { @@ -471,11 +488,28 @@ class PlayerGestureHelper( return false } + fun onMove(position: Long) { + val trickplay = currentTrickplay ?: return + val image = trickplay.images[position.div(trickplay.interval).toInt()] + + if (currentBitMap != image) { + activity.binding.imagePreviewGesture.load(image) { + dispatcher(Dispatchers.Main.immediate) + transformations(roundedCorners) + } + currentBitMap = image + } + } + init { if (appPreferences.playerBrightnessRemember) { activity.window.attributes.screenBrightness = appPreferences.playerBrightness } + if (!appPreferences.playerTrickPlayGesture) { + activity.binding.imagePreviewGesture.visibility = View.GONE + } + updateZoomMode(appPreferences.playerStartMaximized) @Suppress("ClickableViewAccessibility") diff --git a/app/phone/src/main/res/layout/activity_player.xml b/app/phone/src/main/res/layout/activity_player.xml index c2c1f5b7..8ee15cc2 100644 --- a/app/phone/src/main/res/layout/activity_player.xml +++ b/app/phone/src/main/res/layout/activity_player.xml @@ -16,8 +16,11 @@ + + diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 20f16746..95652d8d 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -1,7 +1,7 @@ import org.gradle.api.JavaVersion object Versions { - const val appCode = 3 + const val appCode = 4 const val appName = "0.14.2" const val compileSdk = 34 diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 4b03acd0..8661bb84 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -193,4 +193,6 @@ Add to favorites Remove from favorites AlaskarTV Requests + Trick Play in seek gesture + Requires \'Seek gesture\' and \'Trick Play\' diff --git a/core/src/main/res/xml/fragment_settings_player.xml b/core/src/main/res/xml/fragment_settings_player.xml index d9336467..6bde7e62 100644 --- a/core/src/main/res/xml/fragment_settings_player.xml +++ b/core/src/main/res/xml/fragment_settings_player.xml @@ -103,6 +103,14 @@ app:title="@string/pref_player_trickplay" app:widgetLayout="@layout/preference_material3_switch" /> + +