Skip to content

Instantly share code, notes, and snippets.

@bbenetskyy
Created January 3, 2023 17:10
Show Gist options
  • Save bbenetskyy/19179558d7f8f1b6d3dfb4a572853fa4 to your computer and use it in GitHub Desktop.
Save bbenetskyy/19179558d7f8f1b6d3dfb4a572853fa4 to your computer and use it in GitHub Desktop.
using Android.Content.Res;
using Android.Media;
using Android.OS;
using TheLordOfTheRings.Services;//used for injecting ILogger
using static Microsoft.Maui.ApplicationModel.Platform;
using Uri = Android.Net.Uri;
namespace TheLordOfTheRings.MAUI.Services;
public partial class SoundService : IDisposable
{
private readonly ILogger _logger;
MediaPlayer _mediaPlayer;
public SoundService(ILogger logger)
{
_logger = logger;
}
public void PlayAndroidSound(string sound)
{
Dispose();
try
{
_mediaPlayer = new MediaPlayer();
_mediaPlayer.Prepared += MediaPlayerOnPrepared;
_mediaPlayer.SetDataSource(CurrentActivity!.Assets!.OpenFd(sound));
_mediaPlayer.PrepareAsync();
}
catch (Exception ex)
{
_logger.LogError(ex);
}
}
private void MediaPlayerOnPrepared(object sender, EventArgs e)
{
_mediaPlayer.Start();
}
public void Dispose()
{
_mediaPlayer?.Release();
_mediaPlayer?.Dispose();
_mediaPlayer = null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment