我开始使用xamarin开发应用程序,我的解决方案中的一个项目是UWP。
当有人点击按钮时,我需要在那里播放声音,我正在使用MediaPlayer来实现我的目标,在windows 10(桌面)上它工作得很好,但在我的windows Mobile 10(Lumia 930)上它开始时有很长的延迟(约1秒)。
下面我提供我的代码来播放音频源:
MediaPlayer _player = BackgroundMediaPlayer.Current;
_player.SetUriSource(new Uri(String.Format("ms-appx:///Assets/Sound/5s.wav", UriKind.Absolute)));
_player.Play();
我的问题是:
除了MediaPlayer,还有其他方式可以在UWP中播放音频吗?
如果您没有特定的理由使用背景音频,您可以只使用媒体元素在前台播放音频:
<!-- create element in XAML or in code -->
<MediaElement Name="mediaElement" ... />
// Code - set source or reference to stream
MediaElement mediaElement = new MediaElement();
mediaElement.Source = new Uri("msappx:///Media/sound.mp3");
我还建议查看支持的编解码器列表。
在更复杂的场景中,您可能需要查看音频图API。
我不确定这是否是一种糟糕的做法,但如果我预加载媒体,我可以获得即时播放。
类似于伪代码(c#样式)中的示例:
class Foo
{
private MediaPlayer _player;
Foo() //constructor
{
_player = BackgroundMediaPlayer.Current;
_player.AutoPlay = false;
_player.SetUriSource(new Uri(String.Format("ms-appx:///Assets/Sound/5s.wav", UriKind.Absolute)));
}
void ButtonClicked(Object sender, EventArgs event)
{
_player.Play();
}
}