有没有办法使用MediaStore来获取歌曲的类型?

时间:2017-09-26 22:13:44

标签: android mediastore mediametadataretriever

使用这种从Android外部存储中检索音频文件的方法

Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);

我真的可以找到一种合理的方式来获取给定歌曲的类型吗? MediaStore类似乎提供了其他一切 - 从歌曲的标题到作曲家信息 - 除了流派领域。我应该使用MediaMetadataRetriever吗?如果是这样,那么为设备上的每首歌曲创建MediaMetadataRetriever实例会如何大幅降低应用程序的性能呢?

也许有更好的方法从android中的外部和内部存储中检索所有音频文件?

1 个答案:

答案 0 :(得分:0)

Developer's Site所述,

您可以使用 MediaStore.Audio.Genres

获取音频文件的流派

示例代码:

private static String[] genresProj = {
            MediaStore.Audio.Genres.NAME,
            MediaStore.Audio.Genres._ID
    };

 int idIndex = cursor
                .getColumnIndexOrThrow(MediaStore.Audio.Media._ID);

 while (cursor.moveToNext()){
                int id = Integer.parseInt(mediaCursor.getString(idIndex));

                Uri uri = MediaStore.Audio.Genres.getContentUriForAudioId("external", id );
                genresCursor = context.getContentResolver().query(uri,
                        genresProj , null, null, null);
                int genreIndex = genresCursor.getColumnIndexOrThrow(MediaStore.Audio.Genres.NAME);                


                    while (genresCursor.moveToNext()) {
                        Log.d(TAG, "Genre = " +genresCursor.getString(genreIndex));
                    }

            }
        }

要获取音频文件的其他详细信息,请查看here