Customize the seeking increments (#128)

* Add the ability to customize the seeking increments

* Fix number keyboard image cache size

* Clean up fragment_settings_player.xml
This commit is contained in:
Jarne Demeulemeester 2022-07-05 09:06:26 +02:00 committed by GitHub
parent 22012873a0
commit f400571e04
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 49 additions and 7 deletions

View file

@ -11,7 +11,7 @@ class SettingsCacheFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.fragment_settings_cache, rootKey)
findPreference<EditTextPreference>("image_cache_size")?.setOnBindEditTextListener { editText ->
findPreference<EditTextPreference>("pref_image_cache_size")?.setOnBindEditTextListener { editText ->
editText.inputType = InputType.TYPE_CLASS_NUMBER
}
}

View file

@ -1,6 +1,8 @@
package dev.jdtech.jellyfin.fragments
import android.os.Bundle
import android.text.InputType
import androidx.preference.EditTextPreference
import androidx.preference.PreferenceFragmentCompat
import dev.jdtech.jellyfin.R
@ -8,5 +10,11 @@ import dev.jdtech.jellyfin.R
class SettingsPlayerFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.fragment_settings_player, rootKey)
findPreference<EditTextPreference>("pref_player_seek_back_inc")?.setOnBindEditTextListener { editText ->
editText.inputType = InputType.TYPE_CLASS_NUMBER
}
findPreference<EditTextPreference>("pref_player_seek_forward_inc")?.setOnBindEditTextListener { editText ->
editText.inputType = InputType.TYPE_CLASS_NUMBER
}
}
}

View file

@ -23,6 +23,7 @@ import com.google.android.exoplayer2.text.CueGroup
import com.google.android.exoplayer2.trackselection.TrackSelectionParameters
import com.google.android.exoplayer2.util.*
import com.google.android.exoplayer2.video.VideoSize
import dev.jdtech.jellyfin.utils.AppPreferences
import kotlinx.parcelize.Parcelize
import org.json.JSONArray
import org.json.JSONException
@ -36,7 +37,7 @@ class MPVPlayer(
context: Context,
requestAudioFocus: Boolean,
preferredLanguages: Map<String, String>,
disableHardwareDecoding: Boolean
private val appPreferences: AppPreferences
) : BasePlayer(), MPVLib.EventObserver, AudioManager.OnAudioFocusChangeListener {
private val audioManager: AudioManager by lazy { context.getSystemService()!! }
@ -68,7 +69,7 @@ class MPVPlayer(
MPVLib.setOptionString("ao", "audiotrack,opensles")
// Hardware video decoding
if (disableHardwareDecoding) {
if (appPreferences.mpvDisableHwDec) {
MPVLib.setOptionString("hwdec", "no")
} else {
MPVLib.setOptionString("hwdec", "mediacodec-copy")
@ -863,11 +864,11 @@ class MPVPlayer(
}
override fun getSeekBackIncrement(): Long {
return C.DEFAULT_SEEK_BACK_INCREMENT_MS
return appPreferences.playerSeekBackIncrement
}
override fun getSeekForwardIncrement(): Long {
return C.DEFAULT_SEEK_FORWARD_INCREMENT_MS
return appPreferences.playerSeekForwardIncrement
}
override fun getMaxSeekToPreviousPosition(): Long {

View file

@ -3,6 +3,8 @@ package dev.jdtech.jellyfin.utils
import android.content.SharedPreferences
import android.view.WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE
import androidx.core.content.edit
import com.google.android.exoplayer2.C.DEFAULT_SEEK_BACK_INCREMENT_MS
import com.google.android.exoplayer2.C.DEFAULT_SEEK_FORWARD_INCREMENT_MS
import javax.inject.Inject
class AppPreferences
@ -27,4 +29,13 @@ constructor(
putFloat(Constants.PREF_PLAYER_BRIGHTNESS, value)
}
}
val playerSeekBackIncrement = sharedPreferences.getString(
Constants.PREF_PLAYER_SEEK_BACK_INC,
DEFAULT_SEEK_BACK_INCREMENT_MS.toString()
)!!.toLong()
val playerSeekForwardIncrement = sharedPreferences.getString(
Constants.PREF_PLAYER_SEEK_FORWARD_INC,
DEFAULT_SEEK_FORWARD_INCREMENT_MS.toString()
)!!.toLong()
val mpvDisableHwDec = sharedPreferences.getBoolean("mpv_disable_hwdec", false)
}

View file

@ -13,6 +13,8 @@ object Constants {
const val PREF_PLAYER_GESTURES_ZOOM = "pref_player_gestures_zoom"
const val PREF_PLAYER_BRIGHTNESS_REMEMBER = "pref_player_brightness_remember"
const val PREF_PLAYER_BRIGHTNESS = "pref_player_brightness"
const val PREF_PLAYER_SEEK_BACK_INC = "pref_player_seek_back_inc"
const val PREF_PLAYER_SEEK_FORWARD_INC = "pref_player_seek_forward_inc"
const val PREF_IMAGE_CACHE = "pref_image_cache"
const val PREF_IMAGE_CACHE_SIZE = "pref_image_cache_size"

View file

@ -19,6 +19,7 @@ import dev.jdtech.jellyfin.models.PlayerItem
import dev.jdtech.jellyfin.mpv.MPVPlayer
import dev.jdtech.jellyfin.mpv.TrackType
import dev.jdtech.jellyfin.repository.JellyfinRepository
import dev.jdtech.jellyfin.utils.AppPreferences
import dev.jdtech.jellyfin.utils.postDownloadPlaybackProgress
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
@ -32,7 +33,8 @@ class PlayerActivityViewModel
constructor(
application: Application,
private val jellyfinRepository: JellyfinRepository,
private val downloadDatabase: DownloadDatabaseDao
private val downloadDatabase: DownloadDatabaseDao,
appPreferences: AppPreferences,
) : ViewModel(), Player.Listener {
val player: Player
@ -75,7 +77,7 @@ constructor(
application,
false,
preferredLanguages,
sp.getBoolean("mpv_disable_hwdec", false)
appPreferences
)
} else {
val renderersFactory =
@ -90,6 +92,8 @@ constructor(
)
player = ExoPlayer.Builder(application, renderersFactory)
.setTrackSelector(trackSelector)
.setSeekBackIncrementMs(appPreferences.playerSeekBackIncrement)
.setSeekForwardIncrementMs(appPreferences.playerSeekForwardIncrement)
.build()
}
}

View file

@ -125,4 +125,7 @@
<string name="add_server_empty_error">Empty server address</string>
<string name="display_extended_title_summary">Display extended episode title including season and episode information (SXX:EXX - EpisodeName).</string>
<string name="display_extended_title">Display extended title</string>
<string name="seeking">Seeking</string>
<string name="seek_back_increment">Seek back increment (ms)</string>
<string name="seek_forward_increment">Seek forward increment (ms)</string>
</resources>

View file

@ -40,4 +40,17 @@
app:title="@string/player_brightness_remember" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/seeking">
<EditTextPreference
app:defaultValue="5000"
app:key="pref_player_seek_back_inc"
app:title="@string/seek_back_increment"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
app:defaultValue="15000"
app:key="pref_player_seek_forward_inc"
app:title="@string/seek_forward_increment"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
</PreferenceScreen>