CrossMediaManager.Current.Play не воспроизводит локальный аудиофайл на iOS xamarin.forms - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь использовать CrossMediaManager для воспроизведения mp3-файлов после загрузки в Android, это работает очень хорошо, но в ios ничего не происходит

Я использую этот код для воспроизведения файла после загрузки

 await CrossMediaManager.Current.Play("/var/mobile/Containers/Data/Application/AE6136ED-28C4-482F-XXXX-XXXXXXXXXXXX/Documents/file.mp3");

и этот код для загрузки в DependencyService

  var url = new Uri("http://url.to.some/file.mp3");
var httpClient = new HttpClient ();
httpClient.GetByteArrayAsync(url).ContinueWith(data => {
    string documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.mydocument);
    string localFilename = "downloaded.mp3";
    string localPath = Path.Combine (documentsPath, localFilename);
    File.WriteAllBytes (localPath, data.Result);

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Попробуйте использовать этот способ воспроизведения местной музыки:

string documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string localFilename = "downloaded.mp3";
string localPath = Path.Combine(documentsPath, localFilename);
var pathToFileURL = new System.Uri(localPath).AbsolutePath;
await CrossMediaManager.Current.Play("file://" + pathToFileURL);
0 голосов
/ 05 мая 2018

Вы загружаете mp3-файл на Environment.SpecialFolder.MyDocuments, но пытаетесь воспроизвести его по жестко закодированному пути к файлу, который кажется недействительным. Вы должны построить путь к файлу воспроизведения, используя тот же шаблон с Environment.SpecialFolder.MyDocuments, который должен выглядеть примерно так:

$"{Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)}downloaded.mp3"

Более подробную информацию можно найти в официальной документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...