我正在使用ExoPlayer
2.7.1。我必须在一定的时间间隔内展示广告。这些间隔是以毫秒为单位的长整数。如何在ExoPlayer控制器中显示广告标记?
答案 0 :(得分:0)
要集成您自己的广告解决方案,我一般建议您查看ExoPlayer库的AdsMediaSource和AdsLoader,它们提供了将广告很好地集成到内容媒体源的方法。通过这种方式,播放器可以识别广告播放,并确保无法跳过广告,显示标记等。
AdsMediaSource用于实现ExoPlayer的IMA extension,但您可以利用这些来解决问题。
回答有关广告标记的具体问题:
PlayerControlView
有一种方法可让您设置广告标记位置和布局,以指明广告是否已展示:
playerControlView.setExtraAdGroupMarkers(
new long[]{10 * 1000, 120 * 1000},
new boolean[]{false, false});
但是,如果您使用的是开箱即用的PlayerView,则可以通过编程方式访问由播放器视图插入的PlaybackControlView。因此你不能使用findById而且PlayerView不会为我担心的控制器提供一个getter。
因此,如果您使用的是PlayerView,我看到的唯一方法是提供您自己的布局文件exo_player_view.xml,您可以在其中设置自定义控制器:
在项目中创建文件res / layout / exo_player_view.xml,并将layout file from here复制到其中。
在此布局文件中搜索id为exo_controller_placeholder的视图元素。将其替换为此元素:
<com.google.android.exoplayer2.ui.PlayerControlView android:id="@id/exo_controller"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
在onCreate中查找播放器控件视图:
playerControlView = findViewById(R.id.exo_controller);
每当您想要更新您调用的标记时:
playerControlView.setExtraAdGroupMarkers(
new long[]{10 * 1000, 120 * 1000},
new boolean[]{true, false});
第二个参数让您标记广告。