qq_37199667 2017-11-23 01:32 采纳率: 0%
浏览 1180

Android如何把获取到音乐文件的数据用simpleAdapter填充到listview列表当中去

  • 专门创建一个类用来获取歌曲的信息 */

public class AudioUtils {
/*
*
* */
//创建一个音乐实体类的实例的方法
public static ArrayList getAllSongs(Context context) {
// 初始化一个音乐实体类集合对象,用来存储下面获取到的音乐信息
ArrayList songs = null;
// 通过内容提供者的查询接口来获取到手机里面的音乐文件
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
// 这里新建一个数组告诉提供者要返回的列
new String[] { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.YEAR,
MediaStore.Audio.Media.MIME_TYPE,
MediaStore.Audio.Media.SIZE,
MediaStore.Audio.Media.DATA },
//设置查询的条件
MediaStore.Audio.Media.MIME_TYPE + "=? or "
+ MediaStore.Audio.Media.MIME_TYPE + "=?",
new String[] { "audio/mpeg", "audio/x-ms-wma" }, null);
// 实例化一个Song数组实体类对象
songs = new ArrayList();

    if (cursor.moveToFirst()) {
    //当光标移动到第一行时,执行下面的方法
        Song song = null;//新建一个歌曲类实例化对象,把cursor读出来的信息文件,存进去

        do {

// 实例化Song类对象
song = new Song();
//在把获取到的值通过实体类对象赋值到实体类当中去
// 文件名
song.setFileName(cursor.getString(1));
// 歌曲名
song.setTitle(cursor.getString(2));
// 时长
song.setDuration(cursor.getInt(3));
// 歌手名
song.setSinger(cursor.getString(4));
// 专辑名
song.setAlbum(cursor.getString(5));
// 年代
if (cursor.getString(6) != null) {
song.setYear(cursor.getString(6));
} else {
song.setYear("未知");
}
// 歌曲格式
if ("audio/mpeg".equals(cursor.getString(7).trim())) {
song.setType("mp3");
} else if ("audio/x-ms-wma".equals(cursor.getString(7).trim())) {
song.setType("wma");
}
// 文件大小
if (cursor.getString(8) != null) {
float size = cursor.getInt(8) / 1024f / 1024f;
song.setSize((size + "").substring(0, 4) + "M");
} else {
song.setSize("未知");
}
// 文件路径
if (cursor.getString(9) != null) {
song.setFileUrl(cursor.getString(9));
}
//把获得到的数据传输到ArrayList列表当中去
songs.add(song);
// 当光标移动到下一行的时候,继续循环,当获取到的内容没有时,光标停止移动,不满足循环跳出去
} while (cursor.moveToNext());
//关闭光标释放资源
cursor.close();

    }
    return songs;

}
上面是获取音乐文件的代码,音乐实体类,主界面上面就是一个一个Button,点击的时候把获取到的数据显示到下面的按钮中间去

  • 写回答

1条回答 默认 最新

  • Mr康 2017-11-23 02:21
    关注

    把你的音乐集合传给adapter,然后listview.setAdapter

    评论

报告相同问题?

悬赏问题

  • ¥20 为什么我写出来的绘图程序是这样的,有没有lao哥改一下
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号