my-tv/app/src/main/java/com/lizongying/mytv/PlaybackFragment.kt

66 lines
1.9 KiB
Kotlin
Raw Normal View History

2023-12-04 19:36:29 +08:00
package com.lizongying.mytv
import android.net.Uri
import android.os.Bundle
import android.util.Log
import androidx.leanback.app.VideoSupportFragment
import androidx.leanback.app.VideoSupportFragmentGlueHost
2023-12-15 15:41:59 +08:00
import androidx.leanback.media.PlayerAdapter
2023-12-04 19:36:29 +08:00
import androidx.leanback.media.PlaybackTransportControlGlue
import androidx.leanback.widget.PlaybackControlsRow
import java.io.IOException
class PlaybackFragment : VideoSupportFragment() {
2023-12-15 15:41:59 +08:00
private lateinit var mTransportControlGlue: PlaybackTransportControlGlue<PlayerAdapter>
2023-12-15 18:12:11 +08:00
private var playerAdapter: ExoPlayerAdapter? = null
2023-12-04 19:36:29 +08:00
private var lastVideoUrl: String = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
2023-12-15 18:12:11 +08:00
playerAdapter = ExoPlayerAdapter(context)
2023-12-04 19:36:29 +08:00
playerAdapter?.setRepeatAction(PlaybackControlsRow.RepeatAction.INDEX_NONE)
view?.isFocusable = false
view?.isFocusableInTouchMode = false
}
override fun showControlsOverlay(runAnimation: Boolean) {
}
fun play(tv: TV) {
2023-12-06 23:51:17 +08:00
val videoUrl = tv.videoUrl[tv.videoIndex]
2023-12-04 19:36:29 +08:00
2023-12-07 11:19:22 +08:00
if (videoUrl == "") {
2023-12-15 13:04:32 +08:00
Log.e(TAG, "tv $tv")
2023-12-07 11:19:22 +08:00
Log.e(TAG, "videoUrl is empty")
return
}
2023-12-06 23:51:17 +08:00
if (videoUrl == lastVideoUrl) {
2023-12-04 19:36:29 +08:00
Log.e(TAG, "videoUrl is duplication")
return
}
2023-12-06 23:51:17 +08:00
lastVideoUrl = videoUrl
2023-12-04 19:36:29 +08:00
playerAdapter?.reset()
val glueHost = VideoSupportFragmentGlueHost(this@PlaybackFragment)
mTransportControlGlue = PlaybackControlGlue(activity, playerAdapter)
mTransportControlGlue.host = glueHost
mTransportControlGlue.playWhenPrepared()
try {
2023-12-06 23:51:17 +08:00
playerAdapter?.setDataSource(Uri.parse(videoUrl))
2023-12-04 19:36:29 +08:00
} catch (e: IOException) {
return
}
hideControlsOverlay(false)
}
companion object {
private const val TAG = "PlaybackVideoFragment"
}
}