歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android音樂播放器:使用Android系統自帶的數據庫

這幾天在做一個音樂播放器,需要讀取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. }  
Copyright © Linux教程網 All Rights Reserved