もう少し本格的なアプリケーションを作ってみましょう。ツイート機能搭載の音楽プレーヤーです。プレーヤー画面とプレイリスト画面で構成し、プレイリストは2枚のページをタップあるいは左右へのフリックで切り替えられる「ピボットページ」として作成します。プレーヤーの仕様については図20を参照してください。

図20●ここで作成する音楽プレーヤー
[画像のクリックで拡大表示]

XAMLによる画面設計

 プロジェクトを作成しましょう。数当てゲームと同様に、新規プロジェクト作成ダイアログで「Windows Phone アプリケーション」を選択し、名前は「MusicPlayer」としてください。プロジェクトを作成したら、図20の左端の画面を参考にしてコントロールを配置します。ここでは、コントロールを大まかに配置しながら、XAMLのコードを直接編集していきます。

 リスト2は画面設計を終えた後のXAMLコード(MainPage.xaml)です*6。ポイントは二つあります。

 一つは、Prev.、Play、Nextの各ボタンを横に並べているところです。ここでは三つのボタンをStackPanelの中に入れています(リスト2の(1))。StackPanelは、縦または横にコントロールを並べるためのレイアウト専用コントロールです。ここでは横方向にボタンを並べたいので、OrientationをHorizontalに指定しています。縦方向にしたい場合はVerticalにします。

 もう一つは、ApplicationBarコントロールです(リスト2の(2))。これを使用すると、画面下にアイコンやメニューを設置できます。ここでは、プレーヤーの画面からプレイリスト画面へ移動するためのメニューを設置しています。ApplicationBarでメニューを設定する場合は、XAML上でClickイベントを設定しておく必要があります(同(2-1))。

タイマーの割込処理とメニューによる画面遷移

 コードを記述していきましょう。完成したコード(MainPage.xaml.cs、リスト3)から、ポイントになる部分について説明します。

 このプレーヤーは、Windows Phoneのメディア管理ソフト「Zune」のメディアライブラリを使って楽曲の情報や楽曲データにアクセスします。メディアライブラリにアクセスするには「XNA Framework」と呼ばれるゲーム開発向けのライブラリを使用する必要があります。

 Windows PhoneアプリケーションのプログラムはそのままではXNA Frameworkを利用できないので、「参照の追加」を行います。具体的には、ソリューションエクスプローラーで「参照設定」を右クリックして「参照の追加」を選び、現れるダイアログで「Microsoft.Xna.Framework」を選択してOKボタンを押します。

 参照の追加をしたら、using宣言文を記述して、プログラム内でこれらの機能を使えるようにします。ほかに、再生時間などの情報を一定間隔で更新するためのタイマー、曲情報に含まれるアルバム画像を表示するためのライブラリ、Twitterへ投稿するためMeハブへアクセスするためのライブラリを使えるようにusing宣言しています(リスト3の(1))。

 このプログラムでポイントになる処理は
・タイマー割り込みによるライブラリやメディアプレーヤーの情報更新
・各ボタンのクリック時の処理
・Twitterへの投稿
・メニューの「プレイリスト」をタップしたときの処理
です。タイマーによる割り込み処理ではDispatcherTimerでタイマーを定義し、50ミリ秒ごとにタイマーの割り込み処理(リスト3の(2-1))を起動してライブラリやメディアプレーヤーの情報を更新するようにしています。DispatcherTimerは複数定義すると、予期せぬ動作をすることがあるので、一つだけ起動させて、その中に複数の処理を列挙します。割り込み処理は、ここではラムダ式と呼ばれる構文を用いて記述しています。

 各ボタンのクリック時の処理もラムダ式で記述しています(リスト3の(2-2))。ラムダ式でイベント発生時の処理を記述すると、XAMLファイルにイベント定義を記述しなくても済むので、デザイナーと協業する場合などXAMLとプログラムを別々の担当者が作成する場合などに便利です

 Tweetボタンの処理では、Windows Phone OSの機能であるMeハブからTwitterに投稿できるようにしています(リスト3の(2-3))。Meハブへは、ShareStatusTaskクラスを使ってアクセスします。ShareStatusTaskオブジェクトのStatusプロパティに投稿内容を設定すると、ShowメソッドでMeハブを表示できます。表示されたMeハブには、Statusプロパティに設定した投稿内容が既にセットされていますから、あとは送信ボタンをタップするだけです。

 メニューを選択したときの処理では、NavigationServiceクラスのNavigateメソッドを呼び出すことでプレイリスト画面に遷移しています(リスト3の(3))。Navigateメソッドの引数には、遷移先画面のURIをセットします。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら