如何使用 UnoPlatform 在 IOS/Android/WebAssembly 中嵌入 mp3 文件

How to embed mp3 files in IOS/Android/WebAssembly with UnoPlatform

我正在尝试构建一个能够播放一些嵌入式 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 上嵌入媒体,但它似乎对我不起作用。

这有什么技巧吗?有这个工作的样本吗?

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

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

并且 Build Action 需要设置为 AndroidAsset.

在 iOS 的情况下,文件转到 Resources 文件夹并将 Build Action 设置为 捆绑资源.

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

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

这只是一个简单的示例,但希望您可以将其用作起点。每当有疑问时,浏览 GitHub 上各个功能的源代码非常有用,例如这里是 Android.

media file loading implementation

对于 WebAssembly,MediaPlayerElement 尚不支持,但如果您希望尽快支持它,请 vote up on this issue