2011-12-14 1 views
8

특정 노래의 장르를 검색하는 방법을 알고 있지만 (getting the genres 참조) 특정 장르의 모든 노래를 검색하고 싶습니다. "장르"는 미디어 항목의 열 중 하나가 아닌 것 같기 때문에 아티스트 나 앨범과 달리 단일 쿼리에서 어떻게해야할지 모르겠습니다. 효율적인 방법이 있습니까? 고맙습니다!Android Mediastore : 특정 장르의 모든 노래를 효율적으로 검색하는 방법은 무엇인가요?

+0

가 (30K 노래 +)을, 나는 생각하지 않는다 모든 노래를 가져 와서 장르를 확인하고 올바른 것을 장르에 추가하여 많은 성능 저하를 겪을 것입니다. – AedonEtLIRA

+0

2K 곡을 가지고 있으며 적당히 빠른 Samsung Charge에서도 진행 대화 상자를 표시하려면 시간이 오래 걸립니다. 600MHz 싸구려 태블릿에서는 속도가 매우 느립니다 (어떤 이유로 2 배 이상 느려짐). 그게 내가 필요로한다면 내가 할 수있는 일이지만, 나는 빠진 트릭이 있었으면 좋겠다. – MBro

답변

1

콘텐츠 URI를 조합하고 MediaStore를 쿼리하여이를 수행 할 수 있습니다. 이 MusicUtils의 코드

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); 

: 다음은 안드로이드 음악 플레이어에서 차용 일부 코드의 음악 목록이 괴물이 아니라면

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; 
    } 

} 
13
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); 
+0

여기에 해 온 것을 설명하는 텍스트를 추가 할 수 있습니까? – Flexo

+0

Audio.Genres.Members.getContentUri ("external", genreID)는 (content : // media/external/audio/genres/2/members)와 같이 uri를 만듭니다. 여기서 "external"는 우리가 외부 콘텐츠를 검색하고, "2"는 장르 ID입니다. ContentResolver.query (...) 주어진 uri를 쿼리하고 결과 집합에 대해 Cursor를 반환합니다. –

+0

@AlexanderMikhalevich이 나를 위해서 제발 나를 도울 수 있습니다 http://stackoverflow.com/questions/25235127/cleanest-method-to-play-songs-from-album-artist-genre-in-android –