2012-08-17 146 views
5

我正在制作一个mp3播放器应用程序,播放内部SD卡内任何地方的.mp3文件。如何从android内部和外部SD卡播放mp3文件?

我已经使用以下代码来获取存在于内部存储中的.mp3文件。

ArrayList<File> inFiles = new ArrayList<File>(); 
File list[] = file.listFiles(); 
//Log.i("DIR", "PATH" +file.getPath()); 
for (int i = 0; i < list.length; i++) 
{ 
    // myList.add(list[i].getName()); 
    File temp_file = new File(file.getAbsolutePath(),list[i].getName()); 
    //Log.i("DIR", "PATH" +temp_file.getAbsolutePath()); 
    if (temp_file.listFiles() != null) 
    { 
     //Log.i("inside", "call fn"); 
     listfiles(temp_file); 

    } 
    else 
    { 
     if (list[i].getName().toLowerCase().contains(".mp3")) 
     { 
      inFiles.add(list[i]); 
     //Log.e("Music", list[i].getName()); 
     } 
    } 
} 

我该如何获得外部SD卡的.mp3文件?

回答

1

尝试使用这样的:

File root = Environment.getExternalStorageDirectory(); 

,将让你的外部存储的根,只要有一个。然后,您可以过滤掉不.MP3

而且文件考虑寻找这个:List all of one file type on Android device?

+1

感谢您的回复! “Environment.getExternalStorageDirectory();” 获取内部存储的路径,但我想从外部移动的SD卡中获取.mp3文件。 – Aadi 2012-08-18 04:00:43

1

要到位于文件的引用:SD卡/音乐/ Song.mp3的:

File file = Environment.getExternalStorageDirectory()+"/music/song.mp3"; 
2

可以使用线的验证码

File root = Environment.getExternalStorageDirectory(); 

现在,你内部

0123你可以做同样的事情得到了外部SD卡的根目录
ArrayList<File> inFiles = new ArrayList<File>(); 
File list[] = root.listFiles(); // here use the root object of File class to the list of files and directory from the external storage 
//Log.i("DIR", "PATH" +file.getPath()); 
for (int i = 0; i < list.length; i++) 
{ 
    // myList.add(list[i].getName()); 
    File temp_file = new File(file.getAbsolutePath(),list[i].getName()); 
    //Log.i("DIR", "PATH" +temp_file.getAbsolutePath()); 
    if (temp_file.listFiles() != null) 
    { 
     //Log.i("inside", "call fn"); 
     listfiles(temp_file); 

    } 
    else 
    { 
     if (list[i].getName().toLowerCase().contains(".mp3")) 
     { 
      inFiles.add(list[i]); 
     //Log.e("Music", list[i].getName()); 
     } 
    } 
} 
+0

感谢您的回复! “Environment.getExternalStorageDirectory();” 获取内部存储的路径,但我想从外部移动的SD卡中获取.mp3文件。 – Aadi 2012-08-18 04:02:03

1
import java.io.File; 
import java.io.FilenameFilter; 
import java.util.ArrayList; 
import java.util.HashMap; 

    enter code here 

import android.os.Environment; 

public class SongsManager { 


    final String MEDIA_PATH = Environment.getExternalStorageDirectory()`` 
      .getPath() + "/"; 
    private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); 
    private String mp3Pattern = ".mp3"; 
    // Constructor 
    public SongsManager(){ 

    } 

    /** 
    * Function to read all mp3 files from sdcard 
    * and store the details in ArrayList 
    * */ 
    public ArrayList<HashMap<String, String>> getPlayList(){ 
     System.out.println(MEDIA_PATH); 
      if (MEDIA_PATH != null) { 
       File home = new File(MEDIA_PATH); 
       File[] listFiles = home.listFiles(); 
       if (listFiles != null && listFiles.length > 0) { 
        for (File file : listFiles) { 
         System.out.println(file.getAbsolutePath()); 
         if (file.isDirectory()) { 
          scanDirectory(file); 
         } else { 
          addSongToList(file); 
         } 
        } 
       } 
      } 
      // return songs list array 
      return songsList; 
     } 

     private void scanDirectory(File directory) { 
      if (directory != null) { 
       File[] listFiles = directory.listFiles(); 
       if (listFiles != null && listFiles.length > 0) { 
        for (File file : listFiles) { 
         if (file.isDirectory()) { 
          scanDirectory(file); 
         } else { 
          addSongToList(file); 
         } 

        } 
       } 
      } 
     } 

     private void addSongToList(File song) { 
      if (song.getName().endsWith(mp3Pattern)) { 
       HashMap<String, String> songMap = new HashMap<String, String>(); 
       songMap.put("songTitle", 
         song.getName().substring(0, (song.getName().length() - 4))); 
       songMap.put("songPath", song.getPath()); 

       // Adding each song to SongList 
       songsList.add(songMap); 
      } 
     } 
    /** 
    * Class to filter files which are having .mp3 extension 
    * */ 
    class FileExtensionFilter implements FilenameFilter { 
     public boolean accept(File dir, String name) { 
      return (name.endsWith(".mp3") || name.endsWith(".MP3")); 
     } 
    } 
} 
+0

应该说明解决方案,而不是只登顶代码 – 2015-02-10 04:57:18

+0

以上代码是为了......如何在Android中从外部SD卡播放mp3文件? – 2015-03-23 06:32:30

0

少许修改图沙·古普塔的代码。 这对我来说很好。我有一个音乐播放器的完整代码

import android.os.Environment; 
import java.io.File; 
import java.io.FilenameFilter; 
import java.util.ArrayList; 
import java.util.HashMap; 
public class SongsManager { 


     final String MEDIA_PATH = Environment.getExternalStorageDirectory().getPath() + "/"; 
     private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); 
     private String mp3Pattern = ".mp3"; 
     // Constructor 
     public SongsManager(){ 

     } 

     /** 
     * Function to read all mp3 files from sdcard 
     * and store the details in ArrayList 
     * */ 
     public ArrayList<HashMap<String, String>> getPlayList(){ 
      System.out.println(MEDIA_PATH); 
      if (MEDIA_PATH != null) { 
       File home = new File(MEDIA_PATH); 
       File[] listFiles = home.listFiles(); 
       if (listFiles != null && listFiles.length > 0) { 
        for (File file : listFiles) { 
         System.out.println(file.getAbsolutePath()); 
         if (file.isDirectory()) { 
          scanDirectory(file); 
         } else { 
          addSongToList(file); 
         } 
        } 
       } 
      } 
      // return songs list array 
      return songsList; 
     } 

     private void scanDirectory(File directory) { 
      if (directory != null) { 
       File[] listFiles = directory.listFiles(); 
       if (listFiles != null && listFiles.length > 0) { 
        for (File file : listFiles) { 
         if (file.isDirectory()) { 
          scanDirectory(file); 
         } else { 
          addSongToList(file); 
         } 

        } 
       } 
      } 
     } 

     private void addSongToList(File song) { 
      if (song.getName().endsWith(mp3Pattern)) { 
       HashMap<String, String> songMap = new HashMap<String, String>(); 
       songMap.put("songTitle", 
         song.getName().substring(0, (song.getName().length() - 4))); 
       songMap.put("songPath", song.getPath()); 

       // Adding each song to SongList 
       songsList.add(songMap); 
      } 
     } 
     /** 
     * Class to filter files which are having .mp3 extension 
     * */ 
     class FileExtensionFilter implements FilenameFilter { 
      public boolean accept(File dir, String name) { 
       return (name.endsWith(".mp3") || name.endsWith(".MP3")); 
      } 
     } 
    } 
相关问题