Change String MediaMetadata.title to CharSequence trackTitle.
PiperOrigin-RevId: 370439509
This commit is contained in:
parent
bc69509aba
commit
3f3d1fb5f2
@ -42,19 +42,21 @@ import java.util.List;
|
||||
samples.add(
|
||||
new MediaItem.Builder()
|
||||
.setUri("https://storage.googleapis.com/wvmedia/clear/h264/tears/tears.mpd")
|
||||
.setMediaMetadata(new MediaMetadata.Builder().setTitle("Clear DASH: Tears").build())
|
||||
.setMediaMetadata(
|
||||
new MediaMetadata.Builder().setTrackTitle("Clear DASH: Tears").build())
|
||||
.setMimeType(MIME_TYPE_DASH)
|
||||
.build());
|
||||
samples.add(
|
||||
new MediaItem.Builder()
|
||||
.setUri("https://storage.googleapis.com/shaka-demo-assets/angel-one-hls/hls.m3u8")
|
||||
.setMediaMetadata(new MediaMetadata.Builder().setTitle("Clear HLS: Angel one").build())
|
||||
.setMediaMetadata(
|
||||
new MediaMetadata.Builder().setTrackTitle("Clear HLS: Angel one").build())
|
||||
.setMimeType(MIME_TYPE_HLS)
|
||||
.build());
|
||||
samples.add(
|
||||
new MediaItem.Builder()
|
||||
.setUri("https://html5demos.com/assets/dizzy.mp4")
|
||||
.setMediaMetadata(new MediaMetadata.Builder().setTitle("Clear MP4: Dizzy").build())
|
||||
.setMediaMetadata(new MediaMetadata.Builder().setTrackTitle("Clear MP4: Dizzy").build())
|
||||
.setMimeType(MIME_TYPE_VIDEO_MP4)
|
||||
.build());
|
||||
|
||||
@ -63,7 +65,7 @@ import java.util.List;
|
||||
new MediaItem.Builder()
|
||||
.setUri(Uri.parse("https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears.mpd"))
|
||||
.setMediaMetadata(
|
||||
new MediaMetadata.Builder().setTitle("Widevine DASH cenc: Tears").build())
|
||||
new MediaMetadata.Builder().setTrackTitle("Widevine DASH cenc: Tears").build())
|
||||
.setMimeType(MIME_TYPE_DASH)
|
||||
.setDrmUuid(C.WIDEVINE_UUID)
|
||||
.setDrmLicenseUri("https://proxy.uat.widevine.com/proxy?provider=widevine_test")
|
||||
@ -72,7 +74,7 @@ import java.util.List;
|
||||
new MediaItem.Builder()
|
||||
.setUri("https://storage.googleapis.com/wvmedia/cbc1/h264/tears/tears_aes_cbc1.mpd")
|
||||
.setMediaMetadata(
|
||||
new MediaMetadata.Builder().setTitle("Widevine DASH cbc1: Tears").build())
|
||||
new MediaMetadata.Builder().setTrackTitle("Widevine DASH cbc1: Tears").build())
|
||||
.setMimeType(MIME_TYPE_DASH)
|
||||
.setDrmUuid(C.WIDEVINE_UUID)
|
||||
.setDrmLicenseUri("https://proxy.uat.widevine.com/proxy?provider=widevine_test")
|
||||
@ -81,7 +83,7 @@ import java.util.List;
|
||||
new MediaItem.Builder()
|
||||
.setUri("https://storage.googleapis.com/wvmedia/cbcs/h264/tears/tears_aes_cbcs.mpd")
|
||||
.setMediaMetadata(
|
||||
new MediaMetadata.Builder().setTitle("Widevine DASH cbcs: Tears").build())
|
||||
new MediaMetadata.Builder().setTrackTitle("Widevine DASH cbcs: Tears").build())
|
||||
.setMimeType(MIME_TYPE_DASH)
|
||||
.setDrmUuid(C.WIDEVINE_UUID)
|
||||
.setDrmLicenseUri("https://proxy.uat.widevine.com/proxy?provider=widevine_test")
|
||||
|
@ -211,7 +211,7 @@ public class MainActivity extends AppCompatActivity
|
||||
holder.item = Assertions.checkNotNull(playerManager.getItem(position));
|
||||
|
||||
TextView view = holder.textView;
|
||||
view.setText(holder.item.mediaMetadata.title);
|
||||
view.setText(holder.item.mediaMetadata.trackTitle);
|
||||
// TODO: Solve coloring using the theme's ColorStateList.
|
||||
view.setTextColor(
|
||||
ColorUtils.setAlphaComponent(
|
||||
@ -308,7 +308,7 @@ public class MainActivity extends AppCompatActivity
|
||||
@NonNull
|
||||
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
|
||||
View view = super.getView(position, convertView, parent);
|
||||
((TextView) view).setText(Util.castNonNull(getItem(position)).mediaMetadata.title);
|
||||
((TextView) view).setText(Util.castNonNull(getItem(position)).mediaMetadata.trackTitle);
|
||||
return view;
|
||||
}
|
||||
}
|
||||
|
@ -363,7 +363,8 @@ public class DownloadTracker {
|
||||
|
||||
private DownloadRequest buildDownloadRequest() {
|
||||
return downloadHelper
|
||||
.getDownloadRequest(Util.getUtf8Bytes(checkNotNull(mediaItem.mediaMetadata.title)))
|
||||
.getDownloadRequest(
|
||||
Util.getUtf8Bytes(checkNotNull(mediaItem.mediaMetadata.trackTitle.toString())))
|
||||
.copyWithKeySetId(keySetId);
|
||||
}
|
||||
}
|
||||
|
@ -90,8 +90,8 @@ public class IntentUtil {
|
||||
MediaItem mediaItem = mediaItems.get(0);
|
||||
MediaItem.PlaybackProperties playbackProperties = checkNotNull(mediaItem.playbackProperties);
|
||||
intent.setAction(ACTION_VIEW).setData(mediaItem.playbackProperties.uri);
|
||||
if (mediaItem.mediaMetadata.title != null) {
|
||||
intent.putExtra(TITLE_EXTRA, mediaItem.mediaMetadata.title);
|
||||
if (mediaItem.mediaMetadata.trackTitle != null) {
|
||||
intent.putExtra(TITLE_EXTRA, mediaItem.mediaMetadata.trackTitle);
|
||||
}
|
||||
addPlaybackPropertiesToIntent(playbackProperties, intent, /* extrasKeySuffix= */ "");
|
||||
addClippingPropertiesToIntent(
|
||||
@ -106,8 +106,8 @@ public class IntentUtil {
|
||||
addPlaybackPropertiesToIntent(playbackProperties, intent, /* extrasKeySuffix= */ "_" + i);
|
||||
addClippingPropertiesToIntent(
|
||||
mediaItem.clippingProperties, intent, /* extrasKeySuffix= */ "_" + i);
|
||||
if (mediaItem.mediaMetadata.title != null) {
|
||||
intent.putExtra(TITLE_EXTRA + ("_" + i), mediaItem.mediaMetadata.title);
|
||||
if (mediaItem.mediaMetadata.trackTitle != null) {
|
||||
intent.putExtra(TITLE_EXTRA + ("_" + i), mediaItem.mediaMetadata.trackTitle);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -121,7 +121,7 @@ public class IntentUtil {
|
||||
new MediaItem.Builder()
|
||||
.setUri(uri)
|
||||
.setMimeType(mimeType)
|
||||
.setMediaMetadata(new MediaMetadata.Builder().setTitle(title).build())
|
||||
.setMediaMetadata(new MediaMetadata.Builder().setTrackTitle(title).build())
|
||||
.setAdTagUri(intent.getStringExtra(AD_TAG_URI_EXTRA + extrasKeySuffix))
|
||||
.setSubtitles(createSubtitlesFromIntent(intent, extrasKeySuffix))
|
||||
.setClipStartPositionMs(
|
||||
|
@ -433,7 +433,7 @@ public class SampleChooserActivity extends AppCompatActivity
|
||||
Util.getAdaptiveMimeTypeForContentType(Util.inferContentType(uri, extension));
|
||||
mediaItem
|
||||
.setUri(uri)
|
||||
.setMediaMetadata(new MediaMetadata.Builder().setTitle(title).build())
|
||||
.setMediaMetadata(new MediaMetadata.Builder().setTrackTitle(title).build())
|
||||
.setMimeType(adaptiveMimeType);
|
||||
if (subtitleUri != null) {
|
||||
MediaItem.Subtitle subtitle =
|
||||
|
@ -30,17 +30,24 @@ public final class MediaMetadata implements Bundleable {
|
||||
/** A builder for {@link MediaMetadata} instances. */
|
||||
public static final class Builder {
|
||||
|
||||
@Nullable private String title;
|
||||
@Nullable private CharSequence trackTitle;
|
||||
|
||||
public Builder() {}
|
||||
|
||||
private Builder(MediaMetadata mediaMetadata) {
|
||||
this.title = mediaMetadata.title;
|
||||
this.trackTitle = mediaMetadata.trackTitle;
|
||||
}
|
||||
|
||||
/** Sets the optional title. */
|
||||
/** @deprecated Use {@link #setTrackTitle(CharSequence)} instead. */
|
||||
@Deprecated
|
||||
public Builder setTitle(@Nullable String title) {
|
||||
this.title = title;
|
||||
this.trackTitle = title;
|
||||
return this;
|
||||
}
|
||||
|
||||
/** Sets the optional track title. */
|
||||
public Builder setTrackTitle(@Nullable CharSequence trackTitle) {
|
||||
this.trackTitle = trackTitle;
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -70,11 +77,15 @@ public final class MediaMetadata implements Bundleable {
|
||||
/** Empty {@link MediaMetadata}. */
|
||||
public static final MediaMetadata EMPTY = new MediaMetadata.Builder().build();
|
||||
|
||||
/** Optional title. */
|
||||
@Nullable public final String title;
|
||||
/** @deprecated Use {@link #trackTitle} instead. */
|
||||
@Deprecated @Nullable public final String title;
|
||||
|
||||
/** Optional track title. */
|
||||
@Nullable public final CharSequence trackTitle;
|
||||
|
||||
private MediaMetadata(Builder builder) {
|
||||
this.title = builder.title;
|
||||
this.title = builder.trackTitle != null ? builder.trackTitle.toString() : null;
|
||||
this.trackTitle = builder.trackTitle;
|
||||
}
|
||||
|
||||
/** Returns a new {@link Builder} instance with the current {@link MediaMetadata} fields. */
|
||||
@ -92,34 +103,36 @@ public final class MediaMetadata implements Bundleable {
|
||||
}
|
||||
MediaMetadata other = (MediaMetadata) obj;
|
||||
|
||||
return Util.areEqual(title, other.title);
|
||||
return Util.areEqual(trackTitle, other.trackTitle);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return title == null ? 0 : title.hashCode();
|
||||
return trackTitle == null ? 0 : trackTitle.hashCode();
|
||||
}
|
||||
|
||||
// Bundleable implementation.
|
||||
|
||||
@Documented
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@IntDef({FIELD_TITLE})
|
||||
@IntDef({FIELD_TRACK_TITLE})
|
||||
private @interface FieldNumber {}
|
||||
|
||||
private static final int FIELD_TITLE = 0;
|
||||
private static final int FIELD_TRACK_TITLE = 0;
|
||||
|
||||
@Override
|
||||
public Bundle toBundle() {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(keyForField(FIELD_TITLE), title);
|
||||
bundle.putCharSequence(keyForField(FIELD_TRACK_TITLE), trackTitle);
|
||||
return bundle;
|
||||
}
|
||||
|
||||
/** Object that can restore {@link MediaMetadata} from a {@link Bundle}. */
|
||||
public static final Creator<MediaMetadata> CREATOR =
|
||||
bundle ->
|
||||
new MediaMetadata.Builder().setTitle(bundle.getString(keyForField(FIELD_TITLE))).build();
|
||||
new MediaMetadata.Builder()
|
||||
.setTrackTitle(bundle.getCharSequence(keyForField(FIELD_TRACK_TITLE)))
|
||||
.build();
|
||||
|
||||
private static String keyForField(@FieldNumber int field) {
|
||||
return Integer.toString(field, Character.MAX_RADIX);
|
||||
|
@ -46,7 +46,7 @@ public final class TextInformationFrame extends Id3Frame {
|
||||
switch (id) {
|
||||
case "TT2":
|
||||
case "TIT2":
|
||||
builder.setTitle(value);
|
||||
builder.setTrackTitle(value);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -299,7 +299,7 @@ public class MediaItemTest {
|
||||
|
||||
@Test
|
||||
public void builderSetMediaMetadata_setsMetadata() {
|
||||
MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTitle("title").build();
|
||||
MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTrackTitle("title").build();
|
||||
|
||||
MediaItem mediaItem =
|
||||
new MediaItem.Builder().setUri(URI_STRING).setMediaMetadata(mediaMetadata).build();
|
||||
@ -368,7 +368,7 @@ public class MediaItemTest {
|
||||
.setDrmSessionForClearTypes(Collections.singletonList(C.TRACK_TYPE_AUDIO))
|
||||
.setDrmKeySetId(new byte[] {1, 2, 3})
|
||||
.setMediaId("mediaId")
|
||||
.setMediaMetadata(new MediaMetadata.Builder().setTitle("title").build())
|
||||
.setMediaMetadata(new MediaMetadata.Builder().setTrackTitle("title").build())
|
||||
.setMimeType(MimeTypes.APPLICATION_MP4)
|
||||
.setUri(URI_STRING)
|
||||
.setStreamKeys(Collections.singletonList(new StreamKey(1, 0, 0)))
|
||||
@ -404,7 +404,7 @@ public class MediaItemTest {
|
||||
.setLiveMaxOffsetMs(4_444)
|
||||
.setLiveMinPlaybackSpeed(.9f)
|
||||
.setLiveMaxPlaybackSpeed(1.1f)
|
||||
.setMediaMetadata(new MediaMetadata.Builder().setTitle("title").build())
|
||||
.setMediaMetadata(new MediaMetadata.Builder().setTrackTitle("title").build())
|
||||
.setClipStartPositionMs(100)
|
||||
.setClipEndPositionMs(1_000)
|
||||
.setClipRelativeToDefaultPosition(true)
|
||||
|
@ -31,21 +31,21 @@ public class MediaMetadataTest {
|
||||
public void builder_minimal_correctDefaults() {
|
||||
MediaMetadata mediaMetadata = new MediaMetadata.Builder().build();
|
||||
|
||||
assertThat(mediaMetadata.title).isNull();
|
||||
assertThat(mediaMetadata.trackTitle).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void builderSetTitle_setsTitle() {
|
||||
public void builderSetsTrackTitle_setsTrackTitle() {
|
||||
String title = "title";
|
||||
|
||||
MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTitle(title).build();
|
||||
MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTrackTitle(title).build();
|
||||
|
||||
assertThat(mediaMetadata.title).isEqualTo(title);
|
||||
assertThat(mediaMetadata.trackTitle.toString()).isEqualTo(title);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void roundTripViaBundle_yieldsEqualInstance() {
|
||||
MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTitle("title").build();
|
||||
MediaMetadata mediaMetadata = new MediaMetadata.Builder().setTrackTitle("title").build();
|
||||
|
||||
assertThat(MediaMetadata.CREATOR.fromBundle(mediaMetadata.toBundle())).isEqualTo(mediaMetadata);
|
||||
}
|
||||
@ -58,6 +58,6 @@ public class MediaMetadataTest {
|
||||
MediaMetadata.Builder builder = MediaMetadata.EMPTY.buildUpon();
|
||||
|
||||
entry.populateMediaMetadata(builder);
|
||||
assertThat(builder.build().title).isEqualTo(title);
|
||||
assertThat(builder.build().trackTitle.toString()).isEqualTo(title);
|
||||
}
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ public final class IcyInfo implements Metadata.Entry {
|
||||
@Override
|
||||
public void populateMediaMetadata(MediaMetadata.Builder builder) {
|
||||
if (title != null) {
|
||||
builder.setTitle(title);
|
||||
builder.setTrackTitle(title);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user