Upload
coelacanth
View
947
Download
2
Embed Size (px)
Citation preview
会
画声画
発売
広強会
触 会
触
来
帯
声
様
説
説
画
画
画
画
画
画
画
画
var cam = new CameraCaptureTask(); // カメラ撮影終了時に呼び出すイベントハンドラー cam.Completed += new EventHandler<PhotoResult>(this._cameraCaptureCompleted); // カメラ起動(本当はtry/catchしてね) cam.Show();
画
var cam = new CameraCaptureTask(); // カメラ撮影終了時に呼び出すイベントハンドラー cam.Completed += new EventHandler<PhotoResult>(this._cameraCaptureCompleted); // カメラ起動(本当はtry/catchしてね) cam.Show();
画
Mango以前はカメラを起動してしまうと、 撮影が終わるまでプログラム制御はOSに移る Mangoではカメラからのデータにアクセスできる ARとかできちゃいますね!!
画
2011年7月FxUG北陸を爆撃!!
個人的にお気にいりのこれもできちゃいます!! (AR Missileという一押しiPhoneアプリ)
画
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;
画
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;
画
画
var photo_name = “hoge_image"; var lib = new MediaLibrary(); // シークしてあげます。画面表示する際に位置が終端まで行くため photo_stream.Seek(0, SeekOrigin.Begin); lib.SavePicture(photo_name, photo_stream);
画
MediaLiblaryは Microsoft.Xna.Frameworkを参照に追加する必要がある SilvrlightからもXna系を利用することがある
画
・保存してある画像を使う // varって素晴らしい無いと冗長だよね(スライド特に・・・)
var pix = new PhotoChooserTask(); pix.Completed += new EventHandler<PhotoResult>(_choosePhotoCompleted); // trueだとやっぱカメラで撮るわ―ってできる pix.ShowCamera = true; pix.Show();
声
声
・ライブラリの音楽ファイルを扱う ・アプリに音声ファイルを埋め込んで呼び出す ・マイクで録音する
声
DEMO:メディアプレイヤー改
声
ライブラリの音声ファイルを利用する場合は MediaPlayerクラスを主に利用することになる MediaPlayerクラスも先述のMediaLibraryクラス同様にMicrosoft.Xna.Frameworkを参照して、 コードもXNAっぽくなる
声
var timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromMilliseconds(50); timer.Tick += delegate { FrameworkDispatcher.Update(); // 定期に呼び出される処理を書く }; timer.Start();
声
MediaPlayerクラス MediaPlayer.Queue.ActiveSong.Duration; MediaPlayer.PlayPosition; MediaPlayer.Queue.ActiveSong.Album.Name; MediaPlayer.Queue.ActiveSong.Artist.Name; MediaPlayer.Queue.ActiveSong.Name;
声
MediaPlayerクラス MediaPlayer.IsShuffled // シャッフル再生 MediaPlayer.IsRepeating // リピート再生
声
曲リストなどはMediaLibraryクラスから取得 Var library = new MediaLibrary(); this._song_collection = library.Songs;
声・おまけ:Twitter認証 Twitterのデベロッパーページでアプリ登録 アプリ側でOauth認証 (アプリにTwitterのID、PASSを保存しないですむ 仕組み、使う側も安心、開発者も流出の心配が 無くて安心)
声
・おまけ:Twitter認証 Oauth認証のサンプルになるアプリがある http://twitt.codeplex.com/
声
・おまけ:Twitter認証 Windows Phone 7でxAuthを使う http://d.hatena.ne.jp/kabakiyo/20100827/1282919495
声
・アプリに音声ファイルを埋め込む DEMO:クラウディアボイス DEMO:効果音
声
クラウディアさんの音声は MSサイトで公開されています (まずそこ?) キャラクター利用ガイドライン、解説集 http://msdn.microsoft.com/ja-jp/windowsazure/claudia00_03
この辺がどのくらいネタ被りするかで スピーカー陣の質がw
声
// MediaElementクラスを利用 this.mediaElement.Source = new uri(“resources/40chui.wav”); this.mediaElement.Play(); 基本Web版Silverlightと同じ感覚
声
・マイクで録音する DEMO:SpeakMemo Sound Recording in Windows Phone 7 というサンプルコードを利用しました http://archive.msdn.microsoft.com/mag201102UIFrontiers
声
// マイクロフォンクラスを用意 Var mic = Microphone.Default; mic.BufferReady += OnMicrophoneBufferReady;
声
// 再生用クラス var playback = new DynamicSoundEffectInstance(microphone.SampleRate, AudioChannels.Mono); playback.BufferNeeded += OnPlaybackBufferNeeded;
声
// 録音開始!! mic.Start(); // 録音終了 mic.Stop();
声
// 録画したデータサイズを取得 int size = mic.GetSampleSizeInBytes(mic.BufferDuration); // バイトの配列を用意 byte[] extraBuffer = new byte[size]; //注入― int extraBytes = microphone.GetData(extraBuffer);
声
保存用の分離ストレージを用意して書き込み― Using (IsolatedStorageFileStream stream = storage.CreateFile(memoInfo.FileName)) { stream.Write(extraBuffer, 0, extraBytes); }
声
保存用の分離ストレージを用意して書き込み― Using (IsolatedStorageFileStream stream = storage.CreateFile(memoInfo.FileName)) { stream.Write(extraBuffer, 0, extraBytes); }
声
// 再生する場合もbyte配列に入れたデータ(ここではbuffer)を使う!! playback.SubmitBuffer(buffer); playback.play();
画
画
・オンデマンドファイル ・SmoothStreamingファイル
画
・オンデマンドファイル this.mediaElement1.AutoPlay = true; this.mediaElement1.Source = new Uri("http://coelacanth.heteml.jp/sl7_video_bord/vb.wmv"); 基本音声ファイルと同じ。 便利だなぁMediaElement
画
・SmoothStreamingファイル Smooth Streamingとは? 複数の帯域の動画から相手に合わせた 適切な帯域での配信を可能にする技術。
画
・SmoothStreamingファイル IIS Smooth Streaming Client 1.5を使えば再生できる・・・ はずだったんですが、今のバージョンだと 再生できず
画
なぜかデバッグでもなんでもない、 プレビューモードではバリバリ再生するのに、 エミュレーターとか実機で動かすと動かない・・・
発売
7月27日にauが WindowsPhone7発売をアナウンス!! 発売日も明言して欲しかったけど、 日本でもWindowsPhone7 が始まります!!
発売
今までのセッションは 日本発売版のOS(通称Mango)の新機能には あまり触れずに、現在のPhone7でもMangoでも 動作するコードを紹介してきました。 (Mangoはβ2なので正式版では動くとは限りませんが・・・)
発売
ここからちょっとだけ、 Mangoのメディア機能について紹介
発売
What's New in Silverlight for Windows Phone http://msdn.microsoft.com/en-us/library/hh237342%28v=VS.96%29.aspx
発売
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.
発売
要約:いい感じにカメラとマイクがつかえるよ♪
発売
DEMO:VideoPuzzler http://www.electronista.com/articles/11/06/30/wp7.mango.camera.app.has.button.for.front.cameras/
日本での発売も決定し、 Mangoもβ2(限りなくRCに近い?)がテストできるようになりました!! iPhone, Androidに加えWindowsPhone7対応 が求められる時代が来る・・・はずっ
本日のスライドはブログ 「眠るシーラカンスと水底のプログラマー」 で公開します。 ソースコードも作りかけ以外はダウンロード可能 にしますので参考に利用してください
ご清聴ありがとうございました!!
時間が余っていたら、記念爆撃