0

我尝试通过 XAML 中的 mediaElement 设置背景音频

<MediaElement x:Name="MyAudio" Source="Assets/Sound.mp3" AudioCategory="BackgroundCapableMedia" AutoPlay="False" />

并以编程方式

async void setUpAudio()
{
    var package = Windows.ApplicationModel.Package.Current;
    var installedLocation = package.InstalledLocation;
    var storageFile = await installedLocation.GetFileAsync("Assets\\Sound.mp3");
    if (storageFile != null)
    {
        var stream = await storageFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
        _soundEffect = new MediaElement();
        _soundEffect.AudioCategory = AudioCategory.BackgroundCapableMedia;
        _soundEffect.AutoPlay = false;
        _soundEffect.SetSource(stream, storageFile.ContentType);
    }
}

// and later...
_soundEffect.Play();

但两者都不适合我。一旦我最小化应用程序,音乐就会消失

4

1 回答 1

0

阿克顿用这个出色的答案回答了类似的问题

最初并不容易找到,因为它没有在标题中使用“音频”,而且我没有播放音乐。这是一个出色而全面的答案,我喜欢在 StackExchange 上看到类似的答案。它还提到了其他类似问题的答案未能指出的一些事情。简单来说

  • 即使没有按钮,您也需要处理MediaControl事件PlayPressed、、和。编辑:这些事件是 Windows 8 应用程序认证所必需的,请确保它们确实有效。PausePressedPlayPausedTogglePressedStopPressed
  • 将音频添加到应用程序清单中的支持后台任务列表中 [有关详细信息,请参阅 aktons 答案]

然而,在实施这个解决方案时,我确实遇到了我只能假设是一个错误。我在 UserControl 中构建了一个厨房计时器。它在倒计时时播放可选的滴答声,然后在经过时发出嗡嗡声。但是,如果在设置定时器之前关闭滴答声,则不会播放蜂鸣声。似乎 Windows 8 应用程序需要在最小化之前播放声音才能使背景音频正常工作。为了解决这个问题,我创建了一个持续时间为 1 秒的无声音频文件。无论滴答声是打开还是关闭,此文件都会播放。这是一个奇怪的黑客,我希望我能找到一个更好的解决方案,但现在我能想到的只是它。

于 2012-11-21T14:33:04.913 回答