微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android 未在给定的 startSeconds

如何解决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 举报,一经查实,本站将立刻删除。