forked from recloudstream/cloudstream
updated deprecated exoplayer functions
This commit is contained in:
parent
5c0bab96a4
commit
1e858ddd04
1 changed files with 164 additions and 73 deletions
|
@ -46,7 +46,7 @@ import com.fasterxml.jackson.module.kotlin.KotlinModule
|
|||
import com.fasterxml.jackson.module.kotlin.readValue
|
||||
import com.google.android.exoplayer2.*
|
||||
import com.google.android.exoplayer2.C.TIME_UNSET
|
||||
import com.google.android.exoplayer2.database.ExoDatabaseProvider
|
||||
import com.google.android.exoplayer2.database.StandaloneDatabaseProvider
|
||||
import com.google.android.exoplayer2.source.DefaultMediaSourceFactory
|
||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector
|
||||
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout
|
||||
|
@ -255,7 +255,7 @@ class PlayerFragment : Fragment() {
|
|||
private lateinit var uriData: UriData
|
||||
private var isDownloadedFile = false
|
||||
private var isShowing = true
|
||||
private lateinit var exoPlayer: SimpleExoPlayer
|
||||
private lateinit var exoPlayer: ExoPlayer
|
||||
|
||||
//private var currentPercentage = 0
|
||||
// private var hasNextEpisode = true
|
||||
|
@ -429,7 +429,9 @@ class PlayerFragment : Fragment() {
|
|||
val rmin = min % 60
|
||||
val h = ceil((min - rmin) / 60.0).toInt()
|
||||
//int rh = h;// h % 24;
|
||||
return (if (h > 0) forceLetters(h) + ":" else "") + (if (rmin >= 0 || h >= 0) forceLetters(rmin) + ":" else "") + forceLetters(
|
||||
return (if (h > 0) forceLetters(h) + ":" else "") + (if (rmin >= 0 || h >= 0) forceLetters(
|
||||
rmin
|
||||
) + ":" else "") + forceLetters(
|
||||
rsec
|
||||
)
|
||||
}
|
||||
|
@ -439,9 +441,12 @@ class PlayerFragment : Fragment() {
|
|||
}
|
||||
|
||||
private var swipeEnabled = true //<settingsManager!!.getBoolean("swipe_enabled", true)
|
||||
private var swipeVerticalEnabled = true//settingsManager.getBoolean("swipe_vertical_enabled", true)
|
||||
private var playBackSpeedEnabled = true//settingsManager!!.getBoolean("playback_speed_enabled", false)
|
||||
private var playerResizeEnabled = true//settingsManager!!.getBoolean("player_resize_enabled", false)
|
||||
private var swipeVerticalEnabled =
|
||||
true//settingsManager.getBoolean("swipe_vertical_enabled", true)
|
||||
private var playBackSpeedEnabled =
|
||||
true//settingsManager!!.getBoolean("playback_speed_enabled", false)
|
||||
private var playerResizeEnabled =
|
||||
true//settingsManager!!.getBoolean("player_resize_enabled", false)
|
||||
private var doubleTapEnabled = false
|
||||
private var useSystemBrightness = false
|
||||
private var useTrueSystemBrightness = false
|
||||
|
@ -555,8 +560,10 @@ class PlayerFragment : Fragment() {
|
|||
if (hasPassedVerticalSwipeThreshold) {
|
||||
if (currentX > width * 0.5) {
|
||||
if (audioManager != null && progressBarLeftHolder != null) {
|
||||
val currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)
|
||||
val maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
|
||||
val currentVolume =
|
||||
audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)
|
||||
val maxVolume =
|
||||
audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
|
||||
|
||||
if (progressBarLeftHolder?.alpha ?: 0f <= 0f) {
|
||||
cachedVolume = currentVolume.toFloat() / maxVolume.toFloat()
|
||||
|
@ -583,7 +590,11 @@ class PlayerFragment : Fragment() {
|
|||
val newVolumeAdjusted =
|
||||
if (desiredVol < currentVolume) AudioManager.ADJUST_LOWER else AudioManager.ADJUST_RAISE
|
||||
|
||||
audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, newVolumeAdjusted, 0)
|
||||
audioManager.adjustStreamVolume(
|
||||
AudioManager.STREAM_MUSIC,
|
||||
newVolumeAdjusted,
|
||||
0
|
||||
)
|
||||
}
|
||||
//audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, newVolume, 0)
|
||||
}
|
||||
|
@ -609,7 +620,8 @@ class PlayerFragment : Fragment() {
|
|||
}
|
||||
prevDiffX = diffX
|
||||
|
||||
skipTime = ((exoPlayer.duration * (diffX * diffX) / 10) * (if (diffX < 0) -1 else 1)).toLong()
|
||||
skipTime =
|
||||
((exoPlayer.duration * (diffX * diffX) / 10) * (if (diffX < 0) -1 else 1)).toLong()
|
||||
if (isMovingStartTime + skipTime < 0) {
|
||||
skipTime = -isMovingStartTime
|
||||
} else if (isMovingStartTime + skipTime > exoPlayer.duration) {
|
||||
|
@ -618,7 +630,12 @@ class PlayerFragment : Fragment() {
|
|||
if ((abs(skipTime) > 3000 || hasPassedSkipLimit) && !preventHorizontalSwipe) {
|
||||
hasPassedSkipLimit = true
|
||||
val timeString =
|
||||
"${convertTimeToString((isMovingStartTime + skipTime) / 1000.0)} [${(if (abs(skipTime) < 1000) "" else (if (skipTime > 0) "+" else "-"))}${
|
||||
"${convertTimeToString((isMovingStartTime + skipTime) / 1000.0)} [${
|
||||
(if (abs(
|
||||
skipTime
|
||||
) < 1000
|
||||
) "" else (if (skipTime > 0) "+" else "-"))
|
||||
}${
|
||||
convertTimeToString(abs(skipTime / 1000.0))
|
||||
}]"
|
||||
timeText.alpha = 1f
|
||||
|
@ -669,7 +686,8 @@ class PlayerFragment : Fragment() {
|
|||
val data = localData
|
||||
|
||||
if (this::exoPlayer.isInitialized && exoPlayer.currentPosition >= 0) {
|
||||
val percentage = ((position ?: exoPlayer.currentPosition) * 100 / exoPlayer.contentDuration).toInt()
|
||||
val percentage =
|
||||
((position ?: exoPlayer.currentPosition) * 100 / exoPlayer.contentDuration).toInt()
|
||||
val hasNext = hasNextEpisode()
|
||||
|
||||
if (percentage >= AUTOLOAD_NEXT_EPISODE_PERCENTAGE && hasNext) {
|
||||
|
@ -745,7 +763,8 @@ class PlayerFragment : Fragment() {
|
|||
safeReleasePlayer()
|
||||
}
|
||||
|
||||
private class SettingsContentObserver(handler: Handler?, val activity: Activity) : ContentObserver(handler) {
|
||||
private class SettingsContentObserver(handler: Handler?, val activity: Activity) :
|
||||
ContentObserver(handler) {
|
||||
private val audioManager = activity.getSystemService(AUDIO_SERVICE) as? AudioManager
|
||||
override fun onChange(selfChange: Boolean) {
|
||||
val currentVolume = audioManager?.getStreamVolume(AudioManager.STREAM_MUSIC)
|
||||
|
@ -809,7 +828,13 @@ class PlayerFragment : Fragment() {
|
|||
}*/
|
||||
|
||||
if (isDownloadedFile) {
|
||||
ctx.setLastWatched(uriData.parentId, uriData.id, uriData.episode, uriData.season, true)
|
||||
ctx.setLastWatched(
|
||||
uriData.parentId,
|
||||
uriData.id,
|
||||
uriData.episode,
|
||||
uriData.season,
|
||||
true
|
||||
)
|
||||
} else
|
||||
viewModel.reloadEpisodes(ctx)
|
||||
}
|
||||
|
@ -972,11 +997,25 @@ class PlayerFragment : Fragment() {
|
|||
if (exoPlayer.isPlaying) {
|
||||
actions.add(getRemoteAction(R.drawable.netflix_pause, "Pause", PlayerEventType.Pause))
|
||||
} else {
|
||||
actions.add(getRemoteAction(R.drawable.ic_baseline_play_arrow_24, "Play", PlayerEventType.Play))
|
||||
actions.add(
|
||||
getRemoteAction(
|
||||
R.drawable.ic_baseline_play_arrow_24,
|
||||
"Play",
|
||||
PlayerEventType.Play
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
actions.add(getRemoteAction(R.drawable.go_forward_30, "Go Forward", PlayerEventType.SeekForward))
|
||||
activity?.setPictureInPictureParams(PictureInPictureParams.Builder().setActions(actions).build())
|
||||
actions.add(
|
||||
getRemoteAction(
|
||||
R.drawable.go_forward_30,
|
||||
"Go Forward",
|
||||
PlayerEventType.SeekForward
|
||||
)
|
||||
)
|
||||
activity?.setPictureInPictureParams(
|
||||
PictureInPictureParams.Builder().setActions(actions).build()
|
||||
)
|
||||
}
|
||||
|
||||
private var receiver: BroadcastReceiver? = null
|
||||
|
@ -1117,20 +1156,38 @@ class PlayerFragment : Fragment() {
|
|||
}
|
||||
PlayerEventType.ShowSpeed.value -> {
|
||||
val speedsText =
|
||||
listOf("0.5x", "0.75x", "0.85x", "1x", "1.15x", "1.25x", "1.4x", "1.5x", "1.75x", "2x")
|
||||
val speedsNumbers = listOf(0.5f, 0.75f, 0.85f, 1f, 1.15f, 1.25f, 1.4f, 1.5f, 1.75f, 2f)
|
||||
listOf(
|
||||
"0.5x",
|
||||
"0.75x",
|
||||
"0.85x",
|
||||
"1x",
|
||||
"1.15x",
|
||||
"1.25x",
|
||||
"1.4x",
|
||||
"1.5x",
|
||||
"1.75x",
|
||||
"2x"
|
||||
)
|
||||
val speedsNumbers =
|
||||
listOf(0.5f, 0.75f, 0.85f, 1f, 1.15f, 1.25f, 1.4f, 1.5f, 1.75f, 2f)
|
||||
val speedIndex = speedsNumbers.indexOf(playbackSpeed)
|
||||
|
||||
context?.let { ctx ->
|
||||
ctx.showDialog(speedsText, speedIndex, ctx.getString(R.string.player_speed), false, {
|
||||
activity?.hideSystemUI()
|
||||
}) { index ->
|
||||
ctx.showDialog(
|
||||
speedsText,
|
||||
speedIndex,
|
||||
ctx.getString(R.string.player_speed),
|
||||
false,
|
||||
{
|
||||
activity?.hideSystemUI()
|
||||
}) { index ->
|
||||
playbackSpeed = speedsNumbers[index]
|
||||
requireContext().setKey(PLAYBACK_SPEED_KEY, playbackSpeed)
|
||||
val param = PlaybackParameters(playbackSpeed)
|
||||
exoPlayer.playbackParameters = param
|
||||
playback_speed_btt?.text =
|
||||
getString(R.string.player_speed_text_format).format(playbackSpeed).replace(".0x", "x")
|
||||
getString(R.string.player_speed_text_format).format(playbackSpeed)
|
||||
.replace(".0x", "x")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1139,7 +1196,8 @@ class PlayerFragment : Fragment() {
|
|||
context?.let { ctx ->
|
||||
//val isPlaying = exoPlayer.isPlaying
|
||||
exoPlayer.pause()
|
||||
val currentSubtitles = context?.getSubs()?.map { it.lang } ?: activeSubtitles
|
||||
val currentSubtitles =
|
||||
context?.getSubs()?.map { it.lang } ?: activeSubtitles
|
||||
|
||||
val sourceBuilder = AlertDialog.Builder(ctx, R.style.AlertDialogCustomBlack)
|
||||
.setView(R.layout.player_select_source_and_subs)
|
||||
|
@ -1147,10 +1205,14 @@ class PlayerFragment : Fragment() {
|
|||
val sourceDialog = sourceBuilder.create()
|
||||
sourceDialog.show()
|
||||
// bottomSheetDialog.setContentView(R.layout.sort_bottom_sheet)
|
||||
val providerList = sourceDialog.findViewById<ListView>(R.id.sort_providers)!!
|
||||
val subtitleList = sourceDialog.findViewById<ListView>(R.id.sort_subtitles)!!
|
||||
val applyButton = sourceDialog.findViewById<MaterialButton>(R.id.apply_btt)!!
|
||||
val cancelButton = sourceDialog.findViewById<MaterialButton>(R.id.cancel_btt)!!
|
||||
val providerList =
|
||||
sourceDialog.findViewById<ListView>(R.id.sort_providers)!!
|
||||
val subtitleList =
|
||||
sourceDialog.findViewById<ListView>(R.id.sort_subtitles)!!
|
||||
val applyButton =
|
||||
sourceDialog.findViewById<MaterialButton>(R.id.apply_btt)!!
|
||||
val cancelButton =
|
||||
sourceDialog.findViewById<MaterialButton>(R.id.cancel_btt)!!
|
||||
val subsSettings = sourceDialog.findViewById<View>(R.id.subs_settings)!!
|
||||
|
||||
subsSettings.setOnClickListener {
|
||||
|
@ -1164,7 +1226,8 @@ class PlayerFragment : Fragment() {
|
|||
|
||||
val nonSortedUrls = getUrls()
|
||||
if (nonSortedUrls.isNullOrEmpty()) {
|
||||
sourceDialog.findViewById<LinearLayout>(R.id.sort_sources_holder)?.visibility = GONE
|
||||
sourceDialog.findViewById<LinearLayout>(R.id.sort_sources_holder)?.visibility =
|
||||
GONE
|
||||
} else {
|
||||
sources = sortUrls(nonSortedUrls)
|
||||
startSource = sources.indexOf(getCurrentUrl())
|
||||
|
@ -1195,7 +1258,8 @@ class PlayerFragment : Fragment() {
|
|||
var subtitleIndex = startIndexFromMap
|
||||
|
||||
if (currentSubtitles.isEmpty()) {
|
||||
sourceDialog.findViewById<LinearLayout>(R.id.sort_subtitles_holder)?.visibility = GONE
|
||||
sourceDialog.findViewById<LinearLayout>(R.id.sort_subtitles_holder)?.visibility =
|
||||
GONE
|
||||
} else {
|
||||
val subsArrayAdapter =
|
||||
ArrayAdapter<String>(ctx, R.layout.sort_bottom_single_choice)
|
||||
|
@ -1219,7 +1283,8 @@ class PlayerFragment : Fragment() {
|
|||
}
|
||||
|
||||
applyButton.setOnClickListener {
|
||||
if (this::exoPlayer.isInitialized) playbackPosition = exoPlayer.currentPosition
|
||||
if (this::exoPlayer.isInitialized) playbackPosition =
|
||||
exoPlayer.currentPosition
|
||||
|
||||
var init = false
|
||||
if (sourceIndex != startSource) {
|
||||
|
@ -1270,7 +1335,8 @@ class PlayerFragment : Fragment() {
|
|||
//val textRendererIndex = getRendererIndex(C.TRACK_TYPE_TEXT) ?: return@setOnClickListener
|
||||
val realLang = if (lang.isNullOrBlank()) "" else lang.trimEnd()
|
||||
preferredSubtitles =
|
||||
if (realLang.length == 2) SubtitleHelper.fromTwoLettersToLanguage(realLang) ?: realLang else realLang
|
||||
if (realLang.length == 2) SubtitleHelper.fromTwoLettersToLanguage(realLang)
|
||||
?: realLang else realLang
|
||||
|
||||
if (!this::exoPlayer.isInitialized) return
|
||||
(exoPlayer.trackSelector as DefaultTrackSelector?)?.let { trackSelector ->
|
||||
|
@ -1310,12 +1376,20 @@ class PlayerFragment : Fragment() {
|
|||
|
||||
settingsManager = PreferenceManager.getDefaultSharedPreferences(activity)
|
||||
context?.let { ctx ->
|
||||
swipeEnabled = settingsManager.getBoolean(ctx.getString(R.string.swipe_enabled_key), true)
|
||||
swipeVerticalEnabled = settingsManager.getBoolean(ctx.getString(R.string.swipe_vertical_enabled_key), true)
|
||||
playBackSpeedEnabled = settingsManager.getBoolean(ctx.getString(R.string.playback_speed_enabled_key), false)
|
||||
playerResizeEnabled = settingsManager.getBoolean(ctx.getString(R.string.player_resize_enabled_key), true)
|
||||
doubleTapEnabled = settingsManager.getBoolean(ctx.getString(R.string.double_tap_enabled_key), false)
|
||||
useSystemBrightness = settingsManager.getBoolean(ctx.getString(R.string.use_system_brightness_key), false)
|
||||
swipeEnabled =
|
||||
settingsManager.getBoolean(ctx.getString(R.string.swipe_enabled_key), true)
|
||||
swipeVerticalEnabled =
|
||||
settingsManager.getBoolean(ctx.getString(R.string.swipe_vertical_enabled_key), true)
|
||||
playBackSpeedEnabled = settingsManager.getBoolean(
|
||||
ctx.getString(R.string.playback_speed_enabled_key),
|
||||
false
|
||||
)
|
||||
playerResizeEnabled =
|
||||
settingsManager.getBoolean(ctx.getString(R.string.player_resize_enabled_key), true)
|
||||
doubleTapEnabled =
|
||||
settingsManager.getBoolean(ctx.getString(R.string.double_tap_enabled_key), false)
|
||||
useSystemBrightness =
|
||||
settingsManager.getBoolean(ctx.getString(R.string.use_system_brightness_key), false)
|
||||
}
|
||||
|
||||
if (swipeVerticalEnabled)
|
||||
|
@ -1342,7 +1416,8 @@ class PlayerFragment : Fragment() {
|
|||
VISIBLE
|
||||
castContext.addCastStateListener { state ->
|
||||
if (player_media_route_button != null) {
|
||||
player_media_route_button?.isVisible = state != CastState.NO_DEVICES_AVAILABLE
|
||||
player_media_route_button?.isVisible =
|
||||
state != CastState.NO_DEVICES_AVAILABLE
|
||||
|
||||
if (state == CastState.CONNECTED) {
|
||||
if (!this::exoPlayer.isInitialized) return@addCastStateListener
|
||||
|
@ -1358,7 +1433,8 @@ class PlayerFragment : Fragment() {
|
|||
epData.index,
|
||||
episodes,
|
||||
links,
|
||||
context?.getSubs(supportsDownloadedFiles = false) ?: emptyList(),
|
||||
context?.getSubs(supportsDownloadedFiles = false)
|
||||
?: emptyList(),
|
||||
index,
|
||||
exoPlayer.currentPosition
|
||||
)
|
||||
|
@ -1534,7 +1610,8 @@ class PlayerFragment : Fragment() {
|
|||
}
|
||||
}
|
||||
}
|
||||
val fastForwardTime = settingsManager.getInt(getString(R.string.fast_forward_button_time_key), 10)
|
||||
val fastForwardTime =
|
||||
settingsManager.getInt(getString(R.string.fast_forward_button_time_key), 10)
|
||||
exo_rew_text?.text = getString(R.string.rew_text_regular_format).format(fastForwardTime)
|
||||
exo_ffwd_text?.text = getString(R.string.ffw_text_regular_format).format(fastForwardTime)
|
||||
fun rewind() {
|
||||
|
@ -1551,7 +1628,8 @@ class PlayerFragment : Fragment() {
|
|||
|
||||
override fun onAnimationEnd(animation: Animation?) {
|
||||
exo_rew_text?.post {
|
||||
exo_rew_text?.text = getString(R.string.rew_text_regular_format).format(fastForwardTime)
|
||||
exo_rew_text?.text =
|
||||
getString(R.string.rew_text_regular_format).format(fastForwardTime)
|
||||
player_rew_holder?.alpha = if (isShowing) 1f else 0f
|
||||
}
|
||||
}
|
||||
|
@ -1578,7 +1656,8 @@ class PlayerFragment : Fragment() {
|
|||
|
||||
override fun onAnimationEnd(animation: Animation?) {
|
||||
exo_ffwd_text?.post {
|
||||
exo_ffwd_text?.text = getString(R.string.ffw_text_regular_format).format(fastForwardTime)
|
||||
exo_ffwd_text?.text =
|
||||
getString(R.string.ffw_text_regular_format).format(fastForwardTime)
|
||||
player_ffwd_holder?.alpha = if (isShowing) 1f else 0f
|
||||
}
|
||||
}
|
||||
|
@ -1704,21 +1783,22 @@ class PlayerFragment : Fragment() {
|
|||
if (isDownloadedFile) {
|
||||
if (!supportsDownloadedFiles) return null
|
||||
val list = ArrayList<SubtitleFile>()
|
||||
VideoDownloadManager.getFolder(this, uriData.relativePath, uriData.basePath)?.forEach { file ->
|
||||
val name = uriData.displayName.removeSuffix(".mp4")
|
||||
if (file.first != uriData.displayName && file.first.startsWith(name)) {
|
||||
val realName = file.first.removePrefix(name)
|
||||
.removeSuffix(".vtt")
|
||||
.removeSuffix(".srt")
|
||||
.removeSuffix(".txt")
|
||||
list.add(
|
||||
SubtitleFile(
|
||||
realName.ifBlank { getString(R.string.default_subtitles) },
|
||||
file.second.toString()
|
||||
VideoDownloadManager.getFolder(this, uriData.relativePath, uriData.basePath)
|
||||
?.forEach { file ->
|
||||
val name = uriData.displayName.removeSuffix(".mp4")
|
||||
if (file.first != uriData.displayName && file.first.startsWith(name)) {
|
||||
val realName = file.first.removePrefix(name)
|
||||
.removeSuffix(".vtt")
|
||||
.removeSuffix(".srt")
|
||||
.removeSuffix(".txt")
|
||||
list.add(
|
||||
SubtitleFile(
|
||||
realName.ifBlank { getString(R.string.default_subtitles) },
|
||||
file.second.toString()
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
return list
|
||||
} else {
|
||||
allEpisodesSubs[getEpisode()?.id]?.values?.toList()?.sortedBy { it.lang }
|
||||
|
@ -1965,7 +2045,9 @@ class PlayerFragment : Fragment() {
|
|||
exoPlayer.release()
|
||||
}
|
||||
val isOnline =
|
||||
currentUrl != null && (currentUrl.url.startsWith("https://") || currentUrl.url.startsWith("http://"))
|
||||
currentUrl != null && (currentUrl.url.startsWith("https://") || currentUrl.url.startsWith(
|
||||
"http://"
|
||||
))
|
||||
|
||||
if (settingsManager.getBoolean("ignore_ssl", true) && !isDownloadedFile) {
|
||||
// Disables ssl check
|
||||
|
@ -1998,24 +2080,25 @@ class PlayerFragment : Fragment() {
|
|||
}
|
||||
|
||||
val subs = context?.getSubs() ?: emptyList()
|
||||
val subItems = ArrayList<MediaItem.Subtitle>()
|
||||
val subItems = ArrayList<MediaItem.SubtitleConfiguration>()
|
||||
val subItemsId = ArrayList<String>()
|
||||
|
||||
for (sub in sortSubs(subs)) {
|
||||
val langId = sub.lang.trimEnd() //SubtitleHelper.fromLanguageToTwoLetters(it.lang) ?: it.lang
|
||||
val langId =
|
||||
sub.lang.trimEnd() //SubtitleHelper.fromLanguageToTwoLetters(it.lang) ?: it.lang
|
||||
subItemsId.add(langId)
|
||||
subItems.add(
|
||||
MediaItem.Subtitle(
|
||||
Uri.parse(sub.url),
|
||||
sub.url.toSubtitleMimeType(),
|
||||
"_$langId",
|
||||
C.SELECTION_FLAG_DEFAULT
|
||||
)
|
||||
MediaItem.SubtitleConfiguration.Builder(Uri.parse(sub.url))
|
||||
.setMimeType(sub.url.toSubtitleMimeType())
|
||||
.setLanguage("_$langId")
|
||||
.setSelectionFlags(C.SELECTION_FLAG_DEFAULT)
|
||||
.build()
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
activeSubtitles = subItemsId
|
||||
mediaItemBuilder.setSubtitles(subItems)
|
||||
mediaItemBuilder.setSubtitleConfigurations(subItems)
|
||||
|
||||
//might add https://github.com/ed828a/Aihua/blob/1896f46888b5a954b367e83f40b845ce174a2328/app/src/main/java/com/dew/aihua/player/playerUI/VideoPlayer.kt#L287 toggle caps
|
||||
|
||||
|
@ -2055,11 +2138,11 @@ class PlayerFragment : Fragment() {
|
|||
}
|
||||
|
||||
normalSafeApiCall {
|
||||
val databaseProvider = ExoDatabaseProvider(requireContext())
|
||||
simpleCache = SimpleCache(
|
||||
val databaseProvider = StandaloneDatabaseProvider(requireContext())
|
||||
simpleCache = simpleCache ?: SimpleCache(
|
||||
File(
|
||||
requireContext().filesDir, "exoplayer"
|
||||
),
|
||||
).also { it.deleteOnExit() }, // Ensures always fresh file
|
||||
LeastRecentlyUsedCacheEvictor(cacheSize),
|
||||
databaseProvider
|
||||
)
|
||||
|
@ -2071,7 +2154,7 @@ class PlayerFragment : Fragment() {
|
|||
}
|
||||
|
||||
val _exoPlayer =
|
||||
SimpleExoPlayer.Builder(requireContext())
|
||||
ExoPlayer.Builder(requireContext())
|
||||
.setTrackSelector(trackSelector)
|
||||
|
||||
exoPlayer = _exoPlayer.build().apply {
|
||||
|
@ -2105,7 +2188,8 @@ class PlayerFragment : Fragment() {
|
|||
// Sets the speed
|
||||
exoPlayer.playbackParameters = PlaybackParameters(playbackSpeed)
|
||||
playback_speed_btt?.text =
|
||||
getString(R.string.player_speed_text_format).format(playbackSpeed).replace(".0x", "x")
|
||||
getString(R.string.player_speed_text_format).format(playbackSpeed)
|
||||
.replace(".0x", "x")
|
||||
|
||||
var hName: String? = null
|
||||
var epEpisode: Int? = null
|
||||
|
@ -2311,7 +2395,10 @@ class PlayerFragment : Fragment() {
|
|||
var currentQuality = Qualities.values().last().value
|
||||
context?.let { ctx ->
|
||||
if (this::settingsManager.isInitialized)
|
||||
currentQuality = settingsManager.getInt(ctx.getString(R.string.watch_quality_pref), currentQuality)
|
||||
currentQuality = settingsManager.getInt(
|
||||
ctx.getString(R.string.watch_quality_pref),
|
||||
currentQuality
|
||||
)
|
||||
}
|
||||
|
||||
var currentId = sortedUrls.first().getId() // lowest quality
|
||||
|
@ -2358,7 +2445,11 @@ class PlayerFragment : Fragment() {
|
|||
}
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
return inflater.inflate(R.layout.fragment_player, container, false)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue