android 无法与ExoPlayer交互,可能的焦点问题?

lawou6xi  于 2023-06-20  发布在  Android
关注(0)|答案(1)|浏览(143)

我尝试使用Jetpack Compose(1.0.0-alpha 06)通过AndroidView使用ExoPlayer(2.18.7)。视频显示并正确播放,但我根本无法与它交互(D-pad,ok/select,什么都没有)。我试过使用FocusRequester,但似乎没有工作。有什么想法吗
以下是我的VideoPlayer组合:

  1. @OptIn(ExperimentalComposeUiApi::class)
  2. @Composable
  3. fun VideoPlayer(mediaItem: VideoApi.MediaItem) {
  4. val (playerFocus) = remember { FocusRequester.createRefs() }
  5. val context = LocalContext.current
  6. val exoPlayer = remember {
  7. ExoPlayer.Builder(context)
  8. .build()
  9. .apply {
  10. addMediaItem(
  11. MediaItem.Builder()
  12. .setUri(mediaItem.hlsCaptions)
  13. .setMimeType(MimeTypes.APPLICATION_M3U8)
  14. .build()
  15. )
  16. prepare()
  17. playWhenReady = true
  18. }
  19. }
  20. LaunchedEffect(Unit) {
  21. playerFocus.requestFocus()
  22. }
  23. DisposableEffect(
  24. AndroidView(
  25. modifier = Modifier
  26. .focusable(true)
  27. .focusRequester(playerFocus),
  28. factory = {
  29. StyledPlayerView(context).apply {
  30. player = exoPlayer
  31. useController = true
  32. controllerAutoShow = true
  33. setShowBuffering(StyledPlayerView.SHOW_BUFFERING_ALWAYS)
  34. }
  35. }
  36. )
  37. ) {
  38. onDispose {
  39. exoPlayer.release()
  40. }
  41. }
  42. }
5f0d552i

5f0d552i1#

显然,关键事件需要转发给玩家。看这里

相关问题