【问题标题】:how to play an audio file - .NET MAUI如何播放音频文件 - .NET MAUI
【发布时间】:2023-02-16 13:50:46
【问题描述】:

我想在我的移动应用程序(android 和 IOS)上播放声音 我在某些情况下播放声音。我该怎么做?

【问题讨论】:

标签: c# .net maui


【解决方案1】:

使用 2 个插件轻松在 MAUI 应用程序中播放音频:在 NuGet 包管理器中安装以下并在安装后使用依赖注入!

  1. 插件.Maui.Audio: https://www.nuget.org/packages/Plugin.Maui.Audio/0.1.0-preview1?_src=template
  2. 插件.MauiAudio: https://www.nuget.org/packages/Plugin.MauiAudio/1.0.4?_src=template

【讨论】:

【解决方案2】:

目前,Maui 没有任何音频播放框架。在 maui 中有一些相对已知的问题,您可以在这里关注它们:

https://github.com/dotnet/maui/issues/7152

https://github.com/CommunityToolkit/Maui/issues/113

感谢您对 maui 的反馈和支持。

【讨论】:

    【解决方案3】:

    .NET Maui(2023 年 2 月),仍在 VS2022 上预览。

    还有另一种在 .NET MAUI 中播放音频/视频 (mp3/mp4) 的方法:媒体元素控制 Communitytoolkit (CommunityToolkit.Maui.MediaElement),支持 Android/iOS/Windows/Tizen/Mac。使用 NUGet 安装。

    使用 BuildAction=MauiAsset 将本地文件放入“Resources/Raw”

    在 contentPage 中 (xaml/c#)

    <toolkit:MediaElement x:Name="correctMediaElement" IsVisible="false"
                Source="embed://crrect_answer2.mp3" />
    
    internal static void PlaySound(MediaElement me)
    {
        var preset = MauiProgram.Preset;
        if (me.CurrentState != CommunityToolkit.Maui.Core.Primitives.MediaElementState.Stopped &&
            me.CurrentState != CommunityToolkit.Maui.Core.Primitives.MediaElementState.Paused)
        {
            me.Stop();
        }
        if (preset != null)
        {
            switch (preset.BuzzerVolume)
            {
                case Volume.Off:
                    me.Volume = 0.0;
                    break;
                case Volume.Low:
                    me.Volume = 0.2;
                    break;
                case Volume.Medium:
                    me.Volume = 0.7;
                    break;
                case Volume.High:
                    me.Volume = 1.0;
                    break;
                default:
                    break;
            }
        }
    
        if (me.Position != TimeSpan.Zero)
        {
            //Will Play sound here
            me.SeekTo(TimeSpan.Zero);
        }
        else if (me.CurrentState != CommunityToolkit.Maui.Core.Primitives.MediaElementState.Playing)
        {
            me.Play();
        }
    }
    

    了解更多信息: DevBlogs.Microsoft.com Learn.Microsoft.com

    【讨论】:

      猜你喜欢
      • 2020-09-17
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多