mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Migrate the demo app to use non-deprecated MediaItem Builders
#minor-release PiperOrigin-RevId: 407843859
This commit is contained in:
parent
088f4c5d08
commit
1f1b12751a
2 changed files with 44 additions and 25 deletions
|
|
@ -23,11 +23,13 @@ import android.net.Uri;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.media3.common.C;
|
import androidx.media3.common.C;
|
||||||
import androidx.media3.common.MediaItem;
|
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.MediaMetadata;
|
||||||
import androidx.media3.common.util.Assertions;
|
import androidx.media3.common.util.Assertions;
|
||||||
import androidx.media3.common.util.Util;
|
import androidx.media3.common.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;
|
||||||
|
|
@ -117,36 +119,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(
|
||||||
|
|
|
||||||
|
|
@ -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 androidx.media3.common.MediaItem;
|
import androidx.media3.common.MediaItem;
|
||||||
|
import androidx.media3.common.MediaItem.ClippingConfiguration;
|
||||||
import androidx.media3.common.MediaMetadata;
|
import androidx.media3.common.MediaMetadata;
|
||||||
import androidx.media3.common.ParserException;
|
import androidx.media3.common.ParserException;
|
||||||
import androidx.media3.common.util.Log;
|
import androidx.media3.common.util.Log;
|
||||||
|
|
@ -53,6 +54,7 @@ import androidx.media3.datasource.DataSourceUtil;
|
||||||
import androidx.media3.datasource.DataSpec;
|
import androidx.media3.datasource.DataSpec;
|
||||||
import androidx.media3.exoplayer.RenderersFactory;
|
import androidx.media3.exoplayer.RenderersFactory;
|
||||||
import androidx.media3.exoplayer.offline.DownloadService;
|
import androidx.media3.exoplayer.offline.DownloadService;
|
||||||
|
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…
Reference in a new issue