3

私は最近、自分のアプリでポッドキャストのバックグラウンドオーディオ再生をサポートすることにしました。私はそのほとんどを動作させていますが、BackgroundMediaPlayerのSystemTransportControlsの一時停止ボタンは何もしないようです。Windows 10 BackgroundMediaPlayer SystemTransportControls一時停止ボタンが動作しない

public sealed class AudioPlayer : IBackgroundTask 
{ 
    private BackgroundTaskDeferral _deferral; 
    public void Run(IBackgroundTaskInstance taskInstance) 
    { 
     _deferral = taskInstance.GetDeferral(); 

     var control = BackgroundMediaPlayer.Current.SystemMediaTransportControls; 
     control.IsEnabled = true; 
     control.IsPauseEnabled = true; 
     control.IsPlayEnabled = true; 
     control.IsNextEnabled = false; 
     control.IsPreviousEnabled = false; 

     taskInstance.Canceled += TaskInstance_Canceled; 

     BackgroundMediaPlayer.MessageReceivedFromForeground += BackgroundMediaPlayer_MessageReceivedFromForeground; 
    } 

    private void TaskInstance_Canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason) 
    { 
     BackgroundMediaPlayer.Shutdown(); 
     _deferral.Complete(); 
    } 

    void BackgroundMediaPlayer_MessageReceivedFromForeground(object sender, MediaPlayerDataReceivedEventArgs e) 
    { 
     object obj; 
     e.Data.TryGetValue("MessageBody", out obj); 

     string url = (string)obj; 
     url = url.Replace("\"", ""); 
     var source = MediaSource.CreateFromUri(new Uri(url, UriKind.Absolute)); 

     var list = new MediaPlaybackList(); 
     list.Items.Add(new MediaPlaybackItem(source)); 

     BackgroundMediaPlayer.Current.Source = list; 
     BackgroundMediaPlayer.Current.Play(); 
    } 
} 

オーディオをバックグラウンドで再生を開始しないが、私は、オーディオを一時停止する能力を持っていないことに注意することが重要である:

は、ここに私のバックグラウンドオーディオタスククラスファイルです。

おかげで、 P.

答えて

1

SystemMediaTransportControls(SMTC)に反応し、各ユニバーサルボリュームコントロール(UVC)ボタンを処理するには:再生、一時停止、次、前、私たちは次のようなSystemMediaTransportControls.ButtonPressed eventRunでメソッドを扱う必要が:

public void Run(IBackgroundTaskInstance taskInstance) 
{ 
    var control = BackgroundMediaPlayer.Current.SystemMediaTransportControls; 
    control.ButtonPressed += control_ButtonPressed; 
    ... 
} 

そしてcontrol_ButtonPressed方法では、のような別のボタンを扱う:

private void control_ButtonPressed(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs args) 
{ 
    switch (args.Button) 
    { 
     case SystemMediaTransportControlsButton.Play: 
      //Todo with play 
      break; 
     case SystemMediaTransportControlsButton.Pause: 
      //Todo with pause 
      break; 
     case SystemMediaTransportControlsButton.Next: 
      //Todo with skip to next; 
      break; 
     case SystemMediaTransportControlsButton.Previous: 
      //Todo with skip to previous; 
      break; 
    } 
} 

完全なサンプルについては、GitHubの公式Background audio sample、特にMyBackgroundAudioTask classを参照してください。また、バックグラウンドオーディオの設定、デバイスメディアコントロールの操作、バックグラウンドメディアプレーヤーとのやりとり、プレイリストの管理などを紹介する素晴らしい記事もあります。 The Basics of Background Audioで詳細を読む。

関連する問題