使用这种从Android外部存储中检索音频文件的方法
Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
我真的可以找到一种合理的方式来获取给定歌曲的类型吗? MediaStore类似乎提供了其他一切 - 从歌曲的标题到作曲家信息 - 除了流派领域。我应该使用MediaMetadataRetriever吗?如果是这样,那么为设备上的每首歌曲创建MediaMetadataRetriever实例会如何大幅降低应用程序的性能呢?
也许有更好的方法从android中的外部和内部存储中检索所有音频文件?
答案 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。