Проект, над которым я сейчас работаю, требует, чтобы приложение обнаружило все звуковые дорожки на устройстве Android. Помимо треков, он также должен иметь возможность сгруппировать их по альбомам и исполнителям.
Я нашел поставщика содержимого MediaStore и приступил к созданию вспомогательного служебного класса базы данных, чтобы быстро возвращать идентификаторы треков, альбомов и исполнителей. Мне удалось запросить магазин мультимедиа, который возвращает некоторый результат, но, похоже, там хранится не вся аудиоинформация.
Например, запрос всех исполнителей возвращает только 9 результатов, а приложение Android Music Player возвращает 27.
Я использую следующий код для запроса художников:
ContentResolver resolver = getContentResolver();
String[] projection = new String[]{MediaStore.Audio.ArtistColumns.ARTIST};
Uri uri = android.provider.MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI;
Cursor c = null;
try {
c = resolver.query(uri, projection, null, null, null);
}
catch (UnsupportedOperationException e) {
Log.e("DatabaseHelper", "query: " + e);
c = null;
}
if(c != null) {
while(c.isAfterLast() == false) {
Log.e("ARTIST", "NAME: " + cursor.getString(0));
cursor.moveToNext();
}
}
Похоже, что Media Scanner (который обязательно запускается при загрузке моего устройства) не обнаруживает большую часть моей аудиотеки. Я делаю что-то неправильно?
Я просто пытаюсь быстро и эффективно найти все звуковые дорожки, звуковые альбомы и звуковых исполнителей. Если MediaStore не может мне помочь, я боюсь, что мне придется реализовать какую-то форму сканера файлов для просмотра структур каталогов и создания собственной базы данных, но я не хочу этого делать;)
Любые мысли были бы очень признательны.
Спасибо.