Как встроить mp3 файлы в IOS / Android / WebAssembly с UnoPlatform - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь создать приложение UnoPlatform, которое может воспроизводить некоторые встроенные файлы звуковых эффектов в формате mp3.

Используя MediaPlayerElement, проигрывать мультимедиа из источников HTTP довольно просто, однако, похоже, что быть определенными платформой c обручи, через которые нужно перейти, чтобы получить встроенные файлы ресурсов для воспроизведения.

Следующий обработчик событий работает для UWP, но не IOS, Android или WebAssembly:

private void SpinButton_OnClick(object sender, RoutedEventArgs e)
{
   player1.Source = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/Sound.mp3"));
}

Я попытался проследить здесь информацию https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/mediaelement о том, как встроить носитель в IOS, но, похоже, у меня не работает.

Есть ли уловка с этим? Есть ли образец с этой работой?

1 Ответ

1 голос
/ 31 марта 2020

Текущая реализация MediaPlayerElement все еще немного ограничена, но воспроизведение mp3 на Android и iOS должно поддерживаться.

Хитрость заключается в том, чтобы поместить файлы .mp3 в правильное расположение, поскольку они еще не (по сравнению с файлами изображений) автоматически копируются в правильное местоположение платформы c во время сборки. В случае Android необходимо поместить аудиофайлы в папку Активы , например:

Android Assets folder

И Build Action необходимо установить на AndroidAsset .

В случае iOS файлы go в папку Resources и для Build Action установлено Bundle Resource .

Теперь вы можете ссылаться на файлы, как если бы они действительно находились в папке "Assets", используя ms-appx: Схема URI:

<Grid>
    <MediaPlayerElement AutoPlay="True" Source="ms-appx:///Assets/test.mp3" />
</Grid>

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

Для WebAssembly, MediaPlayerElement пока не поддерживается, но если вы хотите увидеть его в ближайшее время, пожалуйста, проголосуйте по этому вопросу .

...