Revert usage of MediaItems for Cast demo sample list
PiperOrigin-RevId: 224308973
This commit is contained in:
parent
5776bed190
commit
891961d5e1
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)")
|
|
||||||
.setMimeType(MIME_TYPE_HLS)
|
|
||||||
.setMedia(
|
|
||||||
"https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/"
|
"https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/"
|
||||||
+ "hls/TearsOfSteel.m3u8")
|
+ "hls/TearsOfSteel.m3u8",
|
||||||
.buildAndClear());
|
"Tears of Steel (HLS)",
|
||||||
|
MIME_TYPE_HLS));
|
||||||
samples.add(
|
samples.add(
|
||||||
sampleBuilder
|
new Sample(
|
||||||
.setTitle("HLS Basic (TS)")
|
|
||||||
.setMimeType(MIME_TYPE_HLS)
|
|
||||||
.setMedia(
|
|
||||||
"https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_4x3"
|
"https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_4x3"
|
||||||
+ "/bipbop_4x3_variant.m3u8")
|
+ "/bipbop_4x3_variant.m3u8",
|
||||||
.buildAndClear());
|
"HLS Basic (TS)",
|
||||||
|
MIME_TYPE_HLS));
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user