MAUI – ODTWARZANIE DŹWIĘKU (MP3)

AudioMauiApp – .NET 9 / .NET 10 + Plugin.Maui.Audio


Utworzenie projektu

W Visual Studio:

Nowy projekt → .NET MAUI App
Nazwa: AudioMauiApp
Framework: .NET 9 (lub .NET 10)

Dodanie pakietu NuGet

Dodaj pakiet:

Plugin.Maui.Audio

Autor: jfversluis

Dlaczego ten pakiet?

  • MAUI nie ma prostego, wbudowanego audio
  • ten plugin:
    • działa offline
    • działa na Androidzie i Windows
    • nie wymaga kontrolek XAML
    • jest stabilny egzaminacyjnie

Dodanie pliku dźwiękowego

Struktura:

Resources
 └── Raw
     └── audio.mp3

Właściwości pliku:

  • Build Action: MauiAsset
  • nazwa pliku małymi literami

MauiProgram.cs – konfiguracja audio (OBOWIĄZKOWA)

using Microsoft.Extensions.Logging;
using Plugin.Maui.Audio;

namespace AudioMauiApp
{
    public static class MauiProgram
    {
        public static MauiApp CreateMauiApp()
        {
            var builder = MauiApp.CreateBuilder();

            builder
                .UseMauiApp<App>()
                .ConfigureFonts(fonts =>
                {
                    fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                    fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
                });

            // Rejestracja menedżera audio w kontenerze usług aplikacji
            builder.Services.AddSingleton(AudioManager.Current);

#if DEBUG
            builder.Logging.AddDebug();
#endif

            return builder.Build();
        }
    }
}

Dlaczego to konieczne?

  • Plugin.Maui.Audio korzysta z Dependency Injection
  • AudioManager zarządza odtwarzaniem dźwięku
  • bez tej rejestracji dźwięk się nie uruchomi

Interfejs – MainPage.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    x:Class="AudioMauiApp.MainPage">

    <VerticalStackLayout Padding="30" Spacing="20">

        <Label
            Text="AudioMauiApp – odtwarzanie dźwięku"
            FontSize="22"
            HorizontalOptions="Center" />

        <Button
            Text="▶ Odtwórz dźwięk"
            Clicked="Play_Clicked" />

        <Button
            Text="⏹ Zatrzymaj"
            Clicked="Stop_Clicked" />

    </VerticalStackLayout>
</ContentPage>

Logika – MainPage.xaml.cs

using Plugin.Maui.Audio;

namespace AudioMauiApp;

public partial class MainPage : ContentPage
{
    // Menedżer audio dostarczany przez Plugin.Maui.Audio
    private readonly IAudioManager _audioManager;

    // Odtwarzacz dźwięku
    private IAudioPlayer? _player;

    public MainPage()
    {
        InitializeComponent();

        // Pobranie instancji AudioManager
        _audioManager = AudioManager.Current;
    }

    // Obsługa przycisku „Odtwórz”
    private async void Play_Clicked(object sender, EventArgs e)
    {
        if (_player == null)
        {
            // Otworzenie pliku audio z katalogu Resources/Raw
            var stream = await FileSystem.OpenAppPackageFileAsync("audio.mp3");

            // Utworzenie odtwarzacza
            _player = _audioManager.CreatePlayer(stream);
        }

        _player.Play();
    }

    // Obsługa przycisku „Stop”
    private void Stop_Clicked(object sender, EventArgs e)
    {
        _player?.Stop();
    }
}