특정 노래의 장르를 검색하는 방법을 알고 있지만 (getting the genres 참조) 특정 장르의 모든 노래를 검색하고 싶습니다. "장르"는 미디어 항목의 열 중 하나가 아닌 것 같기 때문에 아티스트 나 앨범과 달리 단일 쿼리에서 어떻게해야할지 모르겠습니다. 효율적인 방법이 있습니까? 고맙습니다!Android Mediastore : 특정 장르의 모든 노래를 효율적으로 검색하는 방법은 무엇인가요?
답변
콘텐츠 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;
}
}
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);
여기에 해 온 것을 설명하는 텍스트를 추가 할 수 있습니까? – Flexo
Audio.Genres.Members.getContentUri ("external", genreID)는 (content : // media/external/audio/genres/2/members)와 같이 uri를 만듭니다. 여기서 "external"는 우리가 외부 콘텐츠를 검색하고, "2"는 장르 ID입니다. ContentResolver.query (...) 주어진 uri를 쿼리하고 결과 집합에 대해 Cursor를 반환합니다. –
@AlexanderMikhalevich이 나를 위해서 제발 나를 도울 수 있습니다 http://stackoverflow.com/questions/25235127/cleanest-method-to-play-songs-from-album-artist-genre-in-android –
가 (30K 노래 +)을, 나는 생각하지 않는다 모든 노래를 가져 와서 장르를 확인하고 올바른 것을 장르에 추가하여 많은 성능 저하를 겪을 것입니다. – AedonEtLIRA
2K 곡을 가지고 있으며 적당히 빠른 Samsung Charge에서도 진행 대화 상자를 표시하려면 시간이 오래 걸립니다. 600MHz 싸구려 태블릿에서는 속도가 매우 느립니다 (어떤 이유로 2 배 이상 느려짐). 그게 내가 필요로한다면 내가 할 수있는 일이지만, 나는 빠진 트릭이 있었으면 좋겠다. – MBro