你好,游客 登录 注册 搜索
背景:
阅读新闻

Android音乐播放器:使用Android系统自带的数据库

[日期:2011-10-11] 来源:Linux社区  作者:badboy1110 [字体: ]

这几天在做一个音乐播放器,需要读取SD卡上的所有音乐文件。

我的想法是遍历所有SD卡上的所有文件目录,把所有的.mp3 等音乐格式的文件全部读取出来,在显示在listview上。

这个做法是最容易想到的,也是可行的。

缺点是显而易见的,就是效率低,占用了大量的资源。


后来在飞哥的指导下,才知道Android系统中默认有个数据库,来保存所有的音乐格式的文件。在系统的位置:





这个数据库建的很详细,基本上想要的信息都能找到。


之后直接使用这个数据的数据就行了。

例如:

  1. /** 
  2.      * 显示音乐列表 
  3.      */  
  4.     private void showListView()  
  5.     {  
  6.         String[] projection =  
  7.         { MediaStore.Audio.AudioColumns._ID,  
  8.                 MediaStore.Audio.AudioColumns.ARTIST,  
  9.                 MediaStore.Audio.AudioColumns.TITLE,  
  10.                 MediaStore.Audio.AudioColumns.DURATION };  
  11.         Cursor c = getContentResolver().query(  
  12.                 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, null,  
  13.                 nullnull);  
  14.   
  15.         musicList = new int[c.getCount()];  
  16.         int index = 0;  
  17.         while (c.moveToNext())  
  18.         {  
  19.             musicList[index] = c.getInt(0);  
  20.             index++;  
  21.         }  
  22.   
  23.         startManagingCursor(c);  
  24.   
  25.         String[] from =  
  26.         { MediaStore.Audio.AudioColumns.TITLE,  
  27.                 MediaStore.Audio.AudioColumns.ARTIST,  
  28.                 MediaStore.Audio.AudioColumns.DURATION };  
  29.         int[] to =  
  30.         { R.id.tv_musicname, R.id.tv_singer, R.id.tv_musictime };  
  31.         MusicListAdapter adapter = new MusicListAdapter(this,  
  32.                 R.layout.musiclist_item, c, from, to);  
  33.         mListView.setAdapter(adapter);  
  34.     }  

顺便把直接读取CD卡上mp3文件的方法写出来,实现了一个接口:

  1. package com.ll28;  
  2.   
  3. import java.io.File;  
  4. import java.io.FilenameFilter;  
  5.   
  6. public class MusicFilter implements FilenameFilter  
  7. {  
  8.     @Override  
  9.     public boolean accept(File dir, String filename)  
  10.     {  
  11.         return filename.endsWith(".mp3");  
  12.     }  
  13.   
  14. }  
linux
相关资讯       Android开发 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款