10

特定の曲のジャンルを取得する方法は知っていますが (ジャンルの取得を参照)、特定のジャンルのすべての曲を取得したいと考えています。「ジャンル」はメディア アイテムの列の 1 つではないようなので、アーティストやアルバムとは異なり、単一のクエリで行う方法がわかりません。効率的な方法はありますか?ありがとう!

4

2 に答える 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 に答える