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 Ian Baker
parent 088f4c5d08
commit 1f1b12751a
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.media3.common.C;
import androidx.media3.common.MediaItem;
import androidx.media3.common.MediaItem.ClippingConfiguration;
import androidx.media3.common.MediaItem.SubtitleConfiguration;
import androidx.media3.common.MediaMetadata;
import androidx.media3.common.util.Assertions;
import androidx.media3.common.util.Util;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -117,36 +119,46 @@ public class IntentUtil {
@Nullable String mimeType = intent.getStringExtra(MIME_TYPE_EXTRA + extrasKeySuffix);
@Nullable String title = intent.getStringExtra(TITLE_EXTRA + extrasKeySuffix);
@Nullable String adTagUri = intent.getStringExtra(AD_TAG_URI_EXTRA + extrasKeySuffix);
@Nullable
SubtitleConfiguration subtitleConfiguration =
createSubtitleConfiguration(intent, extrasKeySuffix);
MediaItem.Builder builder =
new MediaItem.Builder()
.setUri(uri)
.setMimeType(mimeType)
.setMediaMetadata(new MediaMetadata.Builder().setTitle(title).build())
.setSubtitles(createSubtitlesFromIntent(intent, extrasKeySuffix))
.setClipStartPositionMs(
intent.getLongExtra(CLIP_START_POSITION_MS_EXTRA + extrasKeySuffix, 0))
.setClipEndPositionMs(
intent.getLongExtra(
CLIP_END_POSITION_MS_EXTRA + extrasKeySuffix, C.TIME_END_OF_SOURCE));
.setClippingConfiguration(
new ClippingConfiguration.Builder()
.setStartPositionMs(
intent.getLongExtra(CLIP_START_POSITION_MS_EXTRA + extrasKeySuffix, 0))
.setEndPositionMs(
intent.getLongExtra(
CLIP_END_POSITION_MS_EXTRA + extrasKeySuffix, C.TIME_END_OF_SOURCE))
.build());
if (adTagUri != null) {
builder.setAdsConfiguration(
new MediaItem.AdsConfiguration.Builder(Uri.parse(adTagUri)).build());
}
if (subtitleConfiguration != null) {
builder.setSubtitleConfigurations(ImmutableList.of(subtitleConfiguration));
}
return populateDrmPropertiesFromIntent(builder, intent, extrasKeySuffix).build();
}
private static List<MediaItem.Subtitle> createSubtitlesFromIntent(
@Nullable
private static MediaItem.SubtitleConfiguration createSubtitleConfiguration(
Intent intent, String extrasKeySuffix) {
if (!intent.hasExtra(SUBTITLE_URI_EXTRA + extrasKeySuffix)) {
return Collections.emptyList();
return null;
}
return Collections.singletonList(
new MediaItem.Subtitle(
Uri.parse(intent.getStringExtra(SUBTITLE_URI_EXTRA + extrasKeySuffix)),
checkNotNull(intent.getStringExtra(SUBTITLE_MIME_TYPE_EXTRA + extrasKeySuffix)),
intent.getStringExtra(SUBTITLE_LANGUAGE_EXTRA + extrasKeySuffix),
C.SELECTION_FLAG_DEFAULT));
return new MediaItem.SubtitleConfiguration.Builder(
Uri.parse(intent.getStringExtra(SUBTITLE_URI_EXTRA + extrasKeySuffix)))
.setMimeType(
checkNotNull(intent.getStringExtra(SUBTITLE_MIME_TYPE_EXTRA + extrasKeySuffix)))
.setLanguage(intent.getStringExtra(SUBTITLE_LANGUAGE_EXTRA + extrasKeySuffix))
.setSelectionFlags(C.SELECTION_FLAG_DEFAULT)
.build();
}
private static MediaItem.Builder populateDrmPropertiesFromIntent(

View File

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