我正在开发的音乐播放器在Android中,但在阅读MP3文件卡住。这里是我的代码来读取所有的MP3文件。但它不返回任何文件从设备(虽然有一些文件,我使用adb复制)。我也希望它使用专辑列表,艺术家等,请在这方面的帮助。
final String MEDIA_PATH = Environment.getExternalStorageDirectory()+"";
private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
// Constructor
public SongsManager(){
}
/**
* Function to read all mp3 files from sdcard
* and store the details in ArrayList
* */
public ArrayList<HashMap<String, String>> getPlayList(){
File home = new File(MEDIA_PATH);
//if (home.listFiles(new FileExtensionFilter()).length > 0) {
if (home.listFiles(new FileExtensionFilter())!=null) {
for (File file : home.listFiles(new FileExtensionFilter())) {
HashMap<String, String> song = new HashMap<String, String>();
song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4)));
song.put("songPath", file.getPath());
// Adding each song to SongList
songsList.add(song);
}
}
// return songs list array
return songsList;
}
/**
* 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"));
}
}
4条答案
按热度按时间gk7wooem1#
在这里我修改了getPlayList()方法。
您可以获得歌曲名称和歌曲路径,如下所示:
**注意:**使用“/storage/sdcard 1/”从sdCard阅读文件,使用Environment.getExternalStorageDirectory().getAbsolutePath()从手机存储器读取文件
希望这对你有帮助。
dzhpxtsq2#
希望你已经找到了你的答案,但可能这是更好的,如果你想尝试,这里是你的解决方案使用下面的代码从特定文件夹或所有文件中读取
MP3
文件,首先创建1个模型类,如下所示,到列表中的
GET
和SET
文件。AudioModel.class
现在我们有我们的模型类,使用下面的代码来读取所有的MP3文件从您的文件夹或设备.
这将返回包含音乐的所有MP3文件的列表
NAME, PATH, ARTIST, ALBUM
。如果您想了解更多详细信息,请参阅documentation forMedia.Store.Audio
若要读取特定文件夹中的文件,请使用以下查询(在查询中写入目标文件夹名称)
如果您想要装置上的所有档案,请使用此查询:
不要忘记添加存储权限。
lsmd5eda3#
试试这个
j9per5c44#
此功能将为您提供设备存储中所有音频文件路径的列表