我正在使用mediaElement在我的应用中播放背景音乐。这很好用。
问题是用户最小化应用程序。当应用程序恢复时没有声音......我可以在我的应用程序中播放其他声音,但不能再播放该背景音乐了。
首先我有这段代码在第一次打开应用程序时停止所有背景音乐:
if (Microsoft.Xna.Framework.Media.MediaPlayer.State == MediaState.Playing)
{
Microsoft.Xna.Framework.Media.MediaPlayer.Pause();
FrameworkDispatcher.Update();
}
该mediaElement的xaml代码
<MediaElement AutoPlay="True" Source="/Dodaci/pozadina.mp3" x:Name="muzika_pozadina" MediaEnded="pustiPonovo" Loaded="pustiPonovo" />
和cs代码
private void pustiPonovo(object sender, RoutedEventArgs e)
{
muzika_pozadina.Play();
}
声音大小约为300kb。
那么,如何在用户恢复申请后恢复播放声音?
答案 0 :(得分:0)
当您的应用程序进入休眠状态时(例如,当您按下Start Buton时),MediaElement将停止。然后,在您返回应用程序(并且它不是Tombstoned)之后,页面再次未初始化,这意味着您的MediaElement未再次加载,因此您的音乐不会再次启动。
这取决于您的目的和代码如何返回。在非常简单的示例中,当您不需要记住音乐的最后位置时,您可以在OnNavigatedTo()事件中再次设置MediaElement的来源:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (e.NavigationMode == NavigationMode.Back)
muzika_pozadina.Source = new Uri("/Dodaci/pozadina.mp3", UriKind.RelativeOrAbsolute);
}
当你将MediaElement.AutoPlay设置为true时 - 它应该自动启动(因为你可能也不需要你的Loaded事件pustiPonovo)。
在更复杂的情况下,您可以利用应用程序的激活和取消激活事件 - 从Dormant / Tombstoned案例返回MediaElement可以很好地解释here in the article。
如果用户决定通过Tile而不是Launchers-Choosers返回您的App,您还应该阅读Fast App Resume。
我没有尝试过上面的代码,但希望它可以完成这项工作。