Динамические списки воспроизведения для файлов MP3 Android
Я довольно новичок в разработке Android, и в настоящее время я пытаюсь сделать медиаплеер. Моя следующая цель - реализовать систему списков воспроизведения, в которую элементы можно добавлять, а также удалять, и которые можно автоматически удалять при запуске onCompleteListener (). Я в настоящее время вытаскиваю песни с SD-карты с помощью contentResolver
public void getSongList(){
ContentResolver musicResolver=getContentResolver();
Uri musicUri= MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor=musicResolver.query(musicUri,null,null,null,null);
if(musicCursor!=null && musicCursor.moveToFirst()){
//get columns
int titleColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.TITLE);
int idColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media._ID);
int artistColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.ARTIST);
//add songs to list
do {
long thisId = musicCursor.getLong(idColumn);
String thisTitle = musicCursor.getString(titleColumn);
String thisArtist = musicCursor.getString(artistColumn);
songList.add(new Song(thisId, thisTitle, thisArtist));
}
while (musicCursor.moveToNext());
}
}
На этом этапе я настроил его таким образом, чтобы я мог щелкнуть элемент в списке и он мог начать воспроизведение песни через службу. Мой вопрос заключается в том, каков наилучший способ хранения данных URI и положения песни. Я также хотел бы, чтобы приложение могло сохранять последнюю позицию плейлистов при перезапуске приложения, даже после onDestroy (). Я не уверен, какие наборы данных лучше всего использовать для хранения этих данных и как их получить. Любая помощь приветствуется!
1 ответ
Вам необходимо сохранить данные песни на устройстве.
Платформа Android предлагает несколько вариантов и стратегий для сохранения:
- Общие предпочтения - легко сохраняйте базовые данные в виде пар ключ-значение в частном постоянном словаре.
- Локальные файлы - сохраняйте произвольные файлы во внутреннем или внешнем хранилище устройства.
- База данных SQLite - Сохраняет данные в таблицах в конкретной базе данных приложения.
- ORM - Опишите и сохраните объекты модели, используя синтаксис запроса / обновления более высокого уровня.
Случаи применения
С каждым вариантом хранения обычно связаны следующие варианты использования:
- Общие настройки - используются для настроек приложения, ключей и информации о сеансе.
- Локальные файлы - часто используются для кэширования больших двоичных данных или файлов данных (например, кеш образа диска)
- База данных SQLite - используется для сложных локальных манипуляций с данными или для необработанной скорости
- ORM - используется для локального хранения простых реляционных данных, чтобы уменьшить шаблон SQL
Подробнее: Сохранение данных на устройстве.
Вы можете использовать один из вариантов, но для ваших целей лучше использовать базу данных SQLite или ORM.
Вы можете посетить Локальные базы данных с SQLiteOpenHelper для базы данных SQLite.
Для ORM вы можете попробовать greenDAO.