Эффективное получение жанров аудио файлов в MediaStore - PullRequest
2 голосов
/ 03 февраля 2011

Я пытаюсь синхронизировать собственную базу данных для треков и альбомов (которая содержит дополнительные данные). До сих пор я успешно извлекал альбомы и треки из MediaStore.

То, что я не могу сделать должным образом, это использовать жанры для треков. Может ли кто-нибудь опубликовать код? Я хотел бы избежать запросов к базе данных для каждой дорожки, поэтому, если возможно, некоторый код для загрузки ассоциации (Genre.id <-> Audio.id) был бы полезен.

Я борюсь за то, чтобы использовать контент-провайдера для получения информации Genres.Members.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2011

Я бы посмотрел, как превосходные создатели рингдроидов делают это.http://ringdroid.googlecode.com/svn-history/r37/trunk/src/com/ringdroid/SongMetadataReader.java

Они в основном начинаются с поиска названий и идентификаторов жанров и, используя их, могут легко создать content_uri, который извлекает только песни из базы данных, соответствующие этим жанрам.Но на вашем месте я бы проверил, существует ли жанр «неизвестный» или «пустой» или нет для файлов, которые не содержат названия жанра в своем теге id3

0 голосов
/ 10 апреля 2012

В итоге я получил все аудиофайлы на sd с загрузчиком и выполнил следующий запрос:

        loader = new CursorLoader(mActivity, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
                new String[] {Audio.Media._ID, Audio.Media.DATA}, 
                null, null, null);

Затем я проверяю, заканчиваются ли они на .mp3, а затем использую jaudiotagger и читаю теги ide3 для жанра.

...