android - Android 没有在给定的 startSeconds 播放 YouTube 视频
问题描述
我已将 YouTube 视频嵌入到 Android 中的活动中。我正在使用这个库来做到这一点。视频加载正常,但问题是它有时无法在正确的秒数加载
当我调用loadVideo(videoId, 100f)
它时,它应该在第 100 秒(或 1:40)加载视频,有时视频可以正常加载,有时它会在 0:00 加载,这不是我想要的。我希望视频从 1:40 开始。
这导致的另一个问题是,一旦我旋转屏幕,onCreate()
就会再次调用,并且我正在currentSeconds
从 YouTube 播放器中检索 ,以便视频可以从停止的位置继续播放。我再次遇到同样的问题,有时视频通过恢复到当前秒数表现正确,或者从 0:00 重新开始。
我尝试loadVideo()
在 onResume 中调用,但无法正常工作。我怀疑它可能与生命周期有关。也许视频加载太慢或太快,我不知道。
我认为这个函数中发生了一些错误:
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")
}
}
解决方案
推荐阅读
- python - 获取一定范围内非零二进制掩码的坐标
- c# - 如何为 Kestrel 主机添加 NTLM 支持?
- php - php/MySQL count() 进行排名
- python - 如何修复'str'对象在pytorch中没有属性'seek'错误?
- python - 在 azure python 函数中导入自定义模块
- c++ - 调试 CURLOPT_POSTFIELDS 网址?
- r - 使用R将多个文本文件合并为一个
- c++ - 已解决:从后缀表达式 C++ 构建树
- java - 通过在控制台和 namedQuery 中执行查询得到不同的结果
- google-cloud-kms - 我可以通过密钥材料恢复导入的 HSM AES-256 密钥吗?