Я пишу небольшое приложение для воспроизведения музыки.Моя цель - Android API уровня 7 и выше.
Приложение должно отображать и воспроизводить только музыку, которая была помечена с определенным набором жанров, выбранных пользователем через настройки, например, «Pop», «Rock», "Деревенщина".
Сейчас я пытаюсь найти эффективный способ найти все идентификаторы альбомов и названия альбомов, которые содержат дорожки, помеченные выбранными жанрами.
Это очень просто в SQL.Телефон хранит метаданные мультимедиа в базе данных sqlite.Я нашел его во внутренней памяти телефона, скопировал через adb и попробовал некоторые sqlite-запросы к нему.Результирующий запрос представляет собой однострочник SQL с цепочкой объединений, и он отлично работает.
Это кажется более сложным в Java с Android SDK, по крайней мере, с уровнем API 7 и выше.Я могу использовать managedQuery в MediaStore для выполнения некоторого ограниченного синтаксиса SQL в той же базовой базе данных, но если я правильно понимаю, что нет JOIN и нет DISTINCT при использовании этого API.
Также я мог упустить это,но MediaStore позволяет мне искать все треки жанра one , но не все треки нескольких жанров в одном запросе.
Так что все это требует немного ручной работы в Java.Теперь программе нужно выполнить несколько вызовов managedQuery () для каждого жанра, и программа должна объединить результаты и сделать их различимыми с Java, за исключением sqlite (к которому относится эта работа).
Это действительно так?должно быть сделано?Нет ли способа просто отправить необработанный запрос в файл базы данных sqlite?
Спасибо!