2012-03-14 10 views
1

ユーザーがwp7のヘッドフォンを接続したり取り外したりするときに検出する方法はありますか?wp7のヘッドフォンのプラグ/プラグの取り外し

問題は、曲が背景AudioPlayerAgentで再生され、ユーザープラグが電話を抜いたとき、AudioPlayerAgentのprotected override void OnUserActionメソッドが一時停止UserActionを受け取り、音楽を一時停止するという問題です。

一時停止状態を反映するようにGUIを更新できるように、UIスレッドのプラグ/アンプラグを検出する必要があります。

+2

は、あなたは自分自身の質問に答えていましたか? OnUserActionが起動したときにエージェントのPlayStateを確認してください。一時停止している場合は、一時停止としてUIを更新してください。 –

+0

@willmelそれは簡単ではありません。 WP7では、フォアグラウンドアプリケーションとバックグラウンドエージェント間の通信は線形ではありません。 http://msdn.microsoft.com/en-us/library/hh202944(v=vs.92).aspx – dcarneiro

答えて

1

あなたのページ内BackgroundAudioPlayerのPlayStateChangedイベントをサブスクライブする必要があります。

public void MainPage() 
    { 
     InitializeComponent(); 
     BackgroundAudioPlayer.Instance.PlayStateChanged += InstanceOnPlayStateChanged; 
    } 

    private void InstanceOnPlayStateChanged(object sender, EventArgs eventArgs) 
    { 
     // Update UI 
    } 
0

現在、ヘッドフォンの現在の状態を問い合わせるAPIはありません。

Media要素を使用して問題の解決策をハッキングできます。ヘッドフォンのプラグが抜かれているときは常にMedia要素がCurrentStateChangedイベントを発生させるため、このイベントに接続してGUIの状態を変更することができます。それは最もエレガントな解決策ではありませんが、現時点では唯一の方法かもしれません。

+0

.xaml.csファイルにMediaElementを追加し、CurrentStateChangedイベントを購読しましたが、プラグを抜いてもトリガーされませんヘッドホン。おそらく、MediaElementは何も再生していないからです。 – dcarneiro

関連する問題