我知道如何检索特定歌曲的流派(请参阅获取流派),但我想检索特定流派的所有歌曲。由于“流派”似乎不是媒体项目的列之一,因此我不知道如何在单个查询中执行此操作,这与艺术家或专辑不同。有没有有效的方法?谢谢!
问问题
7994 次
2 回答
15
Uri uri = Audio.Genres.Members.getContentUri("external", genreID);
String[] projection = new String[]{Audio.Media.TITLE, Audio.Media._ID};
Cursor cur = contentResolver.query(uri, projection, null, null, null);
于 2012-02-18T13:13:08.133 回答
1
您可以通过将内容 URI 放在一起并查询 MediaStore 来做到这一点。以下是从 Android 音乐播放器中借用的一些代码:
String [] cols = new String [] {MediaStore.Audio.Genres.NAME};
Cursor cursor = MusicUtils.query(this,
ContentUris.withAppendedId(MediaStore.Audio.Genres.EXTERNAL_CONTENT_URI, Long.valueOf(mGenre)),
cols, null, null, null);
这是 MusicUtils 中的代码:
public static Cursor query(Context context, Uri uri, String[] projection,
String selection, String[] selectionArgs, String sortOrder, int limit) {
try {
ContentResolver resolver = context.getContentResolver();
if (resolver == null) {
return null;
}
if (limit > 0) {
uri = uri.buildUpon().appendQueryParameter("limit", "" + limit).build();
}
return resolver.query(uri, projection, selection, selectionArgs, sortOrder);
} catch (UnsupportedOperationException ex) {
ErrorReporter.getInstance().putCustomData("UnsupportedOperationException", "true");
return null;
}
}
于 2011-12-29T02:59:39.163 回答