2016-05-06 52 views
0

我有以下內容的音頻後臺任務:檢測3.5mm插孔按下按鈕時,應用程序是在前臺

BackgroundMediaPlayer.Current.SystemMediaTransportControls.IsPauseEnabled = true; 
BackgroundMediaPlayer.Current.SystemMediaTransportControls.ButtonPressed += (sender, e) => 
{ 
    Debug.WriteLine("Button pressed: " + e.Button.ToString()); 
}; 

這時候我按住按鈕,一秒鐘後釋放的作品。

我想在沒有背景任務的前景中使用它。是否可以在不使用BackgroundMediaPlayer的情況下執行此操作?我曾嘗試使用MediaElement,但我找不到ButtonPressed事件或類似的事件。

回答

0

是的,可以使用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添加相對能力並添加引用。由於這是一個移動擴展名稱空間,請在手機上運行它。

+0

我添加了'systemMediaControls.IsPauseEnabled = true;'並嘗試啓用每個按鈕,但是當按下按鈕時不調用systemMediaControls_ButtonPressed。我有一個類似於這些:[圖片](http://ecx.images-amazon.com/images/I/61TnbxASYfL._SL1010_.jpg)。沒有錯誤。 – Nfear

+0

@Nfear你有沒有使用官方樣本進行測試?我的代碼並不完整。 –

+0

是的,當我按下插入耳機端口的按鈕時不會調用它。當我在音量控制菜單上按暫停時,它被調用。 – Nfear

相關問題