Android读取多个mp3文件

时间:2017-08-10 23:13:46

标签: android

这个问题有两个部分

第一

我从手机存储中读取了多个mp3文件(几百个)并将它们保存在我制作的Song类的ArrayList中

class Song
{
    String name, path, album, artist, duration;
    Bitmap cover;
}

我一直没有记忆,所以我应该如何保存?

第二

读取文件非常慢,我很有用#

File directory = new File("/storage/3666-6134/Music");
File[] files = directory.listFiles();
for (File file : files)
{
    Song temp = new Song(file.getAbsolutePath());
    songs.add(temp);
}

我猜想有更快和/或更好的方法来做到这一点

谢谢

编辑: 似乎缓慢也来自MediaMetadataRetriever setDataSource 是否有更快的交替?

2 个答案:

答案 0 :(得分:0)

为什么要在ArrayList中添加它?它是用于游戏目的吗?如果是,那么只需保存ArrayList中的路径,然后在需要播放或显示它时执行您需要执行的操作。

答案 1 :(得分:0)

我已将ContentResolver用于我的音乐应用程序。

首先,您必须通过游标获取MediaStore之后已经存储的数据并通过游标迭代游标,因此最后您的代码将如下所示:< / p>

ContentResolver musicResolver = getContentResolver();
Uri musicUri = android.provider.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());
}

您甚至可以从here

的音乐播放器创建标准代码