Windows Phoneアプリケーション開発入門

第35回 Mangoで追加されたカメラ機能を使ってみよう!(1)

この記事を読むのに必要な時間:およそ 4 分

はじめに

Windows Phoneには,アプリケーション内で静止画撮影を行う為の基本的なカメラの機能が提供されています。Windows Phone OS 7.1よりサポートされています。

PhotoCameraクラスには静止画撮影,オートフォーカス,フラッシュモードなどの機能を使用するためのメソッドが含まれています。またそれぞれの処理完了のイベントが用意されています。

また,静止画撮影関係の機能以外にも,プレビュー中のフレーム(画像)をARGB32形式,YCbCr形式,Y成分(輝度情報)のみの形式で取得することが出来ます。

プレビューフレームを用いることで,リアルタイムでカラーエフェクトを掛けながら表示したり,特定のマーカーを探しアニメーションを表示するなどの拡張現実(AR)アプリケーションを開発することが可能になりました。

今回,新規にプロジェクトを作成してカメラプレビューを行う方法を紹介したいと思います。サンプルプロジェクトを用意しましたので,是非ソースコードと一緒に記事を読み進めて頂ければと思います。

カメラプレビューを行う前の準備を行う

ツールバーの[ファイル][新規作成]から[プロジェクト]を選択し,新しいプロジェクトを作成しましょう。Visual C#のテンプレートから「Windows Phone Application」を選択して,新しいプロジェクトを作成します。プロジェクトの名前は「CameraPreviewTest」にしておきます。

次にWindows Phoneプラットフォームのターゲットを選択します。カメラ機能を使用するには,上述した通りWindows Phone OS 7.1以降である必要がありますので,Windows Phone OSのターゲットは「Windows Phone OS 7.1」を選択しましょう。

画像

カメラ機能を使用するためには,Windows Phone Apllication マニュフェストファイルのWMAppManifest.xmlのCapabilities要素に「ID_CAP_ISV_CAMERA」という権限を追加しておく必要があります。

上記手順どおりにプロジェクトを作成した場合は,デフォルトで権限が追加されていると思いますが,カメラ機能が使えなかったりする場合は,下図スクリーンショットを参考にVisual StudioでWMAppManifest.xmlを開いて,Capabilities要素に「ID_CAP_ISV_CAMERA」を追加しておいてください。

画像

ソリューションエクスプローラーからCameraPreviewTestプロジェクトを右クリックし,「参照の追加」を選択してください。.NETタブにMicrosoft.XNA.Frameworkがあると思いますので追加を行います。

画像

MainPage.xamlの「LayoutRoot」という名前のGridを以下のコードで置き換えてください。カメラプレビューを表示する為の「PreviewRectangle」という名前の矩形(Rectangle)を追加しています。

矩形を塗りつぶすBrushオブジェクトの一種に,単色で塗りつぶすSolidColorBrushがあります。これと同様に動画で塗りつぶすVideoBrushを使って,カメラデバイスから入力されたプレビューフレームでPreviewRectangleの矩形を塗りつぶします。

<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
        <TextBlock x:Name="PageTitle" Text="CameraPreviewTest" 
                   Margin="9,-7,0,0" 
                   Style="{StaticResource PhoneTextTitle2Style}"/>
    </StackPanel>

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <!-- この矩形にカメラプレビューを表示する -->
        <Rectangle x:Name="PreviewRectangle">
            <Rectangle.Fill>
                <VideoBrush x:Name="PreviewBrush" />
            </Rectangle.Fill>
        </Rectangle>
    </Grid>
</Grid>

著者プロフィール

和田健司(わだけんじ)

1982年10月12日生まれ。大阪で働くプログラマ。Microsoft MVP for Device Application Development(Jul 2010 - Jun 2011)。Windows Mobileに傾倒し今に至る。Windows Mobile向けのTipsを書いています。iPhoneアプリ開発を始めました。嫌いな食べ物はカレー。

URL: http://ch3cooh.jp/
Blog: http://d.hatena.ne.jp/ch3cooh393/

コメント

コメントの記入