1

我正在尝试构建一个能够播放一些嵌入式 mp3 音效文件的 UnoPlatform 应用程序。

使用 MediaPlayerElement,可以直接播放来自 HTTP 源的媒体,但是似乎必须跳过一些特定于平台的箍才能播放嵌入的资源文件。

以下事件处理程序适用于 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 上嵌入媒体,但它似乎不适用于我。

这有什么诀窍吗?有这个工作的样本吗?

4

1 回答 1

2

当前的实现仍然有点受限,但应该支持在 Android 和 iOS 上MediaPlayerElement播放。mp3

诀窍是将.mp3文件放在正确的位置,因为它们尚未(与图像文件相比)在构建期间自动复制到正确的特定于平台的位置。对于 Android,您需要将音频文件放在Assets文件夹中,例如:

Android 资产文件夹

并且Build Action需要设置为AndroidAsset

对于 iOS,这些文件会转到Resources文件夹并将Build Action设置为Bundle Resource

ms-appx:您现在可以使用URI 方案引用这些文件,就好像它们实际上位于“Assets”文件夹中一样:

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

这只是一个简单的示例,但希望您可以将其用作起点。如有疑问,在 GitHub 上浏览相应功能的源代码非常有用,例如这里是 Android 的媒体文件加载实现

对于 WebAssembly,MediaPlayerElement尚不支持,但如果您想尽快看到它支持,请在此问题上投票

于 2020-03-30T22:04:00.167 回答