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();
}
}
}
更新 我发布了下面的解决方案。如果我做错了,请告诉我。
答案 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 { }
}
如果有人发现上述任何问题/问题,请告诉我。感谢。