0

Windows Phone 7.5 / Silverlight アプリ

ユーザーが携帯電話で音楽/ラジオを再生していて、アプリケーションを起動しようとした場合、現在再生中のオプションを停止するオプションをユーザーに提供したいと考えています。

正常に動作: メッセージ ポップアップは正常に表示されます。[キャンセル] を選択すると、ポップアップが閉じ、音楽が再生され続け、アプリが通常どおり起動/動作します。

問題: 携帯電話で現在再生中の音楽を停止するために [OK] を選択すると、音楽は停止しますが、同時にアプリも終了します。

ここで私が間違っていることはありますか?

これが私が使用しているコードです。起動時にこのメソッドを呼び出します。

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 が呼び出されていません。通常の FrameworkDispatcher。ファイア アンド フォーゲット サウンド エフェクトとフレームワーク イベントが正しく機能するには、更新呼び出しが必要です。

だから私はこのコードを追加しましたが、今では正常に動作しています。[OK] をクリックすると、音楽プレーヤーが停止し、アプリが正常に起動します。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 に答える