音声ファイル
音声ファイルの再生には、MediaElementを利用します。MediaElementは、動画にも音声にも利用できる便利なコントロールです。
音声を再生する
音声を再生するサンプルコードが以下です。
<MediaElement x:Name="mediaElement" Visibility="Collapsed" Source="/Assets/sample.mp3" AutoPlay="False" />
sample.mp3という音声ファイルを自動再生(AutoPlay)モードで再生するため、ファイルが読み込まれるとすぐに再生が開始します。
Playメソッド
プログラム処理で音声を再生する場合は、Playメソッドを呼び出します。
// 音声を再生する this.mediaElement.Play();
Pauseメソッド
音声の再生を一時停止します。再びPlayメソッドを呼び出すと、音声が一時停止した場所から再生されます。
// 音声を一時停止します this.mediaElement.Pause();
Stopメソッド
音声の再生を停止します。再びPlayメソッドを呼び出すと音声は最初から再生されます。
// 音声を停止します this.mediaElement.Stop();
MediaEndedイベントハンドラー
音声再生終了時に呼び出されます。
IsLoopingプロパティ
指定したファイルを連続で再生するかどうかを指定するプロパティです。
バックグラウンドでの再生
ストアアプリは基本バックグラウンドに回ると中断状態に移行して、OSの管理のもと終了します。
音楽プレイヤーなどの場合、そのような動作をすると再生中の音楽が中断されてしまいます。ストアアプリではこの状態を回避するために、音声ファイルのバックグラウンド再生がサポートされています。
バックグラウンドで音声を再生する場合、Package.appxmanifestの項目追加とプログラムの修正を行います。
Package.appxmanifestの修正
Package.appxmanifestの「宣言」タブの「サポートされる宣言」から、バックグラウンドタスクを追加します。
「プロパティ」項目の「サポートされるタスクの種類」から、オーディオをチェックします。
プログラムの修正
MediaControl.PlayPauseTogglePressed += MediaControl_PlayPauseTogglePressed; MediaControl.PlayPressed += MediaControl_PlayPressed; MediaControl.PausePressed += MediaControl_PausePressed; MediaControl.StopPressed += MediaControl_StopPressed; } void MediaControl_StopPressed(object sender, object e) { } void MediaControl_PausePressed(object sender, object e) { } void MediaControl_PlayPressed(object sender, object e) { } void MediaControl_PlayPauseTogglePressed(object sender, object e) { }
バックグラウンドで再生されているときに、一時停止や停止された場合の処理を記述します。
最低限ハンドラーは指定してある必要があります。
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read); OutputMedia.SetSource(stream, file.ContentType); MediaControl.TrackName = "SampleSong";
上記サンプルコードでは、StorageFileとして取得した音楽ファイルからストリームを取得して、バックグラウンド再生を行っています。