2016-04-13 13 views
0

私はアンドロイドで音楽プレーヤーアプリケーションを開発しました。私は歌のマネージャーと呼ばれるクラスを持っています。ここではすべての.mp3ファイルをフェッチしていますが、次のコードはSDカードと電話機のメモリからすべての.mp3ファイルをフェッチしていません。手伝ってくれませんか 。SDカードと電話機のメモリから.mp3形式のすべての曲を取り出す方法

Javaファイル

public class SongsManager { 
    // SDCard Path 
    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() { 

    } 

    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); 
     } 
    } 
} 

私はまた、マニフェストファイルに次のように与えてきました。 Pleaeこれはこれは働いていたSDカードに

public static void findFilesRecursively(String directoryName, List<File> files, Pattern pattern) { 
    File directory = new File(directoryName); 

    // get all the files from a directory 
    File[] fList = directory.listFiles(); 
    for (File file : fList) { 
     if (file.isFile()) { 
      if(pattern.matcher(file.getName()).find()) { 
       files.add(file); 
      } 
     } else if (file.isDirectory()) { 
      findFilesRecursively(file.getAbsolutePath(), files, pattern); 
     } 
    } 
    File dir = Environment.getExternalStorageDirectory(); 
    List<File> fileResult = new ArrayList<File>(); 
    findFilesRecursively(dir.getAbsolutePath(), fileResult,Pattern.compile(".*\\.mp3$")); 

答えて

0

を私を助け

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
    <uses-permission-sdk-23 android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

下記参照してください。誰でも試すことができます

String media_path = Environment.getExternalStorageDirectory().getPath(); 
String[] splitPath= media_path .split("/"); 
final String MEDIA_PATH = "/" + splitPath[1] + "/"; 
0

をmp3ファイルのあなたのリストを与えるだろう

関連する問題