用户同意停止播放音频

时间:2012-06-23 16:28:30

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

Windows Phone 7.5 / Silverlight应用

如果用户正在手机上播放音乐/收音机,并且他们尝试启动我的应用程序,我想让用户选择停止当前播放选项。

工作正常: 消息弹出窗口显示正常。当我选择取消时,弹出窗口关闭,音乐继续播放,我的应用程序正常启动/工作。

问题: 如果我选择确定即停止当前正在播放的音乐,则音乐会停止,但同时我的应用也会退出。

我在这里做错了什么想法?

这是我正在使用的代码。我在启动时调用此方法:

private void CheckAudio()
        {
            if (FMRadio.Instance.PowerMode == RadioPowerMode.On)
            {
                MessageBoxResult Choice;
                Choice = MessageBox.Show("For better user experience with this application it is recommended you stop other audio applications. Do you want to stop the radio?", "Radio is currently playing!", MessageBoxButton.OKCancel);
                if (Choice == MessageBoxResult.OK)
                {
                    FMRadio.Instance.PowerMode = RadioPowerMode.Off;
                }
            }
            if (MediaPlayer.State == MediaState.Playing)
            {
                MessageBoxResult Choice;
                Choice = MessageBox.Show("For better user experience with this application it is recommended you stop other audio/video applications. Do you want to stop the MediaPlayer?", "MediaPlayer is currently playing!", MessageBoxButton.OKCancel);
                if (Choice == MessageBoxResult.OK)
                {
                    MediaPlayer.Stop();
                }
            }
        }

更新 我发布了下面的解决方案。如果我做错了,请告诉我。

1 个答案:

答案 0 :(得分:1)

我发现以下错误被抛出:

  

尚未调用FrameworkDispatcher.Update。定期   FrameworkDispatcher。火灾和遗忘需要更新电话   声音效果和框架事件正常运作。

所以我添加了这段代码,现在它运行正常。现在单击确定后,音乐播放器停止,我的应用程序启动正常。我从App.xaml.cs中的InitializeComponent调用SetupTimer方法

private GameTimer gameTimer; 

private void SetupTimer()
{

gameTimer = new GameTimer();
gameTimer.UpdateInterval = TimeSpan.FromMilliseconds(33);

// Call FrameworkDispatcher.Update to update the XNA Framework internals.
gameTimer.Update += new EventHandler<GameTimerEventArgs>(gameTimer_Update); //delegate { try { FrameworkDispatcher.Update(); } catch { } };

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

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

}

void gameTimer_Update(object sender, GameTimerEventArgs e)
{
try { FrameworkDispatcher.Update(); }
catch { }
}

如果有人发现上述任何问题/问题,请告诉我。感谢。