You are on page 1of 59



発売


強会







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

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

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


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

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


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/128291
9495

・アプリに音声ファイルを埋め込む
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/mag201102
UIFrontiers


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


// 再生用クラス
var playback = new
DynamicSoundEffectInstance(microphone.Sampl
eRate, 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/enus/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/w
p7.mango.camera.app.has.button.for.front.camera
s/

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

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

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

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