Как вывести список всех файлов .mp3 на моем android устройстве в Xamarin - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь разработать приложение для воспроизведения музыки c в Xamarin.Forms. Я хочу воспроизвести песни из папки Musi c моего android устройства. Как мне получить все файлы .mp3?

Это моя модель песни.

namespace MusicPlayer.Models
 {
  public class Song
   {
    public string Title { get; set; }
    public string Artist { get; set; }
    public string Url { get; set; }
    public string AlbumImageUri { get; set; }
    public object Image { get; set; }
    public string ImageUri { get; set; }
    public bool IsRecent { get; set; }
    public TimeSpan Duration { get; set; }
    public string Genre { get; set; }
    public string ReleaseYear { get; set; }
   }
 }

1 Ответ

0 голосов
/ 08 мая 2020

Во-первых, вам нужно добавить разрешение для вашего проекта.

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

в коде за

   List<Dictionary<string, string>> GetPlayList(string rootPath)
    {
        List<Dictionary<string, string>> fileList = new List<Dictionary<string, string>>();



        try
        {
            File rootFolder = new File(rootPath);
            File[] files = rootFolder.ListFiles(); //here you will get NPE if directory doesn't contains  any file,handle it like this.
            foreach (var file in files)
            {
                if (file.IsDirectory)
                {
                    if (GetPlayList(file.AbsolutePath) != null)
                    {
                        fileList = new List<Dictionary<string, string>>(GetPlayList(file.AbsolutePath));
                    }
                    else
                    {
                        break;
                    }
                }
                else if (file.Name.EndsWith(".mp3"))
                {
                    Dictionary<string, string> song = new Dictionary<string, string>();

                    song.Add("file_path", file.AbsolutePath);
                    song.Add("file_name", file.Name);

                    fileList.Add(song);
                }
            }
            return fileList;
        }
        catch (Exception e)
        {
            return null;
        }
    }

И вы можете вызвать его как

List<Dictionary<string, string>> songList = GetPlayList("/storage/sdcard1/");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...