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.Audiokorzysta z Dependency InjectionAudioManagerzarzą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();
}
}

