59

WindowsPhone7でメディアファイルを利用する

Embed Size (px)

Citation preview

Page 1: WindowsPhone7でメディアファイルを利用する

Page 2: WindowsPhone7でメディアファイルを利用する

画声画

発売

Page 3: WindowsPhone7でメディアファイルを利用する

広強会

Page 4: WindowsPhone7でメディアファイルを利用する

触 会

Page 5: WindowsPhone7でメディアファイルを利用する
Page 6: WindowsPhone7でメディアファイルを利用する

Page 7: WindowsPhone7でメディアファイルを利用する
Page 8: WindowsPhone7でメディアファイルを利用する

Page 9: WindowsPhone7でメディアファイルを利用する

Page 10: WindowsPhone7でメディアファイルを利用する

Page 11: WindowsPhone7でメディアファイルを利用する

Page 12: WindowsPhone7でメディアファイルを利用する

var cam = new CameraCaptureTask(); // カメラ撮影終了時に呼び出すイベントハンドラー cam.Completed += new EventHandler<PhotoResult>(this._cameraCaptureCompleted); // カメラ起動(本当はtry/catchしてね) cam.Show();

Page 13: WindowsPhone7でメディアファイルを利用する

var cam = new CameraCaptureTask(); // カメラ撮影終了時に呼び出すイベントハンドラー cam.Completed += new EventHandler<PhotoResult>(this._cameraCaptureCompleted); // カメラ起動(本当はtry/catchしてね) cam.Show();

Page 14: WindowsPhone7でメディアファイルを利用する

Mango以前はカメラを起動してしまうと、 撮影が終わるまでプログラム制御はOSに移る Mangoではカメラからのデータにアクセスできる ARとかできちゃいますね!!

Page 15: WindowsPhone7でメディアファイルを利用する

2011年7月FxUG北陸を爆撃!!

個人的にお気にいりのこれもできちゃいます!! (AR Missileという一押しiPhoneアプリ)

Page 16: WindowsPhone7でメディアファイルを利用する

void _cameraCaptureCompleted(object sender, PhotoResult e) { // 写真を撮影したかどうか if (e.TaskResult == TaskResult.OK) { //Streamクラス this._photo_stream = e.ChosenPhoto; // プレビュー表示用 var image = new BitmapImage(); image.SetSource(e.ChosenPhoto); this.image_ctr.Source = image;

Page 17: WindowsPhone7でメディアファイルを利用する

void _cameraCaptureCompleted(object sender, PhotoResult e) { // 写真を撮影したかどうか if (e.TaskResult == TaskResult.OK) { //Streamクラス this._photo_stream = e.ChosenPhoto; // プレビュー表示用 var image = new BitmapImage(); image.SetSource(e.ChosenPhoto); this.image_ctr.Source = image;

Page 18: WindowsPhone7でメディアファイルを利用する

var photo_name = “hoge_image"; var lib = new MediaLibrary(); // シークしてあげます。画面表示する際に位置が終端まで行くため photo_stream.Seek(0, SeekOrigin.Begin); lib.SavePicture(photo_name, photo_stream);

Page 19: WindowsPhone7でメディアファイルを利用する

MediaLiblaryは Microsoft.Xna.Frameworkを参照に追加する必要がある SilvrlightからもXna系を利用することがある

Page 20: WindowsPhone7でメディアファイルを利用する

・保存してある画像を使う // varって素晴らしい無いと冗長だよね(スライド特に・・・)

var pix = new PhotoChooserTask(); pix.Completed += new EventHandler<PhotoResult>(_choosePhotoCompleted); // trueだとやっぱカメラで撮るわ―ってできる pix.ShowCamera = true; pix.Show();

Page 21: WindowsPhone7でメディアファイルを利用する

Page 22: WindowsPhone7でメディアファイルを利用する

・ライブラリの音楽ファイルを扱う ・アプリに音声ファイルを埋め込んで呼び出す ・マイクで録音する

Page 23: WindowsPhone7でメディアファイルを利用する

DEMO:メディアプレイヤー改

Page 24: WindowsPhone7でメディアファイルを利用する

ライブラリの音声ファイルを利用する場合は MediaPlayerクラスを主に利用することになる MediaPlayerクラスも先述のMediaLibraryクラス同様にMicrosoft.Xna.Frameworkを参照して、 コードもXNAっぽくなる

Page 25: WindowsPhone7でメディアファイルを利用する

var timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromMilliseconds(50); timer.Tick += delegate { FrameworkDispatcher.Update(); // 定期に呼び出される処理を書く }; timer.Start();

Page 26: WindowsPhone7でメディアファイルを利用する

MediaPlayerクラス MediaPlayer.Queue.ActiveSong.Duration; MediaPlayer.PlayPosition; MediaPlayer.Queue.ActiveSong.Album.Name; MediaPlayer.Queue.ActiveSong.Artist.Name; MediaPlayer.Queue.ActiveSong.Name;

Page 27: WindowsPhone7でメディアファイルを利用する

MediaPlayerクラス MediaPlayer.IsShuffled // シャッフル再生 MediaPlayer.IsRepeating // リピート再生

Page 28: WindowsPhone7でメディアファイルを利用する

曲リストなどはMediaLibraryクラスから取得 Var library = new MediaLibrary(); this._song_collection = library.Songs;

Page 29: WindowsPhone7でメディアファイルを利用する

声・おまけ:Twitter認証 Twitterのデベロッパーページでアプリ登録 アプリ側でOauth認証 (アプリにTwitterのID、PASSを保存しないですむ 仕組み、使う側も安心、開発者も流出の心配が 無くて安心)

Page 30: WindowsPhone7でメディアファイルを利用する

・おまけ:Twitter認証 Oauth認証のサンプルになるアプリがある http://twitt.codeplex.com/

Page 31: WindowsPhone7でメディアファイルを利用する

・おまけ:Twitter認証 Windows Phone 7でxAuthを使う http://d.hatena.ne.jp/kabakiyo/20100827/1282919495

Page 32: WindowsPhone7でメディアファイルを利用する

・アプリに音声ファイルを埋め込む DEMO:クラウディアボイス DEMO:効果音

Page 33: WindowsPhone7でメディアファイルを利用する

クラウディアさんの音声は MSサイトで公開されています (まずそこ?) キャラクター利用ガイドライン、解説集 http://msdn.microsoft.com/ja-jp/windowsazure/claudia00_03

この辺がどのくらいネタ被りするかで スピーカー陣の質がw

Page 34: WindowsPhone7でメディアファイルを利用する

// MediaElementクラスを利用 this.mediaElement.Source = new uri(“resources/40chui.wav”); this.mediaElement.Play(); 基本Web版Silverlightと同じ感覚

Page 35: WindowsPhone7でメディアファイルを利用する

・マイクで録音する DEMO:SpeakMemo Sound Recording in Windows Phone 7 というサンプルコードを利用しました http://archive.msdn.microsoft.com/mag201102UIFrontiers

Page 36: WindowsPhone7でメディアファイルを利用する

// マイクロフォンクラスを用意 Var mic = Microphone.Default; mic.BufferReady += OnMicrophoneBufferReady;

Page 37: WindowsPhone7でメディアファイルを利用する

// 再生用クラス var playback = new DynamicSoundEffectInstance(microphone.SampleRate, AudioChannels.Mono); playback.BufferNeeded += OnPlaybackBufferNeeded;

Page 38: WindowsPhone7でメディアファイルを利用する

// 録音開始!! mic.Start(); // 録音終了 mic.Stop();

Page 39: WindowsPhone7でメディアファイルを利用する

// 録画したデータサイズを取得 int size = mic.GetSampleSizeInBytes(mic.BufferDuration); // バイトの配列を用意 byte[] extraBuffer = new byte[size]; //注入― int extraBytes = microphone.GetData(extraBuffer);

Page 40: WindowsPhone7でメディアファイルを利用する

保存用の分離ストレージを用意して書き込み― Using (IsolatedStorageFileStream stream = storage.CreateFile(memoInfo.FileName)) { stream.Write(extraBuffer, 0, extraBytes); }

Page 41: WindowsPhone7でメディアファイルを利用する

保存用の分離ストレージを用意して書き込み― Using (IsolatedStorageFileStream stream = storage.CreateFile(memoInfo.FileName)) { stream.Write(extraBuffer, 0, extraBytes); }

Page 42: WindowsPhone7でメディアファイルを利用する

// 再生する場合もbyte配列に入れたデータ(ここではbuffer)を使う!! playback.SubmitBuffer(buffer); playback.play();

Page 43: WindowsPhone7でメディアファイルを利用する

Page 44: WindowsPhone7でメディアファイルを利用する

・オンデマンドファイル ・SmoothStreamingファイル

Page 45: WindowsPhone7でメディアファイルを利用する

・オンデマンドファイル this.mediaElement1.AutoPlay = true; this.mediaElement1.Source = new Uri("http://coelacanth.heteml.jp/sl7_video_bord/vb.wmv"); 基本音声ファイルと同じ。 便利だなぁMediaElement

Page 46: WindowsPhone7でメディアファイルを利用する

・SmoothStreamingファイル Smooth Streamingとは? 複数の帯域の動画から相手に合わせた 適切な帯域での配信を可能にする技術。

Page 47: WindowsPhone7でメディアファイルを利用する

・SmoothStreamingファイル IIS Smooth Streaming Client 1.5を使えば再生できる・・・ はずだったんですが、今のバージョンだと 再生できず

Page 48: WindowsPhone7でメディアファイルを利用する

なぜかデバッグでもなんでもない、 プレビューモードではバリバリ再生するのに、 エミュレーターとか実機で動かすと動かない・・・

Page 49: WindowsPhone7でメディアファイルを利用する

発売

7月27日にauが WindowsPhone7発売をアナウンス!! 発売日も明言して欲しかったけど、 日本でもWindowsPhone7 が始まります!!

Page 50: WindowsPhone7でメディアファイルを利用する

発売

今までのセッションは 日本発売版のOS(通称Mango)の新機能には あまり触れずに、現在のPhone7でもMangoでも 動作するコードを紹介してきました。 (Mangoはβ2なので正式版では動くとは限りませんが・・・)

Page 51: WindowsPhone7でメディアファイルを利用する

発売

ここからちょっとだけ、 Mangoのメディア機能について紹介

Page 52: WindowsPhone7でメディアファイルを利用する

発売

What's New in Silverlight for Windows Phone http://msdn.microsoft.com/en-us/library/hh237342%28v=VS.96%29.aspx

Page 53: WindowsPhone7でメディアファイルを利用する

発売

Webcam and Microphone You can now capture source input from the user's audio device or video device. The CaptureImageAsync method enables simple capture scenarios and the VideoBrush.SetSource method enables a simple video playback scenario. Webcam and microphone capture both use a sink metaphor for establishing a listener class, and obtaining a capture requires client user permission for capture device access. Improved Image Support Windows Phone devices now support 32 bit-per-pixel (bpp) images. The default is 16 bpp, but you can change this setting in the WMAppManifest file to 32 bpp. For more information, see Application Manifest File for Windows Phone.

Page 54: WindowsPhone7でメディアファイルを利用する

発売

要約:いい感じにカメラとマイクがつかえるよ♪

Page 55: WindowsPhone7でメディアファイルを利用する

発売

DEMO:VideoPuzzler http://www.electronista.com/articles/11/06/30/wp7.mango.camera.app.has.button.for.front.cameras/

Page 56: WindowsPhone7でメディアファイルを利用する

日本での発売も決定し、 Mangoもβ2(限りなくRCに近い?)がテストできるようになりました!! iPhone, Androidに加えWindowsPhone7対応 が求められる時代が来る・・・はずっ

Page 57: WindowsPhone7でメディアファイルを利用する

本日のスライドはブログ 「眠るシーラカンスと水底のプログラマー」 で公開します。 ソースコードも作りかけ以外はダウンロード可能 にしますので参考に利用してください

Page 58: WindowsPhone7でメディアファイルを利用する

ご清聴ありがとうございました!!

Page 59: WindowsPhone7でメディアファイルを利用する

時間が余っていたら、記念爆撃