【问题标题】:How can I stop background audio played by other apps?如何停止其他应用程序播放的背景音频?
【发布时间】:2011-12-18 21:19:04
【问题描述】:

我有一个适用于 WP7 的应用程序,使用 BackgroundAudioPlayer,因为我们需要在后台播放。问题是,当后台已经有应用程序播放音频时,我无法让我的AudioPlaybackAgent 工作,之前的音乐继续播放。

文档是这样介绍的,

BackgroundAudioPlayer.Instance.Close();

只能关闭自己或Zune播放的音频,其他应用播放音频时就不行了。

那么有没有办法关闭所有正在播放的音频?

【问题讨论】:

  • 即使有可能(我怀疑)我建议不要这样做...作为用户,我会从我的手机中删除您的应用程序,因为您所描述的对于应用程序来说真的很烦人!
  • 可能我没有描述清楚,它是一个音乐应用,没有人愿意同时播放两首音乐。这就是 Zune 本身做同样事情的原因。
  • 我认为它应该在您开始播放时自动发生。我想我已经看到一些文档提到当您开始使用 MediaElement 播放时 - 当前正在播放的背景音频应该自动开始。
  • 谢谢@xyzzer,问题确实是关于开始的。 Play() 方法确实有效,但应该更早调用。我在下面写了一个答案。

标签: windows-phone-7 windows-phone-7.1


【解决方案1】:

好的,我修好了。

我为让它播放所做的事情是这样的,首先我为播放器设置了一个轨道:

BackgroundAudioPlayer.Instance.Track = ...;

然后OnPlayStateChanged 事件将在后台代理中触发,我在其中调用BackgroundAudioPlayer.Instance.Play() 方法。这似乎效果很好。

但是如果后台播放器已经被另一个应用程序使用,当我设置轨道时PlayState不会更改为TrackReady,因此事件不会触发。

要解决此问题,我只需在设置轨道后立即在主 UI 线程中调用 .Play() 方法。它有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多