Migrate the demo app to use non-deprecated MediaItem Builders
#minor-release PiperOrigin-RevId: 407843859
This commit is contained in:
parent
028bb2341a
commit
ed63fee21c
@ -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()
|
||||||
|
.setStartPositionMs(
|
||||||
intent.getLongExtra(CLIP_START_POSITION_MS_EXTRA + extrasKeySuffix, 0))
|
intent.getLongExtra(CLIP_START_POSITION_MS_EXTRA + extrasKeySuffix, 0))
|
||||||
.setClipEndPositionMs(
|
.setEndPositionMs(
|
||||||
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))
|
||||||
|
.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(
|
||||||
|
@ -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()));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user