如何暂停当前的Zune歌曲,用BackgroundAudioPlayer播放我自己的声音,然后恢复Zune歌曲?

时间:2011-11-16 02:33:27

标签: windows-phone-7 background-audio

我正试图在我的一个应用程序中发出警告声,以播放在Zune中播放的任何内容。我正在使用BackgroundAudioPlayer播放我的声音。

现在当我的警告声响起时,它会停止当前的Zune歌曲。有没有办法暂停Zune轨道,播放警告声,然后恢复Zune声音?

我已经看过音频是如何工作的,所以我觉得这不可能,只有1个媒体播放器,所有元素都排在队列中......但我很想找到一个解决方法。 / p>

2 个答案:

答案 0 :(得分:1)

此处有一个示例:http://msdn.microsoft.com/en-us/library/ff431744(v=vs.92).aspx

示例正在执行此操作(请注意,您需要引用XNA并初始化GameTimer对象以使用MediaPlayer类):

public MainPage()
{
    InitializeComponent();

    // Timer to simulate the XNA game loop (SoundEffect class is from the XNA Framework)
    GameTimer gameTimer = new GameTimer();
    gameTimer.UpdateInterval = TimeSpan.FromMilliseconds(33);

    // Call FrameworkDispatcher.Update to update the XNA Framework internals.
    gameTimer.Update += delegate { try { FrameworkDispatcher.Update(); } catch { } };

    // Start the GameTimer running.
    gameTimer.Start();

    // Prime the pump or we'll get an exception.
    FrameworkDispatcher.Update();
}

// Flag that indicates if we need to resume Zune playback upon exiting.
bool resumeMediaPlayerAfterDone = false;

private void ZunePause()
{
    // Please see the MainPage() constructor above where the GameTimer object is created.
    // This enables the use of the XNA framework MediaPlayer class by pumping the XNA FrameworkDispatcher.

    // Pause the Zune player if it is already playing music.
    if (!MediaPlayer.GameHasControl)
    {
        MediaPlayer.Pause();
        resumeMediaPlayerAfterDone = true;
    }
}

private void ZuneResume()
{
    // If Zune was playing music, resume playback
    if (resumeMediaPlayerAfterDone)
    {
        MediaPlayer.Resume();
    }
}

答案 1 :(得分:0)

正如您所假设的那样,无法暂停在Zune中播放的任何内容,通过BackgroundAudioPlayer播放曲目/声音,然后在Zune中恢复以前的playign曲目。

BackgroundAudioPlayer使用与Zune播放器相同的媒体队列,因此当BAP播放您的曲目时,队列中的所有内容都将被删除。即使不是,也不可能从BAP播放(或触发播放)来自MediaLibrary的曲目。

使用背景音频似乎完全是错误的选择。 (或者你有理由必须使用它吗?)
为什么不在用户已播放的任何音频的顶部播放您的通知声音? (使用MediaElement或SoundEffect。)我假设这个警告通知噪音只是一个短暂的错误蜂鸣声,所以这个palyign在任何其他音乐的顶部不应该有任何问题。您可以将音频通知与VibrateController结合使用,以帮助用户清楚地知道出现了问题。
或者,由于通知是在您的应用程序运行时,为什么不使用警告的可视指示?