Skip to content

Getting Started

GitHub

Shiny.Music provides a unified API for accessing the device music library on Android and iOS. It supports permission management, querying track metadata, playing music files, and copying tracks (where platform restrictions allow).

  • Request and check music library permissions on both platforms
  • Query all music tracks or search by title, artist, or album
  • Play, pause, resume, stop, and seek within tracks
  • Copy music files to app storage (non-DRM content only on iOS)
  • Event-driven playback state changes and completion notifications
FeatureAndroidiOS
Permission Request
Query Tracks
Search Tracks
Playback
Copy Track✅ (non-DRM only)
Album Art URI❌ (use MPMediaItem.Artwork)
Explicit Flag✅ (via MPMediaItem.IsExplicitItem)

Add a project reference to Shiny.Music in your .NET MAUI or platform-specific project.

Register the services in your MauiProgram.cs:

using Shiny.Music;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder.UseMauiApp<App>();
builder.Services.AddShinyMusic();
return builder.Build();
}
}
public class MyPage
{
readonly IMediaLibrary _library;
readonly IMusicPlayer _player;
public MyPage(IMediaLibrary library, IMusicPlayer player)
{
_library = library;
_player = player;
}
async Task PlayFirstTrack()
{
// 1. Request permission
var status = await _library.RequestPermissionAsync();
if (status != PermissionStatus.Granted)
return;
// 2. Get all tracks
var tracks = await _library.GetAllTracksAsync();
if (tracks.Count == 0)
return;
// 3. Play the first track
await _player.PlayAsync(tracks[0]);
// 4. Listen for completion
_player.PlaybackCompleted += (s, e) =>
{
Console.WriteLine("Track finished!");
};
}
}