Windows phone 7 检测wp7中耳机的插头/拔出

Windows phone 7 检测wp7中耳机的插头/拔出,windows-phone-7,Windows Phone 7,有没有办法检测用户何时在wp7上插入或拔出耳机 问题在于,当一首歌曲在后台AudioPlayerAgent上播放时,用户拔下手机插头,AudioPlayerAgent的protected override void onserAction方法会接收暂停用户操作并暂停音乐 我需要检测UI线程上的插件/拔出,以便更新GUI以反映暂停状态。我认为目前没有任何API可以查询头手机的当前状态 您可以使用媒体元素破解问题的解决方案。每当拔下耳机时,Media元素将引发CurrentStateChanged事

有没有办法检测用户何时在wp7上插入或拔出耳机

问题在于,当一首歌曲在后台AudioPlayerAgent上播放时,用户拔下手机插头,AudioPlayerAgent的
protected override void onserAction
方法会接收暂停用户操作并暂停音乐


我需要检测UI线程上的插件/拔出,以便更新GUI以反映暂停状态。

我认为目前没有任何API可以查询头手机的当前状态


您可以使用媒体元素破解问题的解决方案。每当拔下耳机时,Media元素将引发CurrentStateChanged事件,因此您可以连接此事件来更改GUI的状态。这不是最优雅的解决方案,但它可能是目前唯一的方法。

我认为目前没有任何API可以查询头手机的当前状态


您可以使用媒体元素破解问题的解决方案。每当拔下耳机时,Media元素将引发CurrentStateChanged事件,因此您可以连接此事件来更改GUI的状态。这不是最优雅的解决方案,但可能是目前唯一的方法。

您需要在页面中订阅BackgroundAudioPlayer的PlayStateChanged事件:

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

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

您需要在页面中订阅BackgroundAudioPlayer的PlayStateChanged事件:

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

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

你刚才不是回答了你自己的问题吗?在启动OnUserAction时检查代理的播放状态。如果已暂停,请将UI更新为已暂停。@willmel没有那么容易。在WP7上,前台应用程序和后台代理之间的通信不是线性的。你刚才不是回答了你自己的问题吗?在启动OnUserAction时检查代理的播放状态。如果已暂停,请将UI更新为已暂停。@willmel没有那么容易。在WP7上,前台应用程序和后台代理之间的通信不是线性的。我在.xaml.cs文件中添加了一个MediaElement并订阅了CurrentStateChanged事件,但在拔下耳机时没有触发该事件。可能是因为MediaElement根本没有播放任何内容。我向.xaml.cs文件添加了一个MediaElement并订阅了CurrentStateChanged事件,但拔下耳机时不会触发该事件。这可能是因为MediaElement根本没有播放任何内容。