0

Windows Phone 7.5 / Silverlight 应用程序

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

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

问题: 如果我选择 Ok ie 停止手机上当前播放的音乐,音乐会停止,但同时我的应用程序也会退出。

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

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

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();
                }
            }
        }

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

4

1 回答 1

1

我发现抛出了以下错误:

尚未调用 FrameworkDispatcher.Update。常规框架调度程序。更新调用对于 fire and forget 音效和框架事件正常运行是必需的。

所以我添加了这段代码,现在它工作正常。现在单击确定后,音乐播放器停止,我的应用程序启动正常。我从 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 { }
}

如果有人看到上述任何问题/问题,请告诉我。谢谢。

于 2012-06-23T20:12:31.283 回答