2011-03-25 74 views
8

我正在写一个音乐播放器应用程序,我想知道我应该在哪里查找用户的音乐文件。我想找到音乐应用程序通常会找到的所有歌曲,并且我很好奇该应用程序如何找到歌曲。是否有一个特定文件夹的枚举变量?只是一个递归搜索SD卡?我知道我手机的SD卡上有一个音乐文件夹;是它是如何在每个Android设备上,我应该只是递归搜索该文件夹?或者我应该让用户找到该文件夹​​?Android音乐文件位置?

回答

14

您可以使用下面的函数从sdcard中找到所有音乐文件。

public void getAllSongsFromSDCARD() 
{ 
    String[] STAR = { "*" };   
    Uri allsongsuri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; 

    cursor = managedQuery(allsongsuri, STAR, selection, null, null); 

    if (cursor != null) { 
     if (cursor.moveToFirst()) { 
      do { 
       String song_name = cursor 
         .getString(cursor 
           .getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)); 
       int song_id = cursor.getInt(cursor 
         .getColumnIndex(MediaStore.Audio.Media._ID)); 

       String fullpath = cursor.getString(cursor 
         .getColumnIndex(MediaStore.Audio.Media.DATA)); 


       String album_name = cursor.getString(cursor 
         .getColumnIndex(MediaStore.Audio.Media.ALBUM)); 
       int album_id = cursor.getInt(cursor 
         .getColumnIndex(MediaStore.Audio.Media.ALBUM_ID)); 

       String artist_name = cursor.getString(cursor 
         .getColumnIndex(MediaStore.Audio.Media.ARTIST)); 
       int artist_id = cursor.getInt(cursor 
         .getColumnIndex(MediaStore.Audio.Media.ARTIST_ID)); 



      } while (cursor.moveToNext()); 

     } 
     cursor.close(); 
    } 
} 
+0

真棒,这真的让我的眼睛看到一些Android操作系统的结构。这是一个非常简单的应用程序,但我学到了很多东西。谢谢。 – 2011-03-25 21:09:36

+0

欢迎你... – 2011-03-26 04:31:27

2

Android会自动扫描所有外部SD卡上的音频并对此数据进行索引,详情请参阅MediaStore.Audio类。这使您可以按照专辑,艺术家,流派和播放列表进行查询。如果您只想通过查询内容提供商MediaStore.Audio.Media.EXTERNAL_CONTENT_URI找到媒体文件列表。