我尝试使用Jetpack Compose(1.0.0-alpha 06)通过AndroidView
使用ExoPlayer(2.18.7)。视频显示并正确播放,但我根本无法与它交互(D-pad,ok/select,什么都没有)。我试过使用FocusRequester
,但似乎没有工作。有什么想法吗
以下是我的VideoPlayer组合:
@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun VideoPlayer(mediaItem: VideoApi.MediaItem) {
val (playerFocus) = remember { FocusRequester.createRefs() }
val context = LocalContext.current
val exoPlayer = remember {
ExoPlayer.Builder(context)
.build()
.apply {
addMediaItem(
MediaItem.Builder()
.setUri(mediaItem.hlsCaptions)
.setMimeType(MimeTypes.APPLICATION_M3U8)
.build()
)
prepare()
playWhenReady = true
}
}
LaunchedEffect(Unit) {
playerFocus.requestFocus()
}
DisposableEffect(
AndroidView(
modifier = Modifier
.focusable(true)
.focusRequester(playerFocus),
factory = {
StyledPlayerView(context).apply {
player = exoPlayer
useController = true
controllerAutoShow = true
setShowBuffering(StyledPlayerView.SHOW_BUFFERING_ALWAYS)
}
}
)
) {
onDispose {
exoPlayer.release()
}
}
}
1条答案
按热度按时间5f0d552i1#
显然,关键事件需要转发给玩家。看这里