Java 通用Android音乐播放器-歌曲(按标题分组)

Java 通用Android音乐播放器-歌曲(按标题分组),java,android,Java,Android,这与GitHub上的应用程序有关 我通过在MusicService.java中使用以下方法(以及其他未提及的方法)创建了一个歌曲列表(按标题分组): 但这种方法的问题是,虽然它确实生成列表,但onplayFromMusic调用将只找到列表中的单个项 有没有办法实现一个只有一级深度的歌曲列表(按歌曲标题分组)(意思是->打开应用程序,选择歌曲>[所有歌曲]列出-然后点击其中一首歌曲将播放并从该位置继续播放列表)在允许QueueHelper.java也能够构建播放列表的同时?@nagesh susa

这与GitHub上的应用程序有关

我通过在MusicService.java中使用以下方法(以及其他未提及的方法)创建了一个歌曲列表(按标题分组):

但这种方法的问题是,虽然它确实生成列表,但onplayFromMusic调用将只找到列表中的单个项


有没有办法实现一个只有一级深度的歌曲列表(按歌曲标题分组)(意思是->打开应用程序,选择歌曲>[所有歌曲]列出-然后点击其中一首歌曲将播放并从该位置继续播放列表)在允许QueueHelper.java也能够构建播放列表的同时?

@nagesh susaria我希望您看到这个~IIUC,您希望将层次结构从选择->标题->所有歌曲缩短为选择->所有歌曲。是这样吗?如果是这样的话,那么可以在顶层添加所有项目。请注意,您必须构建自己的层次结构感知mediaId。如果所有歌曲都只作为标题列出,那么您可以使用mediaId。明白了-因此扩展mediaId以考虑较短的层次结构级别。
...
List<MediaBrowserCompat.MediaItem> mediaItems = new ArrayList<>();
...
// Song titles root view
        if (MEDIA_ID_ROOT.equals(parentMediaId)) {
            LogHelper.d(TAG, "OnLoadChildren.ROOT");
            mediaItems.add(new MediaBrowserCompat.MediaItem(
                    new MediaDescriptionCompat.Builder()
                            .setMediaId(MEDIA_ID_MUSICS_BY_TITLE)
                            .setTitle(getString(R.string.browse_song_titles))
                            .setIconUri(Uri.parse("android.resource://" +
                                    getPackageName() + "/drawable/ic_by_title"))
                            .setSubtitle(getString(R.string.browse_song_titles_subtitle))
                            .build(), MediaBrowserCompat.MediaItem.FLAG_BROWSABLE
            ));

        }
...
// Other lists
// Other lists

else if (MEDIA_ID_MUSICS_BY_TITLE.equals(parentMediaId)) {
            LogHelper.d(TAG, "OnLoadChildren.TITLES");
            for (String title : mMusicProvider.getSongTitles()) {
                for (MediaMetadataCompat track : mMusicProvider.getMusicsBySongTitle(title)) {
                    String hierarchyAwareMediaID = MediaIDHelper.createMediaID(
                            track.getDescription().getMediaId(), MEDIA_ID_MUSICS_BY_TITLE, title);
                    MediaMetadataCompat trackCopy = new MediaMetadataCompat.Builder(track)
                            .putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, hierarchyAwareMediaID)
                            .build();
                    MediaBrowserCompat.MediaItem bItem = new MediaBrowserCompat.MediaItem(
                            trackCopy.getDescription(), MediaBrowserCompat.MediaItem.FLAG_PLAYABLE);
                    mediaItems.add(bItem);
                }
            }

        }
// More lists