1

特定のジャンルのすべてのアルバムに対してクエリを実行することに関心があります。Android では、 を使用して特定のアーティストのアルバムに対して同様のクエリを簡単に実行できますが、MediaStore.Audio.Artists.Albums.getContentUriジャンルのクエリに関する限り、MediaStore.Audio.Genres.Members.getContentUri提供されている最善の方法ですが、これはジャンルから曲を返すために使用されます。

Genres.Membersクエリを実行し、 を使用してアルバム名を返すと、ジャンルの各メンバーのアルバム名を簡単に返すことができますがMediaStore.Audio.Genres.Members.ALBUM、これは曲を表示する場合にのみ役立ちます。

あるジャンルのアルバムのみを返すために行うことができる何らかの選択、またはUri使用できる特別なものはありますか? これに関するドキュメントが見つからなかったので、誰かが情報を持っていれば大歓迎です。

4

1 に答える 1

7

はい、どうぞ:

    {
        int genreId = 2; // << Set Your Genre ID Here
        Uri uri = MediaStore.Audio.Albums.getContentUri("external");
        Log.i("XXX", "uri = " + uri.toString());
        Cursor cursor = null;
        try {

            String selection = "album_info._id IN "
                    + "(SELECT (audio_meta.album_id) album_id FROM audio_meta, audio_genres_map "
                    + "WHERE audio_genres_map.audio_id=audio_meta._id AND audio_genres_map.genre_id=?)";
            String[] selectionArgs = new String[] { String.valueOf(genreId) };
            String[] proj = { AlbumColumns.ALBUM };
            cursor = getContentResolver().query(uri, proj, selection,
                    selectionArgs, null);
            if (null != cursor) {
                Log.i("XXX", "cursor rows count = " + cursor.getCount());
                while (cursor.moveToNext()) {
                    Log.i("XXX", "  Album: " + cursor.getString(0));
                }
                cursor.close();
                Log.i("XXX", "cursor closed");
            }
        } catch (Exception ex) {
            Log.e("XXX", "Error Querying Database");
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
    }


指定したジャンル ID を持つすべてのアルバムを取得するように修正された編集クエリ

于 2012-10-08T10:43:51.417 に答える