我正在尝试创建一个简单的音频应用,并引用Google的MediaBrowserService示例。我的问题是抓住 MediaBrowserServiceCompat.onLoadChildren()和 MediaSessionCompat.Callback 方法 onAddQueueItem 和 onRemoveQueueItem <背后的概念/ p>
@Override
public void onLoadChildren(@NonNull final String parentMediaId,
@NonNull final Result<List<MediaBrowserCompat.MediaItem>> result) {
Log.d(TAG, "onLoadChildren(): ------------------->");
result.sendResult(MusicLibrary.getMediaItems());
}
@Override
public void onAddQueueItem(MediaDescriptionCompat description) {
mPlaylist.add(new MediaSessionCompat.QueueItem(description, description.hashCode()));
mQueueIndex = (mQueueIndex == -1) ? 0 : mQueueIndex;
mSession.setQueue(mPlaylist);
}
@Override
public void onRemoveQueueItem(MediaDescriptionCompat description) {
mPlaylist.remove(new MediaSessionCompat.QueueItem(description, description.hashCode()));
mQueueIndex = (mPlaylist.isEmpty()) ? -1 : mQueueIndex;
mSession.setQueue(mPlaylist);
}
当我尝试使用 onLoadChildren 协调 onAddQueueItem 和 onRemoveQueueItem 方法时,会出现大量混淆。 onAddQueueItem()是否自动生成通过 onLoadChildren()方法中的 result.sendResult()发送/提供的 MediaBrowserCompat.MediaItems ?或者我是否因为试图将两者联系起来而使自己更加困惑?如果有人有博客/文章/ youtube视频,这将有助于扩大我的理解,这是非常有必要的。