[使用Leanback和exoplayer实现firetv应用程序时,我使用了exoplayer提供的LeanbackPlayerAdapter
。我还使用了VideoMediaPlayerGlue
来扩展PlaybackTransportControlGlue
。与此相同:https://github.com/android/tv-samples/blob/master/LeanbackShowcase/app/src/main/java/androidx/leanback/leanbackshowcase/app/media/VideoMediaPlayerGlue.java。以下是我用来初始化所有内容的代码。现在由于某种奇怪的原因,开始播放,并且所有firetv控件都可以在遥控器上工作。但是,控件叠加层无处可见。我想说明的另一点是,当您向下按D-pad时,您可以听到firetv滴答声,因此我有理由相信控件处于活动状态,但位于视频表面后面。例如,如果我在光标位于“喜欢”或“不喜欢”按钮上时单击,它会在屏幕上显示一个“喜欢或不喜欢”的吐司。
LeanbackPlayerAdapter playerAdapter = new LeanbackPlayerAdapter(context, player, 16);
playerAdapter.setPlaybackPreparer(this);
playerAdapter.setControlDispatcher(null);
playerAdapter.setCallback(null);
mMediaPlayerGlue = new VideoMediaPlayerGlue((Activity) context, playerAdapter);
mMediaPlayerGlue.setHost(mGlue);
mMediaPlayerGlue.setTitle("title");
mMediaPlayerGlue.setSubtitle("subtitle");
player.prepare(mediaSource, !haveStartPosition, false);
playWhenReady(mMediaPlayerGlue);
在我的活动xml视图中,我偶然有exo播放器视图,因此我摆脱了它们。现在的“播放活动”视图如下所示:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android ="http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
tools:context = "com.example.firetv.PlaybackActivity">
<FrameLayout
android:id = "@+id/fragmentContainer"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
/>