恢复应用程序后 MediaElement 不播放

Posted

技术标签:

【中文标题】恢复应用程序后 MediaElement 不播放【英文标题】:MediaElement doesn't play after resuming app 【发布时间】:2014-01-07 09:21:35 【问题描述】:

这是我的 xaml 代码:

<MediaElement x:Name="beepSound" Source="/Sounds/beep.mp3" AutoPlay="False" Visibility="Collapsed"/>

C#代码:

private void ButtonClick(object sender, RoutedEventArgs e)

    if (beepSound.CurrentState == System.Windows.Media.MediaElementState.Playing)
        beepSound.Pause();
    else
        beepSound.Play();

此代码完美运行。但是在我恢复应用程序后(通过按开始按钮,然后再次返回应用程序),声音不会播放。是什么导致了这种行为?我的代码有什么问题吗?

【问题讨论】:

【参考方案1】:

你的代码没有错

只是,媒体元素停止在后台工作。当我们按下开始按钮后返回应用程序时,媒体元素的 CurrentState 会显示“已关闭”。

即使应用程序进入后台(开始按键/锁定按键),您也需要使用播放声音的播放器。 BackgroundAudioPlayer 会满足您的要求。

我不太了解它的工作原理,但目前我可以建议您提供一些链接。

请查看BackgroundAudiolayer 还有它的namespace。

还有一个Sample

享受吧!

【讨论】:

【参考方案2】:

经过一番研究,我发现,在应用程序恢复后,它会丢失其源信息。所以你必须再次设置源。这是我的做法。

protected override void OnNavigatedTo(NavigationEventArgs e)

    beepSound.Source = new Uri("/Sounds/beep.mp3", UriKind.Relative);

【讨论】:

以上是关于恢复应用程序后 MediaElement 不播放的主要内容,如果未能解决你的问题,请参考以下文章

播放后强制 MediaElement 释放流

Windows UWP 应用程序中的 MediaElement 不播放音频

使用 MediaElement 从 Stream 播放视频

WPF的MediaElement指定Source无法播放问题解决

为啥是 MediaElement 不播放任何声音的原因

如何通过 MediaElement 从库中播放文件?