是的,可以使用MediaElement和SystemMediaTransportControls類。SystemMediaTransportControls class包含ButtonPressed
事件。文檔System Media Transport Controls指導如何執行此操作。並且有一個offical sample已經符合您的要求。您可以直接測試樣品。這是示例代碼的一部分。
XAML代碼
<MediaElement x:Name="MyMediaElement" Margin="0,0,10,0" AudioCategory="Media" AreTransportControlsEnabled="True" VerticalAlignment="Top"/>
背後
private SystemMediaTransportControls systemMediaControls = SystemMediaTransportControls.GetForCurrentView();
systemMediaControls.IsEnabled = true;
systemMediaControls.ButtonPressed += systemMediaControls_ButtonPressed;
private async void systemMediaControls_ButtonPressed(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs args)
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
{
switch (args.Button)
{
case SystemMediaTransportControlsButton.Pause:
Debug.WriteLine("Button pressed: ");
break;
}
});
}
代碼是,它不是當我按下它插入耳機端口按鈕調用。
如果您想在耳機插入時觸發事件,請使用此API AudioRoutingManager。代碼示例如下:
private void Detectheadset_Click(object sender, RoutedEventArgs e)
{
AudioRoutingManager manager = AudioRoutingManager.GetDefault();
manager.AudioEndpointChanged += Manager_AudioEndpointChanged;
}
private void Manager_AudioEndpointChanged(AudioRoutingManager sender, object args)
{
}
注意爲Windows Mobile Extensions for the UWP
添加相對能力並添加引用。由於這是一個移動擴展名稱空間,請在手機上運行它。
我添加了'systemMediaControls.IsPauseEnabled = true;'並嘗試啓用每個按鈕,但是當按下按鈕時不調用systemMediaControls_ButtonPressed。我有一個類似於這些:[圖片](http://ecx.images-amazon.com/images/I/61TnbxASYfL._SL1010_.jpg)。沒有錯誤。 – Nfear
@Nfear你有沒有使用官方樣本進行測試?我的代碼並不完整。 –
是的,當我按下插入耳機端口的按鈕時不會調用它。當我在音量控制菜單上按暫停時,它被調用。 – Nfear