Я довольно новичок в разработке Android, и сейчас я пытаюсь сделать медиаплеер. Моя следующая цель - реализовать систему плейлистов, в которую элементы могут быть добавлены, а также удалены и могут быть автоматически удалены при запуске onCompleteListener(). В настоящее время я потянув песни с SD-карты с помощью contentResolverДинамические плейлисты для файлов MP3 Android
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());
}
}
На данный момент у меня есть это настроить таким образом, что я могу нажать на элемент в ListView, и он может начать играть песню через службу. Мой вопрос - это лучший способ сохранить данные URI и позиции песни. Я также хотел бы, чтобы приложение могло сохранять последнюю позицию плейлистов, когда приложение перезапускается, даже после onDestroy(). Я не уверен, какие типы данных лучше всего использовать для хранения этих данных и как их получить. Любая помощь приветствуется!
Я планирую использовать SQLite для плейлиста, но мне интересно о форматировании. Я думал, что я бы назначил номер позиции для отслеживания порядка, но затем по завершении песни все остальные записи должны были быть обновлены, что было бы громоздким. Альтернатива, о которой я могу думать, это просто увеличить их навсегда, но опять же, что в конечном итоге становится громоздким. Как бы вы это сделали? –
Чтобы решить эту проблему, я предпочитаю сделать отдельную таблицу для трека. Итак, вместо создания таблицы с данными песни и дорожкой мы создаем таблицу с только столбцами songId и trackNumber. Столбец SongId, как внешний ключ, будет указывать на песню в таблице данных песни. –