尝试在使用 Chromecast 上的自定义接收器的音乐应用程序中获得所需的元数据、锁屏和投射弹出行为,会带来各种乐趣。这就是我要去的地方..
private void _dummyRemotePlay(long id,String mUrl,String artist,String title,String iUrl) {
// CODE THAT CHANGES BEHAVIOUR
MediaTrack.Builder b = new MediaTrack.Builder(id,MediaTrack.TYPE_AUDIO);
b.setSubtype(MediaTrack.SUBTYPE_METADATA);
// END CODE THAT CHANGES BEHAVIOUR
MediaMetadata mdata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MUSIC_TRACK);
mdata.putString(MediaMetadata.KEY_ARTIST, artist);
mdata.putString(MediaMetadata.KEY_TITLE, title);
mdata.addImage(new WebImage(Uri.parse(iUrl)));
MediaInfo mi = new MediaInfo.Builder(mUrl)
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setContentType("audio/mpeg")
.setMetadata(mdata)
.build();
MediaQueueItem qi = new
MediaQueueItem.Builder(mi).setAutoplay(true).setPreloadTime(20).build();
MediaQueueItem[] qa = new MediaQueueItem[]{qi,qi}; // Two so SKIP_NEXT works...
_remoteMediaClient.queueLoad(qa,0,MediaStatus.REPEAT_MODE_REPEAT_OFF, null);}
如果没有调用b.setSubType(MediaTrack.SUBTYPE_METADATA)
投射弹出窗口(图像、控件等),则会出现投射通知,并且投射音量由音量键调整。不起作用的是锁屏元数据和控件。艺术家是未知的,控件什么也不做。
通过b.setSubType
通话,锁屏工作正常(艺术家正确显示,控制工作)。但是,没有演员通知,演员弹出窗口没有选择媒体(没有图像,没有控件,只有音量滑块和结束演员)。此外,音量键不绑定到投射音量。
到了这个时候就随便玩玩了。最初调用b.build()
创建一个MediaTrack
,将其添加到列表中并调用.setMediaTracks(list)
。MediaInfo.builder
将其蒸馏到上述内容。仅调用没有构建 MediaTrack的b.setSubType
构建器就足以切换行为。
我正在寻找的是正确的锁屏行为,正确的演员对话图像和控制,音量键工作。我对演员通知无动于衷,因为该应用程序无论如何都有一个。看来我无法实现这一切。