#wpdev_jp

いよいよ Windows Phone 秋のアプリコンテスト、その名も Windows Phone "○○の秋"  コンテスト が開始します。

さて、○○の秋 と言えば、まず思いつくのが芸術の秋(あれ?違う?)。

機能

そこで、たった実質 5行で音楽プレイヤーを作ってみましょう。今回の機能はこちら

  • Windows Phone の Zune に入っている音楽のアルバム一覧を表示する
  • 表示されているアルバムをダブルタップすると曲を再生する

今回は、コンストラクタだけで行います。あ、あらかじめ、Microsoft.Xna.Framework の参照を追加しておいて下さい。

実装

まずは Using句から

using Microsoft.Xna.Framework.Media;
using System.Windows.Threading;

そしてコード側

// コンストラクター
public MainPage()
{
    InitializeComponent();

    // リストボックスを作成ます。XAML内で定義したほうが簡単かも。
    ListBox listBox1 = new ListBox {
        FontSize = 32,
        ItemsSource = new MediaLibrary().Albums
    };

    listBox1.DoubleTap += (s, e) =>
    {
        // アルバムの曲一覧を取得してMediaPlayer で再生します。
        Album album = (s as ListBox).SelectedItem as Album;
        MediaPlayer.Play(album.Songs);
    };

    // 作成したリストボックスを画面について貸します。
    ContentPanel.Children.Add(listBox1);
}

正直に言うと、MediaLibrary にZune の曲の一覧情報がすべて入っています。Songs プロパティなら全曲、Albumsなら全アルバムが、Album.Songs なら特定のアルバムの曲一覧を取得できます。そして MediaPlayerのPlayメソッドで、曲一覧を渡すと再生することができます。

ね、簡単でしょ?

 

実機デバッグの仕方に注意

Zune で接続しているときには、写真や音楽系のデバッグができません。そこで、このようにしてデバッグします。

  1. Zune でデバイスとPCを接続して同期接続にする
  2. Zune を終了させる
  3. C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\WPConnect\x64\WPConnect.exe もしくは
    C:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Tools\WPConnect\x86\WPConnect.exe を実行する

この状態なら音楽系のデバッグもできます。

 

でも問題がある

でも、実はこれで再生するとすぐにエラーが出てしまいます。音楽はなり続けるんですが。実は、Silverlight から XNAの MediaPlayer を使うには、XNAと同じ毎秒30回呼ばれる機構が本来必要になるためです。ですので、アプリケーションとして完成させるにはこちらに書かれているような処理を実装しなければなりません。

Windows Phone アプリケーションでの XNA Framework イベントの有効化