2016-05-09 4 views
1

プロジェクト(サウンドクラウドクライアント)で作業していて、アプリが最小限に抑えられていても、トラックをうまく再生できます。私は、MediaElement-Objectを使ってURLからmp3を再生します。アプリがバックグラウンドにあるとき、音楽を強制的に演奏し続けるにはどうすればいいですか?または、これを実装する最も簡単な方法/ベストチュートリアルを説明します。私は良い答えをたくさん探しましたが、私が見つけたものは私にはあまりにも良いものでした:D何を意味する、私はそれを理解していませんでした。UWPの背景でオーディオを再生する最も簡単な方法は何ですか?

答えて

4

バックグラウンドでオーディオを再生するには、Package.appxmanifestでバックグラウンドタスクを宣言し、オーディオを有効にしてTestUWP.MainPageページのようなエントリポイントを追加する必要があります。

enter image description here

また、ユーザーが簡単にあなたがここSystemMediaTransportControls

を使用することができますプレイの基本的な設定があると一時停止オーディオを管理することができるようにするため。

XAML

<MediaElement x:Name="mediaElement" Height="100" Width="100" AreTransportControlsEnabled="True"/> 

C#

public MainPage() 
{ 
    this.InitializeComponent(); 

    systemControls = SystemMediaTransportControls.GetForCurrentView(); 

    // Register to handle the following system transpot control buttons. 
    systemControls.ButtonPressed += SystemControls_ButtonPressed; 

    mediaElement.CurrentStateChanged += MediaElement_CurrentStateChanged; 


    systemControls.IsPlayEnabled = true; 
    systemControls.IsPauseEnabled = true; 
} 

private void MediaElement_CurrentStateChanged(object sender, RoutedEventArgs e) 
{ 
    switch (mediaElement.CurrentState) 
    { 
     case MediaElementState.Playing: 
      systemControls.PlaybackStatus = MediaPlaybackStatus.Playing; 
      break; 
     case MediaElementState.Paused: 
      systemControls.PlaybackStatus = MediaPlaybackStatus.Paused; 
      break; 
     case MediaElementState.Stopped: 
      systemControls.PlaybackStatus = MediaPlaybackStatus.Stopped; 
      break; 
     case MediaElementState.Closed: 
      systemControls.PlaybackStatus = MediaPlaybackStatus.Closed; 
      break; 
     default: 
      break; 
    } 
} 



void SystemControls_ButtonPressed(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs args) 
{ 
    switch (args.Button) 
    { 
     case SystemMediaTransportControlsButton.Play: 
      PlayMedia(); 
      break; 
     case SystemMediaTransportControlsButton.Pause: 
      PauseMedia(); 
      break; 
     case SystemMediaTransportControlsButton.Stop: 
      StopMedia(); 
      break; 
     default: 
      break; 
    } 
} 

private async void StopMedia() 
{ 
    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => 
    { 
     mediaElement.Stop(); 
    }); 
} 

async void PlayMedia() 
{ 
    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => 
    { 
     if (mediaElement.CurrentState == MediaElementState.Playing) 
      mediaElement.Pause(); 
     else 
      mediaElement.Play(); 
    }); 
} 

async void PauseMedia() 
{ 
    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => 
    { 
     mediaElement.Pause(); 
    }); 
} 

出力

Output

あなたは元のために利用可能なプロパティを使用して行うことができますより多くのコントロールを有効にしたい場合。

systemControls.IsNextEnabled = true;

、あなたはボタンスイッチでcaseを追加する必要があります。

case SystemMediaTransportControlsButton.Next: 
        //handle next song 
        break; 
+0

結果は同じです。ウィンドウを最小化すると、オーディオはもう聞こえません。 – Flauschcoder

+1

編集:BackgroundCapableMediaにMediaElementのAudioCategory-Propertyを設定すると問題が解決しました。あなたの答えをありがとう、私は仕事の多くを救った! – Flauschcoder

+1

編集2:PCで動作しますが、モバイルでは動作しません。/ – Flauschcoder

関連する問題