我對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列將指向歌曲數據表中的歌曲。 –