推送播放列表"使用CastCompanionLibrary进行Chromecast

时间:2015-11-11 15:13:25

标签: android chromecast castcompanionlibrary

使用CastCompanionLibrary,将MediaInfo发送到Chromecast API即可轻松播放。

MediaInfo.Builder media = new MediaInfo.Builder("http://url.to/video.mp4");

VideoCastManager cast = ...
cast.startVideoCastControllerActivity(context, media.build(), 0, true);

为了创建队列(播放列表),发送多个MediaInfo的推荐方法是什么?

更新#1:

我试图将queueLoad添加到代码中。让它在startVideoCastControllerActivity之后运行。

MediaInfo.Builder info = new MediaInfo.Builder("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4");
info.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED);
info.setContentType("video/mp4");

MediaQueueItem[] items = new MediaQueueItem[] {
        new MediaQueueItem.Builder(info.build()).build(),
        new MediaQueueItem.Builder(info.build()).build(),
        new MediaQueueItem.Builder(info.build()).build()
};

cast.queueLoad(items, 0, 0, null);

它使用此日志崩溃了应用程序:

  

java.lang.NullPointerException:尝试调用虚方法   ' java.lang.String中   com.google.android.gms.cast.MediaMetadata.getString(java.lang.String中)'   在null对象引用   com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.updateMiniController(的SourceFile:309)   在   com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.updateMiniControllers(的SourceFile:321)   在   com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.onRemoteMediaPlayerStatusUpdated(的SourceFile:2126)   在   com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager.access $ 200(的SourceFile:136)   在   com.google.android.libraries.cast.companionlibrary.cast.VideoCastManager $ 22.onStatusUpdated(的SourceFile:1804)   在   com.google.android.gms.cast.RemoteMediaPlayer.onStatusUpdated(未知   来源)com.google.android.gms.cast.RemoteMediaPlayer.zza(未知   来源)at   com.google.android.gms.cast.RemoteMediaPlayer $ 1.onStatusUpdated(未知   来源)com.google.android.gms.cast.internal.zzm.zza(未知   来源)com.google.android.gms.cast.internal.zzm.zzbZ(未知   来源)at   com.google.android.gms.cast.RemoteMediaPlayer.onMessageReceived(未知   来源)com.google.android.gms.cast.internal.zze $ zzb $ 4.run(未知)   源)

2 个答案:

答案 0 :(得分:4)

推荐的方法是为每个MediaInfo创建一个MediaQueueItem,然后使用VideoCastManager#queueLoad()并传递一个MediaQueueItem数组。也可以从单个队列项开始并附加到该队列项,或插入队列中的某个位置等;还有许多方法可以编辑和管理队列。

来自SDK(和CCL)的一些回调可以让您知道何时更新队列等,以便您可以使用这些回调更新您的发送方(例如,如果发件人A更新队列,发件人B可以使用这些回调来保持同步)。 CastVideos-android应用程序使用它并提供一个简单的UI来刷消队列项目或重新排序等。

答案 1 :(得分:0)

您必须创建自定义接收器才能实现播放列表功能。如何使用javascript在接收器上实现播放列表结构取决于您。来自Ali Nadaf的See this answer,关于为什么播放列表需要维护接收者而不是发送者。

就加载多个MediaInfo项而言,您必须查看castManager和MediaQueueItem类的queueLoad方法。