バックグラウンドで音楽を再生する(前編)
2011年9月2日(金)
ソリューションエクスプローラー内のMainPage.xamを展開して表示される、MainPage.xaml.vbをダブルクリックして、リスト2のコードを記述します。
ロジックコードを記述する
リスト2 (MainPage.xaml.vb)
Option Strict On Microsoft.Phone.BackgroundAudio名前空間は、他のアプリケーションがフォアグラウンドで実行している間に、バックグラウンドでのオーディオ再生機能を提供するクラスを含む名前空間です。 Imports Microsoft.Phone.BackgroundAudio 画像を表示するのに必要なクラスの含まれる、System.Windows.Media.Imaging名前空間をインポートします。 Imports System.Windows.Media.Imaging Partial Public Class MainPage Inherits PhoneApplicationPage ' Constructor Public Sub New() InitializeComponent() End Sub
ページが読み込まれた時の処理
AddHandlerメソッドで、BackgroundAudioPlayerクラスのインスタンスのPlayStateChangedイベントに、イベントハンドラを追加します。PlayStateChangedは再生状態(PlayState)が変化した時に発生するイベントです。BackgroundAudioPlayerクラスのインスタンスのTrackプロパティに曲目が存在している場合は、曲目のタイトルと曲目のアーティスト名をTextBlockに表示します。UIで使用される画像を表示するImageShowプロシージャを実行します。 Private Sub MainPage_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded AddHandler BackgroundAudioPlayer.Instance.PlayStateChanged, Sub() If BackgroundAudioPlayer.Instance.Track Is Nothing = False Then TextBlock1.Text = BackgroundAudioPlayer.Instance.Track.Title & " by " & BackgroundAudioPlayer.Instance.Track.Artist ImageShow() Else Exit Sub End If End Sub End Sub
UIで使用される画像表示の処理
新しいBitmapImageのインスタンスmyImageオブジェクトを生成します。 myImageオブジェクトのUriSourceプロパティに、BackgroundAudioPlayerのインスタンスの、TrackのAlbumArtを指定します。AlbumArtは各種「桜のjpg」画像を保持しています。Image1のSourceプロパティにmyImageオブジェクトを指定します。 Private Sub ImageShow() Dim myImage As New BitmapImage myImage.UriSource = BackgroundAudioPlayer.Instance.Track.AlbumArt Image1.Source = myImage End Sub
[再生]または[休止]ボタンがクリックされた時の処理
[前へ]と[次へ]ボタンを使用可とします。曲が再生中の場合(ボタンの文字は「休止」となっている)は、画像を表示するImageShowプロシージャを実行し、BackgroundAudioPlayerのインスタンスのPauseメソッドで、曲を休止します。ボタンの文字を「再生」とします。曲が再生されていない場合(ボタンの文字は「再生」になっている)は、BackgroundAudioPlayerのインスタンスのPlayメソッドで、曲を再生し、ボタンの文字を「休止」とします。 要は、[再生]ボタンクリック時に、曲が再生されていない場合は曲を再生して、ボタンの文字を「休止」とします。ボタンの文字が「休止」で、曲が再生されている場合は、曲を休止して、ボタンの文字を「再生」にするということです。 Private Sub PlayButton_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles PlayButton.Click PrevButton.IsEnabled = True NextButton.IsEnabled = True If PlayState.Playing = BackgroundAudioPlayer.Instance.PlayerState Then ImageShow() BackgroundAudioPlayer.Instance.Pause() PlayButton.Content = "再生" Else BackgroundAudioPlayer.Instance.Play() PlayButton.Content = "休止" End If End Sub
[次へ]ボタンをクリックした時の処理
SkipNextメソッドで、次のトラックにスキップします。 Private Sub NextButton_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles NextButton.Click BackgroundAudioPlayer.Instance.SkipNext() End Sub
[前へ]ボタンがクリックされた時の処理
SkipPreviousメソッドで前のトラックにスキップします。 Private Sub PrevButton_Click(sender As Object, e As System.Windows.RoutedEventArgs) Handles PrevButton.Click BackgroundAudioPlayer.Instance.SkipPrevious() End Sub
画面の遷移で移動した時に最初に呼ばれるイベント
曲が再生中の場合は、「再生」の文字を「休止」にします。TextBlock1に曲のタイトル名とアーティスト名を表示します。Image1に画像を表示するImageShowプロシージャを実行します。 曲が「休止」の場合は、「休止」の文字を「再生」にします。TextBlockは空にし、Image1にも画像は表示されていません。最初は「再生」の文字が表示されていますので、曲は休止の状態です。 Protected Overrides Sub OnNavigatedTo(e As System.Windows.Navigation.NavigationEventArgs) If PlayState.Playing = BackgroundAudioPlayer.Instance.PlayerState Then PlayButton.Content = "休止" TextBlock1.Text = BackgroundAudioPlayer.Instance.Track.Title & " by " & BackgroundAudioPlayer.Instance.Track.Artist ImageShow() Else PlayButton.Content = "再生" TextBlock1.Text = String.Empty Image1.Source = Nothing End If MyBase.OnNavigatedTo(e) End Sub
[WenBrowser]ボタンがクリックされた時の処理
NavigationService.NavigateメソッドでWebBrowser.xamlに遷移します。 Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click NavigationService.Navigate(New Uri("/WebBrowser.xaml", UriKind.Relative)) End Sub End Class
<後編に続きます>
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。
全文検索エンジンによるおすすめ記事
- 翻訳された英文の表示と読み上げ
- モーションセンサーとShareStatusTask、MediaPlayerLauncherを使う
- パノラマページを作成する(後編)
- Bing APIを使ってWeb検索とImage検索を実装する
- 場所と写真を記録するプログラムを作って思い出のシーンを保存しよう
- データ保存・bing検索・簡易縦書き機能の実装
- ContextMenuコントロールを使う、加速度センサー、GPSでの位置情報取得
- LaunchersとChoosersを使ってみる
- 撮影した写真の管理ができるマイフォトアプリを作る
- ShareLinkTaskを使ったSNSでのリンク共有とHubTileのサンプル