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:
parent
22012873a0
commit
f400571e04
8 changed files with 49 additions and 7 deletions
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
Loading…
Reference in a new issue