2016-04-13 21 views
0

Ben android bir müzik Çalar uygulaması geliştirdik. Şarkı yöneticisi denen bir dersim var. Burada tüm .mp3 dosyalarını getiriyorum ancak aşağıdaki kod SD Kart ve Telefon belleğindeki tüm .mp3 dosyalarını almıyor. Lütfen bana yardım edebilir misin .SD kart ve Telefon belleği .mp3 formatı ile tüm şarkılar nasıl getirilir

Java Dosya

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

Ben de manifest dosyasında aşağıdaki vermek var. Pleae

cevap

0

bana yardım

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

aşağıda Bu SD karta Bu çalıştı

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

üzerinde size mp3 dosyalarının listesini verecekti bakın. Herkes,

String media_path = Environment.getExternalStorageDirectory().getPath(); 
String[] splitPath= media_path .split("/"); 
final String MEDIA_PATH = "/" + splitPath[1] + "/"; 
'u deneyebilir
İlgili konular