有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Android上MP3文件的java动态播放列表

我对安卓系统的开发还很陌生,目前正在尝试制作一款媒体播放器。我的下一个目标是实现一个播放列表系统,在触发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
                    (安卓.provider.MediaStore.Audio.Media.TITLE);
            int idColumn = musicCursor.getColumnIndex
                    (安卓.provider.MediaStore.Audio.Media._ID);
            int artistColumn = musicCursor.getColumnIndex
                    (安卓.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) 个答案

  1. # 1 楼答案

    您需要将歌曲数据保存到设备中

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

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

    用例

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

    • 共享首选项-用于应用程序首选项、键和会话信息
    • 本地文件-通常用于blob数据或数据文件缓存(即磁盘映像缓存)
    • SQLite数据库-用于复杂的本地数据操作或原始速度
    • ORM-用于在本地存储简单的关系数据,以简化SQL样板

    阅读更多:Persisting Data To Device


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

    您可以访问Local Databases with SQLiteOpenHelper获取SQLite数据库

    对于ORM,您可以尝试greenDAO