我研究了一天,但没有得到任何有关youtube API与jetpack撰写。是否可以在jetpack上使用它,或者是否有其他方式来播放youtube视频和jetpack撰写?请帮帮我
发布于 2021-12-20 13:44:24
的确是个棘手的问题。
您不能使用YouTubeBaseActivity,意味着您不能使用YouTubePlayerView。此视图仅在一种活动类型内创建,而不是为您的片段/组合体系结构创建的。
您不能使用YouTubePlayerFragment,因为它的父源来自android.app包,这是不推荐的,您将无法在您的幻想的撰写活动中获得旧的fragmentManager。
您可以而且必须将YouTubePlayerSupportFragment与androidx.fragment.app.FragmentManager(这是androidx.fragment.app.FragmentManager的实例)一起使用。
下面的代码在我这边很好,试一试:
@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 = { }
)
}https://stackoverflow.com/questions/69346527
复制相似问题