我对Android开发颇为陌生,目前我正在尝试制作媒体播放器。我的下一个目标是实现一个播放列表系统,可以添加和删除项目,并且可以在触发onCompleteListener()时自动删除项目。我使用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点击项目,它可以开始通过服务播放的歌曲目前拉动从SD卡中的歌曲。我的问题是存储歌曲URI和位置数据的最佳方式是什么。我还希望应用程序能够在应用程序重新启动时将播放列表存储在最后位置,即使在onDestroy()后也是如此。我不确定哪种数据集最适合用来存储这些数据,以及如何检索它们。任何帮助将非常感激!
我打算使用SQLite的播放列表,但我想知道格式。我认为我会指定一个位置编号来跟踪订单,但是在完成歌曲后,所有其他条目都必须更新,这将会很笨重。我能想到的另一种方法是让它们永远增加,但最终会变得庞大。你会怎么做? –
为了解决这个问题,我宁愿为轨道制作一张单独的桌子。因此,我们创建的表格只包含songId和trackNumber列,而不是用歌曲数据和曲目制作表格。作为外键的SongId列将指向歌曲数据表中的歌曲。 –