首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jetpack撰写:无法使用Youtube API

Jetpack撰写:无法使用Youtube API
EN

Stack Overflow用户
提问于 2021-09-27 12:22:23
回答 1查看 1.1K关注 0票数 4

我研究了一天,但没有得到任何有关youtube API与jetpack撰写。是否可以在jetpack上使用它,或者是否有其他方式来播放youtube视频和jetpack撰写?请帮帮我

EN

回答 1

Stack Overflow用户

发布于 2021-12-20 13:44:24

的确是个棘手的问题。

您不能使用YouTubeBaseActivity,意味着您不能使用YouTubePlayerView。此视图仅在一种活动类型内创建,而不是为您的片段/组合体系结构创建的。

您不能使用YouTubePlayerFragment,因为它的父源来自android.app包,这是不推荐的,您将无法在您的幻想的撰写活动中获得旧的fragmentManager。

您可以而且必须将YouTubePlayerSupportFragment与androidx.fragment.app.FragmentManager(这是androidx.fragment.app.FragmentManager的实例)一起使用。

下面的代码在我这边很好,试一试:

代码语言:javascript
复制
@Composable
fun ComposeYoutube(
    modifier: Modifier,
    playList: List<String>,
    supportFragmentManager: FragmentManager,
    onError: (String) -> Unit
) {

    AndroidView(
        modifier = modifier,
        factory = {
            var player: YouTubePlayer? = null

            val onPlaylistChangeListener = object : YouTubePlayer.PlaylistEventListener {
                override fun onPlaylistEnded() {}
                override fun onPrevious() {}
                override fun onNext() {}
            }


            val youtubeApiInitializedListener = object : YouTubePlayer.OnInitializedListener {
                override fun onInitializationSuccess(p0: YouTubePlayer.Provider?, p1: YouTubePlayer?, p2: Boolean) {
                    player = p1
                    player?.setPlaylistEventListener(onPlaylistChangeListener)
                    player?.loadVideos(playList)
                }

                override fun onInitializationFailure(p0: YouTubePlayer.Provider?, p1: YouTubeInitializationResult?) {
                    onError("TODO")
                }
            }

            FrameLayout(it).apply {
                // select any R.id.X from your project, it does not matter what it is, but container must have one for transaction below.
                id = R.id.tv_id

                val youtubeView = YouTubePlayerSupportFragment()

                supportFragmentManager
                    .beginTransaction()
                    .add(
                        R.id.tv_id,
                        youtubeView,
                        null
                    )
                    .commit()

                youtubeView.initialize(BuildConfig.youtubeApi, youtubeApiInitializedListener)
            }
        },
        update = { }
    )
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69346527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档