Как загрузить mp3 файлы, расположенные на SDCard на Android-устройстве? - PullRequest
0 голосов
/ 27 сентября 2018

С помощью этого скрипта я могу загружать mp3-файлы с моего ПК:

public string path = C:\Users\PC\Desktop\myMusic.mp3

IEnumerator Start()
{

using (WWW www = new WWW(path))
{
yield return www;

source.clip = www.GetAudioClip();
source.Play();
}
}

Однако, он не работает на Android.Файлы mp3 находятся в папке MP3 на моей SD-карте.Я попытался с этим путем: "/storage/emulated/MP3/myMusic.mp3";"/storage/sdcard/MP3/myMusic.mp3";«/storage/emulated/sdcard/MP3/myMusic.mp3», но это не сработало.

Итак, я не знаю, не использовал ли я правильный путь или WWW.GetAudioClip () метод не работает на Android.

Извините за мой плохой английский, надеюсь, вы понимаете.Мне действительно нужна твоя помощь.

1 Ответ

0 голосов
/ 27 сентября 2018

Проблема в пути.Вы должны использовать C # FileInfo и DirectoryInfo API, чтобы вернуть соответствующий путь, а затем передать этот путь в WWW API.Передайте /mnt/sdcard API DirectoryInfo, и вы получите правильный путь для использования.Путь для использования с WWW API для доступа к данным на SD-карте: "file:///" + FileInfo.FullName..

Удар является примером.Предполагается, что музыкальные файлы .mp3 помещаются в папку с именем "music" на SD-карте.Если он находится в папке с именем «MP3» , измените "/mnt/sdcard/music" на "/mnt/sdcard/MP3". Убедитесь, что вы выбрали Настройки сборки для Android, измените Разрешение на запись с Внутренний до Внешний (SDCard) .

public AudioSource aSource;

public string path = @"/mnt/sdcard/music";
private FileInfo[] info;
private DirectoryInfo dir;

IEnumerator LoadAndPlaySound()
{
    //Get the proper path with DirectoryInfo
    dir = new DirectoryInfo(path);
    //Get all .mp3 files in the folder
    info = dir.GetFiles("*.mp3");

    //Use the first audio index found in the directory
    string audioPath = "file:///" + info[0].FullName;

    using (WWW www = new WWW(audioPath))
    {
        yield return www;

        //Set the AudioClip to the loaded one
        aSource.clip = www.GetAudioClip(false, false);
        //Play Audio
        aSource.Play();
    }
}

Это функция сопрограммы, поэтому вы можете назвать ее как StartCoroutine(LoadAndPlaySound());

...