1

尝试在使用 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构建器就足以切换行为。

我正在寻找的是正确的锁屏行为,正确的演员对话图像和控制,音量键工作。我对演员通知无动于衷,因为该应用程序无论如何都有一个。看来我无法实现这一切。

4

0 回答 0