bug fixes

This commit is contained in:
Bnyro 2022-08-12 15:06:32 +02:00
parent 16d2e5144b
commit 30cec4ab7c

View File

@ -416,7 +416,10 @@ class PlayerFragment : BaseFragment() {
} }
override fun onCaptionClicked() { override fun onCaptionClicked() {
if (streams.subtitles == null || streams.subtitles!!.isEmpty()) { if (!this@PlayerFragment::streams.isInitialized ||
streams.subtitles == null ||
streams.subtitles!!.isEmpty()
) {
Toast.makeText(context, R.string.no_subtitles_available, Toast.LENGTH_SHORT).show() Toast.makeText(context, R.string.no_subtitles_available, Toast.LENGTH_SHORT).show()
return return
} }
@ -460,7 +463,7 @@ class PlayerFragment : BaseFragment() {
override fun onQualityClicked() { override fun onQualityClicked() {
// get the available resolutions // get the available resolutions
val (videosNameArray, videosUrlArray) = getAvailableResolutions(streams) val (videosNameArray, videosUrlArray) = getAvailableResolutions()
// Dialog for quality selection // Dialog for quality selection
val lastPosition = exoPlayer.currentPosition val lastPosition = exoPlayer.currentPosition
@ -827,7 +830,7 @@ class PlayerFragment : BaseFragment() {
runOnUiThread { runOnUiThread {
// set media sources for the player // set media sources for the player
setResolutionAndSubtitles(streams) setResolutionAndSubtitles()
prepareExoPlayerView() prepareExoPlayerView()
initializePlayerView(streams) initializePlayerView(streams)
if (!isLive) seekToWatchPosition() if (!isLive) seekToWatchPosition()
@ -1321,14 +1324,16 @@ class PlayerFragment : BaseFragment() {
exoPlayer.setMediaSource(mergeSource) exoPlayer.setMediaSource(mergeSource)
} }
private fun getAvailableResolutions(streams: Streams): Pair<Array<String>, Array<Uri>> { private fun getAvailableResolutions(): Pair<Array<String>, Array<Uri>> {
if (!this::streams.isInitialized) return Pair(arrayOf(), arrayOf())
var videosNameArray: Array<String> = arrayOf() var videosNameArray: Array<String> = arrayOf()
var videosUrlArray: Array<Uri> = arrayOf() var videosUrlArray: Array<Uri> = arrayOf()
// append hls to list if available // append hls to list if available
if (streams.hls != null) { if (streams.hls != null) {
videosNameArray += getString(R.string.hls) videosNameArray += getString(R.string.hls)
videosUrlArray += streams.hls.toUri() videosUrlArray += streams.hls!!.toUri()
} }
for (vid in streams.videoStreams!!) { for (vid in streams.videoStreams!!) {
@ -1345,15 +1350,15 @@ class PlayerFragment : BaseFragment() {
return Pair(videosNameArray, videosUrlArray) return Pair(videosNameArray, videosUrlArray)
} }
private fun setResolutionAndSubtitles(response: Streams) { private fun setResolutionAndSubtitles() {
// get the available resolutions // get the available resolutions
val (videosNameArray, videosUrlArray) = getAvailableResolutions(response) val (videosNameArray, videosUrlArray) = getAvailableResolutions()
// create a list of subtitles // create a list of subtitles
subtitle = mutableListOf() subtitle = mutableListOf()
val subtitlesNamesList = mutableListOf(context?.getString(R.string.none)!!) val subtitlesNamesList = mutableListOf(context?.getString(R.string.none)!!)
val subtitleCodesList = mutableListOf("") val subtitleCodesList = mutableListOf("")
response.subtitles!!.forEach { streams.subtitles!!.forEach {
subtitle.add( subtitle.add(
SubtitleConfiguration.Builder(it.url!!.toUri()) SubtitleConfiguration.Builder(it.url!!.toUri())
.setMimeType(it.mimeType!!) // The correct MIME type (required). .setMimeType(it.mimeType!!) // The correct MIME type (required).
@ -1374,7 +1379,7 @@ class PlayerFragment : BaseFragment() {
// set media source and resolution in the beginning // set media source and resolution in the beginning
setStreamSource( setStreamSource(
response, streams,
videosNameArray, videosNameArray,
videosUrlArray videosUrlArray
) )