1
我正在尋找輕量級內置系統跨平臺音效播放器。有些東西可能會像System.Console.Beep那樣發出蜂鳴聲,並且我可以直接從我的視圖模型中調用它。如何在Xamarin中播放系統聲音。表格
我知道我可以使用提供者(策略)模式來投放平臺特定的實現或使用一些媒體播放器,如XamarinMediaManager。
我正在尋找輕量級內置系統跨平臺音效播放器。有些東西可能會像System.Console.Beep那樣發出蜂鳴聲,並且我可以直接從我的視圖模型中調用它。如何在Xamarin中播放系統聲音。表格
我知道我可以使用提供者(策略)模式來投放平臺特定的實現或使用一些媒體播放器,如XamarinMediaManager。
您可以使用相關的服務
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平臺,所以你的回答更加完整和有用? – Kalitsov
我更新我的代碼,並添加一個有用的插件 –