如何在ExoPlayer中显示广告标记?

时间:2018-03-16 06:40:48

标签: android exoplayer exoplayer2.x

我正在使用ExoPlayer 2.7.1。我必须在一定的时间间隔内展示广告。这些间隔是以毫秒为单位的长整数。如何在ExoPlayer控制器中显示广告标记?

1 个答案:

答案 0 :(得分:0)

要集成您自己的广告解决方案,我一般建议您查看ExoPlayer库的AdsMediaSourceAdsLoader,它们提供了将广告很好地集成到内容媒体源的方法。通过这种方式,播放器可以识别广告播放,并确保无法跳过广告,显示标记等。

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,您可以在其中设置自定义控制器:

  1. 在项目中创建文件res / layout / exo_player_view.xml,并将layout file from here复制到其中。

  2. 在此布局文件中搜索id为exo_controller_placeholder的视图元素。将其替换为此元素:

  3. <com.google.android.exoplayer2.ui.PlayerControlView android:id="@id/exo_controller"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>
    1. 在onCreate中查找播放器控件视图:

      playerControlView = findViewById(R.id.exo_controller);

    2. 每当您想要更新您调用的标记时:

      playerControlView.setExtraAdGroupMarkers( new long[]{10 * 1000, 120 * 1000}, new boolean[]{true, false});

    3. 第二个参数让您标记广告。