Post on 04-Jul-2015
MediaLibrary で あそぼう 伊勢 シン / 伊藤 伸裕
2012/02/18(Sat)
Windows Phone Arch@Nagoya
自己紹介
• 伊勢 シン • Microso@ MVP for Device ApplicaGon Development (Oct 2011-‐Sep 2012)
• 大阪のソフトウェア開発会社で スマートフォンアプリ作ってます。 – iPhone – Android – Windows Phone – ほか
自己紹介
• 趣味でもスマートフォンアプリ作ってます – 最近はちょっと縮小気味 – SongTweeter – 宝塚市ごみの日カレンダー – EbIRC – ZEROProxy
• プラネタリウム好き – 今日はせっかく名古屋に来たのに行程の都合上
名古屋市立科学館いけなくて涙目…
おしながき
• MediaLibrary をつかう • 音楽の一覧を取得する • 音楽を再生する • 音楽の再生状態を取得する • 画像をChooserを使わずに取得する
MediaLibrary
• Windows Phone に入っているメディアを扱う – Music+Videos Hub に入っている音楽 – Pictures Hub に入っている写真
• Microso@.XNA.Framework を参照に追加 • Microso@.XNA.Framework.Media.MediaLibrary
というクラスから使い始める
MediaLibrary
MediaLibraryのデバッグ
• MediaLibrary は Zune So@ware 接続状態では使えない。
• 通常、Windows Phoneのデバッグ中は Zune So@wareが起動しているので、 そのままでは動かせない。
• Zune So@wareに認識させた後、終了して、 WPConnect.exe を実行すると、 Zune So@wareなしでデバッグが実行できる。
音楽の一覧取得
• Albums, ArGsts, Songs プロパティに含まれる – アルバムごと – アーティストごと
– 全曲
• アルバムのアートワークも取得できる var istream = song.GetImageStream(); if (istream != null) {
var bi = new BitmapImage(); bi.SetSource(istream); albumArt.Source = bi;
}
音楽を再生する
• MediaLibrary からとってきた Song クラスをMediaPlayer クラスにいれるだけ。 – SongCollecGon クラス (ArGsts.Songs など) も可
MediaPlayer.Play(song);
音楽の再生状態取得
• MediaPlayer.Queue.CurrentSong などから 再生している曲をとれる
• MediaStateChanged, AcGveSongChanged といったイベントで状態が変わったことを 検知できるけど、 XNAのイベントをそのまま使うと落ちる – XNAのフレーム更新をシミュレートしないといけな
い
XNAのイベント取得
h\p://d.hatena.ne.jp/iseebi/20110119/p2
XNAのイベントを拾う
• IApplicaGonServiceで処理を書く • App.xamlに2行書き足す
画像をPickerを使わずに取得
• Windows Phone でライブラリの画像を 取得するのは基本的に PhotoChooserTask
画像をPickerを使わずに取得
• Pictures, SavedPictures, RootPictureItem の 各プロパティから取得する。
var istream = image.GetThumbnail(); var bi = new BitmapImage(); bi.SetSource(istream); imageView.Source = bi;
まとめ
• ユーザーのデータのうち、 目と耳に訴えかける情報を使える メディアライブラリ。うまくつかおう。
• XNAのイベントをSilverlightアプリでとるには PhoneApplicaGonServiceを作ろう。