2012-03-14 4 views
1

Есть ли способ обнаружить, когда пользователь подключает или отключает наушники на wp7?Обнаружение разъема/отсоединения наушников в wp7

Проблема заключается в том, что когда песня воспроизводится на фоне AudioPlayerAgent и пользовательские разъемы на отключает телефоны, метод AudioPlayerAgent protected override void OnUserAction получает паузу в UserAction и приостанавливает воспроизведение музыки.

Мне нужно обнаружить вилку/отсоединиться от потока пользовательского интерфейса, чтобы обновить графический интерфейс, чтобы отобразить приостановленное состояние.

+2

Не просто ответить на свой вопрос? проверьте PlayState агента при запуске OnUserAction. если он приостановлен, обновите пользовательский интерфейс как приостановленный. –

+0

@willmel Не так просто. В WP7 связь между передним планом и фоновым агентом не является линейной. http://msdn.microsoft.com/en-us/library/hh202944(v=vs.92).aspx – dcarneiro

ответ

1

Вы должны подписаться на событие PlayStateChanged в BackgroundAudioPlayer в пределах вашей страницы:

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

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

Я не верю, что в настоящее время существует какой-либо API для запроса текущего состояния головных телефонов.

Возможно, вы сможете взломать решение своей проблемы с помощью элемента Media. Элемент Media будет поднимать событие CurrentStateChanged всякий раз, когда наушники отключены, поэтому вы можете подключиться к этому событию, чтобы изменить состояние вашего графического интерфейса. Это не самое элегантное решение, но это может быть только единственный способ на данный момент.

+0

Я добавил MediaElement в файл .xaml.cs и подписал событие CurrentStateChanged, но он не запускается, когда я отключился наушники. Вероятно, потому, что MediaElement ничего не играет. – dcarneiro

Смежные вопросы