Как играть в mp3-файлы с внутренней и внешней SD-карты в Android?

Я работаю над приложением mp3-плеера, которое воспроизводит файлы .mp3, присутствующие где-нибудь внутри внутренней SD-карты.

Я использовал следующие коды для получения файлов .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()); } } } 

Как я также получаю файлы .mp3 с внешней SD-карты?

Попытка использования этого:

 File root = Environment.getExternalStorageDirectory(); 

Это даст вам корень внешнего хранилища, при условии, что он есть. Затем вы можете отфильтровать файлы, которые не являются .mp3

Также подумайте над этим: Перечислите все типы файлов на Android-устройстве?

Вы можете получить корневую директорию внешней SD-карты, используя этот код строки

 File root = Environment.getExternalStorageDirectory(); 

Теперь вы можете сделать то же самое, что и для внутреннего

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

Чтобы получить ссылку на файл, расположенный по адресу: sdcard / music / song.mp3:

 File file = Environment.getExternalStorageDirectory()+"/music/song.mp3"; 
 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")); } } } 

Небольшое изменение к кодам Тушара Гупта. Это сработало для меня. У меня есть полный код для музыкального проигрывателя

 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")); } } } 
Intereting Posts
Как загрузить несколько файлов одновременно с помощью intenservice в Android? Диалог с изменением ориентации Spinner + Правильный способ отклонения DialogFragment, когда приложение находится в фоновом режиме Пользовательский стиль оформления ключевых слов Android Studio Меню переполнения Android, расположенное над панелью действий / панелью инструментов? Какова цель частных библиотек Android, справочных библиотек и Android Dependies в иерархии проектов Android? Android Timer: postDelayed против расписания Невозможно переключиться в режим Doze OnCreateContextMenu () для EditText не работает на реальном устройстве Горизонтальная прокрутка в сетке андроида Использование GeoFire для заполнения Firebase Recycler View в android Android Theme.AppCompat.Light с Dark Toolbar (для легкого текста) Как создать класс с T и List <T> Android adb shell ping – эта версия ping не должна запускаться с привилегиями. Aborting Как я могу создать встроенную анимацию логотипа, например, скайп-приложение?