我正在尝试创建一个简单的音频应用程序并引用 Google 的MediaBrowserService示例。我的问题是真正掌握MediaBrowserServiceCompat.onLoadChildren()和MediaSessionCompat.Callback方法onAddQueueItem和onRemoveQueueItem背后的概念
@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);
}
当我尝试将onAddQueueItem和onRemoveQueueItem方法与onLoadChildren协调时,会出现大量混乱。onAddQueueItem() 是否自动生成通过onLoadChildren()方法中的result.sendResult()发送/可用的MediaBrowserCompat.MediaItems?还是我试图将两者联系起来让自己更加困惑?如果有人有博客/文章/youtube 视频可以帮助扩大我的理解,那将非常感激。