2011-03-25 76 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找到媒體文件列表。