2011-03-14 56 views
2

例如,我想要检索内部和外部存储上所有.mp3文件的列表。我还想每个.mp3文件的路径(String)作为参考(将它们存储在List?)我怎么能这样做?这是一个相对昂贵的操作?如果是这样,它应该放在一个线程上,并在运行时,向用户提供一个“加载”列出Android设备上的所有文件类型?

回答

6

请找到下面的函数。它将获得存储在外部和内部存储器中的所有mp3文件。

public void getAllSongs() { 

    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 { 
       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)); 
       fullsongpath.add(fullpath); 

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

       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(); 
     db.closeDatabase(); 
    } 
}