如何解决Android 未在给定的 startSeconds
我已将 YouTube 视频嵌入到 Android 中的一项活动中。我正在使用 this library 来做到这一点。视频加载正常,但问题是它有时无法在正确的秒数加载
当我调用 loadVideo(videoId,100f)
时,它应该在第 100 秒(或 1:40)加载视频,有时视频可以正常加载,有时它会在 0:00 加载,这不是我想要的。我希望视频从 1:40 开始。
这导致的另一个问题是,一旦我旋转屏幕,就会再次调用 onCreate()
,并且我正在从 YouTube 播放器中检索 currentSeconds
,以便视频可以从它离开的地方继续播放离开。我再次遇到同样的问题,有时视频通过恢复到当前秒来正确运行,或者从 0:00 重新开始。
我试过在 onResume 中调用 loadVideo()
,但无法正常工作。我怀疑这可能与生命周期有关。也许视频加载太慢或太快,我不知道。
youTubePlayerView.addYouTubePlayerListener(object : AbstractYouTubePlayerListener() {
override fun onReady(youTubePlayer: YouTubePlayer) {
youTubePlayer.loadVideo(videoId,startSeconds)
youTubePlayerView.enableBackgroundplayback(true)
youTubePlayer.addListener(tracker)
}
})
这是我的活动
class MainActivity : AppCompatActivity(),LifecycleObserver {
private lateinit var youTubePlayerView: YouTubePlayerView
private lateinit var observer: YouTubeObserver
private lateinit var tracker: YouTubePlayerTracker
private var startSeconds: Float = 100f
private val videoId = "gVGRIBWy6ig"
// Keys
private val KEY_CURRENT_SECONDS = "KEY_CURRENT_SECONDS"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Timber.i("onCreate called")
if (savedInstanceState != null) {
startSeconds = savedInstanceState.getFloat(KEY_CURRENT_SECONDS)
}
youTubePlayerView = findViewById(R.id.youTubePlayerView)
observer = YouTubeObserver(this.lifecycle,youTubePlayerView)
tracker = YouTubePlayerTracker()
youTubePlayerView.addYouTubePlayerListener(object : AbstractYouTubePlayerListener() {
override fun onReady(youTubePlayer: YouTubePlayer) {
youTubePlayer.loadVideo(videoId,startSeconds)
youTubePlayerView.enableBackgroundplayback(true)
youTubePlayer.addListener(tracker)
}
})
Timber.i(tracker.currentSecond.toString())
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putFloat(KEY_CURRENT_SECONDS,tracker.currentSecond)
Timber.i("onSave called")
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。