Revert usage of MediaItems for Cast demo sample list

PiperOrigin-RevId: 224308973
This commit is contained in:
aquilescanta 2018-12-06 11:56:27 +00:00 committed by Andrew Lewis
parent 5776bed190
commit 891961d5e1
3 changed files with 60 additions and 43 deletions

View File

@ -268,7 +268,7 @@ import java.util.ArrayList;
public void onTimelineChanged( public void onTimelineChanged(
Timeline timeline, @Nullable Object manifest, @TimelineChangeReason int reason) { Timeline timeline, @Nullable Object manifest, @TimelineChangeReason int reason) {
updateCurrentItemIndex(); updateCurrentItemIndex();
if (timeline.isEmpty()) { if (currentPlayer == castPlayer && timeline.isEmpty()) {
castMediaQueueCreationPending = true; castMediaQueueCreationPending = true;
} }
} }

View File

@ -15,7 +15,6 @@
*/ */
package com.google.android.exoplayer2.castdemo; package com.google.android.exoplayer2.castdemo;
import com.google.android.exoplayer2.ext.cast.MediaItem;
import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.MimeTypes;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -24,50 +23,64 @@ import java.util.List;
/** Utility methods and constants for the Cast demo application. */ /** Utility methods and constants for the Cast demo application. */
/* package */ final class DemoUtil { /* package */ final class DemoUtil {
/** Represents a media sample. */
public static final class Sample {
/** The uri of the media content. */
public final String uri;
/** The name of the sample. */
public final String name;
/** The mime type of the sample media content. */
public final String mimeType;
/**
* @param uri See {@link #uri}.
* @param name See {@link #name}.
* @param mimeType See {@link #mimeType}.
*/
public Sample(String uri, String name, String mimeType) {
this.uri = uri;
this.name = name;
this.mimeType = mimeType;
}
@Override
public String toString() {
return name;
}
}
public static final String MIME_TYPE_DASH = MimeTypes.APPLICATION_MPD; public static final String MIME_TYPE_DASH = MimeTypes.APPLICATION_MPD;
public static final String MIME_TYPE_HLS = MimeTypes.APPLICATION_M3U8; public static final String MIME_TYPE_HLS = MimeTypes.APPLICATION_M3U8;
public static final String MIME_TYPE_SS = MimeTypes.APPLICATION_SS; public static final String MIME_TYPE_SS = MimeTypes.APPLICATION_SS;
public static final String MIME_TYPE_VIDEO_MP4 = MimeTypes.VIDEO_MP4; public static final String MIME_TYPE_VIDEO_MP4 = MimeTypes.VIDEO_MP4;
/** The list of samples available in the cast demo app. */ /** The list of samples available in the cast demo app. */
public static final List<MediaItem> SAMPLES; public static final List<Sample> SAMPLES;
static { static {
// App samples. // App samples.
ArrayList<MediaItem> samples = new ArrayList<>(); ArrayList<Sample> samples = new ArrayList<>();
MediaItem.Builder sampleBuilder = new MediaItem.Builder();
samples.add( samples.add(
sampleBuilder new Sample(
.setTitle("DASH (clear,MP4,H264)") "https://storage.googleapis.com/wvmedia/clear/h264/tears/tears.mpd",
.setMimeType(MIME_TYPE_DASH) "DASH (clear,MP4,H264)",
.setMedia("https://storage.googleapis.com/wvmedia/clear/h264/tears/tears.mpd") MIME_TYPE_DASH));
.buildAndClear());
samples.add( samples.add(
sampleBuilder new Sample(
.setTitle("Tears of Steel (HLS)") "https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/"
.setMimeType(MIME_TYPE_HLS) + "hls/TearsOfSteel.m3u8",
.setMedia( "Tears of Steel (HLS)",
"https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/" MIME_TYPE_HLS));
+ "hls/TearsOfSteel.m3u8")
.buildAndClear());
samples.add( samples.add(
sampleBuilder new Sample(
.setTitle("HLS Basic (TS)") "https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_4x3"
.setMimeType(MIME_TYPE_HLS) + "/bipbop_4x3_variant.m3u8",
.setMedia( "HLS Basic (TS)",
"https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_4x3" MIME_TYPE_HLS));
+ "/bipbop_4x3_variant.m3u8")
.buildAndClear());
samples.add( samples.add(
sampleBuilder new Sample("https://html5demos.com/assets/dizzy.mp4", "Dizzy (MP4)", MIME_TYPE_VIDEO_MP4));
.setTitle("Dizzy (MP4)")
.setMimeType(MIME_TYPE_VIDEO_MP4)
.setMedia("https://html5demos.com/assets/dizzy.mp4")
.buildAndClear());
SAMPLES = Collections.unmodifiableList(samples); SAMPLES = Collections.unmodifiableList(samples);
} }

View File

@ -17,7 +17,6 @@ package com.google.android.exoplayer2.castdemo;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.graphics.ColorUtils; import android.support.v4.graphics.ColorUtils;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
@ -50,6 +49,8 @@ import com.google.android.gms.cast.framework.CastContext;
public class MainActivity extends AppCompatActivity public class MainActivity extends AppCompatActivity
implements OnClickListener, PlayerManager.QueuePositionListener { implements OnClickListener, PlayerManager.QueuePositionListener {
private final MediaItem.Builder mediaItemBuilder;
private PlayerView localPlayerView; private PlayerView localPlayerView;
private PlayerControlView castControlView; private PlayerControlView castControlView;
private PlayerManager playerManager; private PlayerManager playerManager;
@ -57,6 +58,10 @@ public class MainActivity extends AppCompatActivity
private MediaQueueListAdapter mediaQueueListAdapter; private MediaQueueListAdapter mediaQueueListAdapter;
private CastContext castContext; private CastContext castContext;
public MainActivity() {
mediaItemBuilder = new MediaItem.Builder();
}
// Activity lifecycle methods. // Activity lifecycle methods.
@Override @Override
@ -154,7 +159,14 @@ public class MainActivity extends AppCompatActivity
sampleList.setAdapter(new SampleListAdapter(this)); sampleList.setAdapter(new SampleListAdapter(this));
sampleList.setOnItemClickListener( sampleList.setOnItemClickListener(
(parent, view, position, id) -> { (parent, view, position, id) -> {
playerManager.addItem(DemoUtil.SAMPLES.get(position)); DemoUtil.Sample sample = DemoUtil.SAMPLES.get(position);
playerManager.addItem(
mediaItemBuilder
.clear()
.setMedia(sample.uri)
.setTitle(sample.name)
.setMimeType(sample.mimeType)
.build());
mediaQueueListAdapter.notifyItemInserted(playerManager.getMediaQueueSize() - 1); mediaQueueListAdapter.notifyItemInserted(playerManager.getMediaQueueSize() - 1);
}); });
return dialogList; return dialogList;
@ -254,19 +266,11 @@ public class MainActivity extends AppCompatActivity
} }
private static final class SampleListAdapter extends ArrayAdapter<MediaItem> { private static final class SampleListAdapter extends ArrayAdapter<DemoUtil.Sample> {
public SampleListAdapter(Context context) { public SampleListAdapter(Context context) {
super(context, android.R.layout.simple_list_item_1, DemoUtil.SAMPLES); super(context, android.R.layout.simple_list_item_1, DemoUtil.SAMPLES);
} }
@Override
public View getView(int position, @Nullable View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView, parent);
MediaItem sample = DemoUtil.SAMPLES.get(position);
view.setText(sample.title);
return view;
}
} }
} }