MP3文件Android的动态播放列表



我是Android开发的新手,我目前正在尝试制作媒体播放器。我的下一个目标是实现一个播放列表系统,可以将项目添加到并删除,并且在触发oncompleteListener()时可以自动删除。我目前正在使用contentResolver

从SD卡中取歌
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()()重新启动时,都可以存储播放列表的最后位置。我不确定哪种数据集最好用于存储数据以及如何检索数据。任何帮助将不胜感激!

您需要将歌曲数据持续到设备 。

Android框架提供了几种持久性的选择和策略:

  • 共享的首选项 - 在私人持续词典中轻松将基本数据作为键值对。
  • 本地文件 - 将任意文件保存到内部或外部设备存储中。
  • sqlite数据库 - 在应用程序特定数据库中的表中持久数据。
  • ORM - 使用更高级别查询/更新语法描述和坚持模型对象。

用例

每个存储选项通常具有关联的用例,如下:

  • 共享首选项 - 用于应用程序首选项,密钥和会话信息。
  • 本地文件 - 通常用于BLOB数据或数据文件缓存(即磁盘图像缓存)
  • SQLITE数据库 - 用于复杂的本地数据操纵或原始速度
  • ORM - 用于本地存储简单的关系数据以减少SQL样板

阅读更多:将数据持续到设备。


您可以使用其中一个选项,但是出于您的目的, SQLITE数据库 orm 是更好的选项。

您可以使用SQLiteOpenhelper访问SQLITE数据库的本地数据库。

对于ORM,您可以尝试Greendao。

最新更新