有没有办法使用 MediaStore 获取歌曲的流派?
Is there any way to fetch song's genre using MediaStore?
使用这种方法从Android的外部存储器中检索音频文件
Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
我真的可以找到一种合理的方法来获取给定歌曲的流派吗? MediaStore class 似乎提供了除流派字段之外的所有其他内容——从歌曲的标题到作曲者信息。那我应该使用 MediaMetadataRetriever 吗?如果是这样,为设备上的每首歌曲创建 MediaMetadataRetriever 实例会在多大程度上降低应用程序的性能?
也许有一些更好的方法可以从 android 中的外部和内部存储中检索所有音频文件?
所述
您可以使用 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。
使用这种方法从Android的外部存储器中检索音频文件
Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
我真的可以找到一种合理的方法来获取给定歌曲的流派吗? MediaStore class 似乎提供了除流派字段之外的所有其他内容——从歌曲的标题到作曲者信息。那我应该使用 MediaMetadataRetriever 吗?如果是这样,为设备上的每首歌曲创建 MediaMetadataRetriever 实例会在多大程度上降低应用程序的性能?
也许有一些更好的方法可以从 android 中的外部和内部存储中检索所有音频文件?
您可以使用 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。