我想通过使用MediaStore在手机上获取所有艺术家的姓名;我已经有了完整的列表,但由于有多个链接歌曲/艺术家,所有条目都有副本。是否有任何方法可以使用查询只获取其中一个,而不获取任何重复项?
我的问题是:

    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";

    String[] projection = {
            MediaStore.Audio.Media.ALBUM,
            MediaStore.Audio.Media.ARTIST,
            MediaStore.Audio.Media.TITLE,
            MediaStore.Audio.Media.DATA,
            MediaStore.Audio.Media.DURATION
    };
    Cursor cursor = context.getContentResolver().query(
            MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
            projection,
            selection,
            null,
            null);

提前谢谢!

最佳答案

在查询中使用关键字DISTINCT将返回不重复的值
例如,查询许多音频号码时只列出唱片集名称

        new String[] { "DISTINCT " + MediaStore.Audio.Playlists.Members.ALBUM_ID + " as _id"}

但我发现你只能返回一列
我保持它的简单性,并在遍历光标时执行以下操作。传递价值,对你来说是艺术家,
    if (value.length() > 0) {
        // check if value already exists
        if (!listItems.contains(value)) {
            // doesn't exist, add it
            listItems.add(value);
        }

    }

这是一个简单的方法。
你可以在google play上的“我的应用程序播放列表管理器”中查看。我用这种方法来挑选艺术家、年份等。

10-08 08:46