Use the new MediaItem.Builder#setAdsConfiguration method

PiperOrigin-RevId: 398185843
This commit is contained in:
ibaker 2021-09-22 10:00:53 +01:00 committed by bachinger
parent c927bc8358
commit a194d73c75
5 changed files with 40 additions and 12 deletions

View File

@ -117,18 +117,22 @@ public class IntentUtil {
Uri uri, Intent intent, String extrasKeySuffix) { Uri uri, Intent intent, String extrasKeySuffix) {
@Nullable String mimeType = intent.getStringExtra(MIME_TYPE_EXTRA + extrasKeySuffix); @Nullable String mimeType = intent.getStringExtra(MIME_TYPE_EXTRA + extrasKeySuffix);
@Nullable String title = intent.getStringExtra(TITLE_EXTRA + extrasKeySuffix); @Nullable String title = intent.getStringExtra(TITLE_EXTRA + extrasKeySuffix);
@Nullable String adTagUri = intent.getStringExtra(AD_TAG_URI_EXTRA + extrasKeySuffix);
MediaItem.Builder builder = MediaItem.Builder builder =
new MediaItem.Builder() new MediaItem.Builder()
.setUri(uri) .setUri(uri)
.setMimeType(mimeType) .setMimeType(mimeType)
.setMediaMetadata(new MediaMetadata.Builder().setTitle(title).build()) .setMediaMetadata(new MediaMetadata.Builder().setTitle(title).build())
.setAdTagUri(intent.getStringExtra(AD_TAG_URI_EXTRA + extrasKeySuffix))
.setSubtitles(createSubtitlesFromIntent(intent, extrasKeySuffix)) .setSubtitles(createSubtitlesFromIntent(intent, extrasKeySuffix))
.setClipStartPositionMs( .setClipStartPositionMs(
intent.getLongExtra(CLIP_START_POSITION_MS_EXTRA + extrasKeySuffix, 0)) intent.getLongExtra(CLIP_START_POSITION_MS_EXTRA + extrasKeySuffix, 0))
.setClipEndPositionMs( .setClipEndPositionMs(
intent.getLongExtra( intent.getLongExtra(
CLIP_END_POSITION_MS_EXTRA + extrasKeySuffix, C.TIME_END_OF_SOURCE)); CLIP_END_POSITION_MS_EXTRA + extrasKeySuffix, C.TIME_END_OF_SOURCE));
if (adTagUri != null) {
builder.setAdsConfiguration(
new MediaItem.AdsConfiguration.Builder(Uri.parse(adTagUri)).build());
}
return populateDrmPropertiesFromIntent(builder, intent, extrasKeySuffix).build(); return populateDrmPropertiesFromIntent(builder, intent, extrasKeySuffix).build();
} }

View File

@ -373,7 +373,8 @@ public class SampleChooserActivity extends AppCompatActivity
mediaItem.setClipEndPositionMs(reader.nextLong()); mediaItem.setClipEndPositionMs(reader.nextLong());
break; break;
case "ad_tag_uri": case "ad_tag_uri":
mediaItem.setAdTagUri(reader.nextString()); mediaItem.setAdsConfiguration(
new MediaItem.AdsConfiguration.Builder(Uri.parse(reader.nextString())).build());
break; break;
case "drm_scheme": case "drm_scheme":
drmUuid = Util.getDrmUuid(reader.nextString()); drmUuid = Util.getDrmUuid(reader.nextString());

View File

@ -36,7 +36,11 @@ An ad tag URI can be specified when building a `MediaItem`:
~~~ ~~~
MediaItem mediaItem = MediaItem mediaItem =
new MediaItem.Builder().setUri(videoUri).setAdTagUri(adTagUri).build(); new MediaItem.Builder()
.setUri(videoUri)
.setAdsConfiguration(
new MediaItem.AdsConfiguration.Builder(adTagUri).build())
.build();
~~~ ~~~
{: .language-java} {: .language-java}
@ -88,12 +92,18 @@ playlist from start to finish.
MediaItem firstItem = MediaItem firstItem =
new MediaItem.Builder() new MediaItem.Builder()
.setUri(firstVideoUri) .setUri(firstVideoUri)
.setAdTagUri(adTagUri, /* adsId= */ adTagUri) .setAdsConfiguration(
new MediaItem.AdsConfiguration.Builder(adTagUri)
.setAdsId(adTagUri)
.build())
.build(); .build();
MediaItem secondItem = MediaItem secondItem =
new MediaItem.Builder() new MediaItem.Builder()
.setUri(secondVideoUri) .setUri(secondVideoUri)
.setAdTagUri(adTagUri, /* adsId= */ adTagUri) .setAdsConfiguration(
new MediaItem.AdsConfiguration.Builder(adTagUri)
.setAdsId(adTagUri)
.build())
.build(); .build();
player.addMediaItem(firstItem); player.addMediaItem(firstItem);
player.addMediaItem(secondItem); player.addMediaItem(secondItem);

View File

@ -137,7 +137,8 @@ To insert ads, a media item's ad tag URI property should be set:
~~~ ~~~
MediaItem mediaItem = new MediaItem.Builder() MediaItem mediaItem = new MediaItem.Builder()
.setUri(videoUri) .setUri(videoUri)
.setAdTagUri(adTagUri) .setAdsConfiguration(
new MediaItem.AdsConfiguration.Builder(adTagUri).build())
.build(); .build();
~~~ ~~~
{: .language-java} {: .language-java}

View File

@ -166,9 +166,13 @@ public final class DefaultMediaSourceFactoryTest {
} }
@Test @Test
public void createMediaSource_withAdTagUri_callsAdsLoader() { public void createMediaSource_withAdsConfiguration_callsAdsLoader() {
Uri adTagUri = Uri.parse(URI_MEDIA); Uri adTagUri = Uri.parse(URI_MEDIA);
MediaItem mediaItem = new MediaItem.Builder().setUri(URI_MEDIA).setAdTagUri(adTagUri).build(); MediaItem mediaItem =
new MediaItem.Builder()
.setUri(URI_MEDIA)
.setAdsConfiguration(new MediaItem.AdsConfiguration.Builder(adTagUri).build())
.build();
DefaultMediaSourceFactory defaultMediaSourceFactory = DefaultMediaSourceFactory defaultMediaSourceFactory =
new DefaultMediaSourceFactory((Context) ApplicationProvider.getApplicationContext()) new DefaultMediaSourceFactory((Context) ApplicationProvider.getApplicationContext())
.setAdsLoaderProvider(ignoredAdsConfiguration -> mock(AdsLoader.class)) .setAdsLoaderProvider(ignoredAdsConfiguration -> mock(AdsLoader.class))
@ -180,9 +184,13 @@ public final class DefaultMediaSourceFactoryTest {
} }
@Test @Test
public void createMediaSource_withAdTagUri_adProvidersNotSet_playsWithoutAdNoException() { public void createMediaSource_withAdsConfiguration_adProvidersNotSet_playsWithoutAdNoException() {
MediaItem mediaItem = MediaItem mediaItem =
new MediaItem.Builder().setUri(URI_MEDIA).setAdTagUri(Uri.parse(URI_MEDIA)).build(); new MediaItem.Builder()
.setUri(URI_MEDIA)
.setAdsConfiguration(
new MediaItem.AdsConfiguration.Builder(Uri.parse(URI_MEDIA)).build())
.build();
DefaultMediaSourceFactory defaultMediaSourceFactory = DefaultMediaSourceFactory defaultMediaSourceFactory =
new DefaultMediaSourceFactory((Context) ApplicationProvider.getApplicationContext()); new DefaultMediaSourceFactory((Context) ApplicationProvider.getApplicationContext());
@ -192,10 +200,14 @@ public final class DefaultMediaSourceFactoryTest {
} }
@Test @Test
public void createMediaSource_withAdTagUriProvidersNull_playsWithoutAdNoException() { public void createMediaSource_withAdsConfigurationProvidersNull_playsWithoutAdNoException() {
Context applicationContext = ApplicationProvider.getApplicationContext(); Context applicationContext = ApplicationProvider.getApplicationContext();
MediaItem mediaItem = MediaItem mediaItem =
new MediaItem.Builder().setUri(URI_MEDIA).setAdTagUri(Uri.parse(URI_MEDIA)).build(); new MediaItem.Builder()
.setUri(URI_MEDIA)
.setAdsConfiguration(
new MediaItem.AdsConfiguration.Builder(Uri.parse(URI_MEDIA)).build())
.build();
MediaSource mediaSource = MediaSource mediaSource =
new DefaultMediaSourceFactory(applicationContext).createMediaSource(mediaItem); new DefaultMediaSourceFactory(applicationContext).createMediaSource(mediaItem);