背景音频无法在Windows 8商店/地铁应用程序中工作

时间:2012-11-21 12:56:11

标签: c# windows-8 winrt-xaml

我尝试通过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();

但是对我来说都不适用。一旦我最小化应用程序,音乐就会淡出

1 个答案:

答案 0 :(得分:0)

akton使用this excellent answer

回复了类似的问题

最初发现起来并不容易,因为它没有使用音频&#39;在标题中,我没有播放音乐。这是一个非常好的,全面的答案,我喜欢在StackExchange上看到这些答案。它还提到了一些其他类似问题的答案未能指出的事情。简而言之

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

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