Migrate the demo app to use non-deprecated MediaItem Builders

#minor-release

PiperOrigin-RevId: 407843859
This commit is contained in:
ibaker 2021-11-05 16:46:46 +00:00 committed by tonihei
parent 028bb2341a
commit ed63fee21c
2 changed files with 44 additions and 25 deletions

View File

@ -23,11 +23,13 @@ import android.net.Uri;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.MediaItem.ClippingConfiguration;
import com.google.android.exoplayer2.MediaItem.SubtitleConfiguration;
import com.google.android.exoplayer2.MediaMetadata; import com.google.android.exoplayer2.MediaMetadata;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -118,36 +120,46 @@ public class IntentUtil {
@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); @Nullable String adTagUri = intent.getStringExtra(AD_TAG_URI_EXTRA + extrasKeySuffix);
@Nullable
SubtitleConfiguration subtitleConfiguration =
createSubtitleConfiguration(intent, 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())
.setSubtitles(createSubtitlesFromIntent(intent, extrasKeySuffix)) .setClippingConfiguration(
.setClipStartPositionMs( new ClippingConfiguration.Builder()
intent.getLongExtra(CLIP_START_POSITION_MS_EXTRA + extrasKeySuffix, 0)) .setStartPositionMs(
.setClipEndPositionMs( intent.getLongExtra(CLIP_START_POSITION_MS_EXTRA + extrasKeySuffix, 0))
intent.getLongExtra( .setEndPositionMs(
CLIP_END_POSITION_MS_EXTRA + extrasKeySuffix, C.TIME_END_OF_SOURCE)); intent.getLongExtra(
CLIP_END_POSITION_MS_EXTRA + extrasKeySuffix, C.TIME_END_OF_SOURCE))
.build());
if (adTagUri != null) { if (adTagUri != null) {
builder.setAdsConfiguration( builder.setAdsConfiguration(
new MediaItem.AdsConfiguration.Builder(Uri.parse(adTagUri)).build()); new MediaItem.AdsConfiguration.Builder(Uri.parse(adTagUri)).build());
} }
if (subtitleConfiguration != null) {
builder.setSubtitleConfigurations(ImmutableList.of(subtitleConfiguration));
}
return populateDrmPropertiesFromIntent(builder, intent, extrasKeySuffix).build(); return populateDrmPropertiesFromIntent(builder, intent, extrasKeySuffix).build();
} }
private static List<MediaItem.Subtitle> createSubtitlesFromIntent( @Nullable
private static MediaItem.SubtitleConfiguration createSubtitleConfiguration(
Intent intent, String extrasKeySuffix) { Intent intent, String extrasKeySuffix) {
if (!intent.hasExtra(SUBTITLE_URI_EXTRA + extrasKeySuffix)) { if (!intent.hasExtra(SUBTITLE_URI_EXTRA + extrasKeySuffix)) {
return Collections.emptyList(); return null;
} }
return Collections.singletonList( return new MediaItem.SubtitleConfiguration.Builder(
new MediaItem.Subtitle( Uri.parse(intent.getStringExtra(SUBTITLE_URI_EXTRA + extrasKeySuffix)))
Uri.parse(intent.getStringExtra(SUBTITLE_URI_EXTRA + extrasKeySuffix)), .setMimeType(
checkNotNull(intent.getStringExtra(SUBTITLE_MIME_TYPE_EXTRA + extrasKeySuffix)), checkNotNull(intent.getStringExtra(SUBTITLE_MIME_TYPE_EXTRA + extrasKeySuffix)))
intent.getStringExtra(SUBTITLE_LANGUAGE_EXTRA + extrasKeySuffix), .setLanguage(intent.getStringExtra(SUBTITLE_LANGUAGE_EXTRA + extrasKeySuffix))
C.SELECTION_FLAG_DEFAULT)); .setSelectionFlags(C.SELECTION_FLAG_DEFAULT)
.build();
} }
private static MediaItem.Builder populateDrmPropertiesFromIntent( private static MediaItem.Builder populateDrmPropertiesFromIntent(

View File

@ -43,6 +43,7 @@ import android.widget.Toast;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.MediaItem.ClippingConfiguration;
import com.google.android.exoplayer2.MediaMetadata; import com.google.android.exoplayer2.MediaMetadata;
import com.google.android.exoplayer2.ParserException; import com.google.android.exoplayer2.ParserException;
import com.google.android.exoplayer2.RenderersFactory; import com.google.android.exoplayer2.RenderersFactory;
@ -53,6 +54,7 @@ import com.google.android.exoplayer2.upstream.DataSourceUtil;
import com.google.android.exoplayer2.upstream.DataSpec; import com.google.android.exoplayer2.upstream.DataSpec;
import com.google.android.exoplayer2.util.Log; import com.google.android.exoplayer2.util.Log;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -351,6 +353,8 @@ public class SampleChooserActivity extends AppCompatActivity
boolean drmSessionForClearContent = false; boolean drmSessionForClearContent = false;
boolean drmMultiSession = false; boolean drmMultiSession = false;
boolean drmForceDefaultLicenseUri = false; boolean drmForceDefaultLicenseUri = false;
MediaItem.ClippingConfiguration.Builder clippingConfiguration =
new ClippingConfiguration.Builder();
MediaItem.Builder mediaItem = new MediaItem.Builder(); MediaItem.Builder mediaItem = new MediaItem.Builder();
reader.beginObject(); reader.beginObject();
@ -367,10 +371,10 @@ public class SampleChooserActivity extends AppCompatActivity
extension = reader.nextString(); extension = reader.nextString();
break; break;
case "clip_start_position_ms": case "clip_start_position_ms":
mediaItem.setClipStartPositionMs(reader.nextLong()); clippingConfiguration.setStartPositionMs(reader.nextLong());
break; break;
case "clip_end_position_ms": case "clip_end_position_ms":
mediaItem.setClipEndPositionMs(reader.nextLong()); clippingConfiguration.setEndPositionMs(reader.nextLong());
break; break;
case "ad_tag_uri": case "ad_tag_uri":
mediaItem.setAdsConfiguration( mediaItem.setAdsConfiguration(
@ -439,7 +443,8 @@ public class SampleChooserActivity extends AppCompatActivity
mediaItem mediaItem
.setUri(uri) .setUri(uri)
.setMediaMetadata(new MediaMetadata.Builder().setTitle(title).build()) .setMediaMetadata(new MediaMetadata.Builder().setTitle(title).build())
.setMimeType(adaptiveMimeType); .setMimeType(adaptiveMimeType)
.setClippingConfiguration(clippingConfiguration.build());
if (drmUuid != null) { if (drmUuid != null) {
mediaItem.setDrmConfiguration( mediaItem.setDrmConfiguration(
new MediaItem.DrmConfiguration.Builder(drmUuid) new MediaItem.DrmConfiguration.Builder(drmUuid)
@ -463,13 +468,15 @@ public class SampleChooserActivity extends AppCompatActivity
"drm_uuid is required if drm_force_default_license_uri is set."); "drm_uuid is required if drm_force_default_license_uri is set.");
} }
if (subtitleUri != null) { if (subtitleUri != null) {
MediaItem.Subtitle subtitle = MediaItem.SubtitleConfiguration subtitleConfiguration =
new MediaItem.Subtitle( new MediaItem.SubtitleConfiguration.Builder(subtitleUri)
subtitleUri, .setMimeType(
checkNotNull( checkNotNull(
subtitleMimeType, "subtitle_mime_type is required if subtitle_uri is set."), subtitleMimeType,
subtitleLanguage); "subtitle_mime_type is required if subtitle_uri is set."))
mediaItem.setSubtitles(Collections.singletonList(subtitle)); .setLanguage(subtitleLanguage)
.build();
mediaItem.setSubtitleConfigurations(ImmutableList.of(subtitleConfiguration));
} }
return new PlaylistHolder(title, Collections.singletonList(mediaItem.build())); return new PlaylistHolder(title, Collections.singletonList(mediaItem.build()));
} }