如何在Xamarin.Forms中播放系统声音

如何在Xamarin.Forms中播放系统声音,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我正在寻找轻便的内置系统跨平台声音播放器。我可以直接从我的视图模型调用它 我知道我可以使用提供者(策略)模式来实现特定于平台的实现,或者使用类似的媒体播放器。您可以使用依赖服务 ANDROID public class AudioService : IAudio { private MediaPlayer _mediaPlayer; public bool PlayFile() { _mediaPlayer = MediaPlayer.Create(g

我正在寻找轻便的内置系统跨平台声音播放器。我可以直接从我的视图模型调用它


我知道我可以使用提供者(策略)模式来实现特定于平台的实现,或者使用类似的媒体播放器。

您可以使用依赖服务

ANDROID

public class AudioService : IAudio
{

    private MediaPlayer _mediaPlayer;

    public bool PlayFile()
    {
        _mediaPlayer = MediaPlayer.Create(global::Android.App.Application.Context, Resource.Raw.test);
        _mediaPlayer.Start();

        return true;
    }

}
IOS

public class AudioService : IAudio
{

private AVAudioPlayer _ringtoneAudioPlayer;
public AudioService()
{
    _ringtoneAudioPlayer = AVAudioPlayer.FromUrl(NSUrl.FromFilename("call.caf"));
    _ringtoneAudioPlayer.NumberOfLoops = -1; // infinite
}

public void PlayFile()
{
    if (_ringtoneAudioPlayer != null)
    {
        _ringtoneAudioPlayer.Stop();
    }
    _ringtoneAudioPlayer.Play();
}
} 
UWP

public class AudioService : IAudio
{

    public async Task PlayAudioUWP(string fileName)
    {
        StorageFolder Folder = await Package.Current.InstalledLocation.GetFolderAsync("Assets");
        StorageFile sf = await Folder.GetFileAsync(fileName);
        var PlayMusic = new MediaElement();
        PlayMusic.AudioCategory = Windows.UI.Xaml.Media.AudioCategory.Media;
        PlayMusic.SetSource(await sf.OpenAsync(FileAccessMode.Read), sf.ContentType);
        PlayMusic.Play();
    }

}
如果你想,你可以尝试和这个插件


谢谢。在我的问题中,我要求采用内置系统的跨平台方式来播放简单的声音。你们能不能也加上UWP平台,这样你们的答案更完整、更有用?