酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows Phoneでフラッシュモードを設定する

被写体の周りが暗い場合、カメラ撮影時にフラッシュを炊いて撮影する事があります。

本記事ではPhotoCameraクラスのフラッシュモードについての説明と設定の仕方について記載しております。

フラッシュモードの定義

Windows Phone OS 7.1で定義されているフラッシュモードは下記の通りです。

フラッシュモード 説明
FlashMode.On フラッシュは常にON
FlashMode.Auto 自動発光モード
FlashMode.Off フラッシュは常にOFF
FlashMode.RedEyeReduction 赤目補正モード

フラッシュモードがFlashMode.On、FlashMode.RedEyeReductionの場合、必ずフラッシュが発光します。FlashMode.Autoの場合にWindows Phone OSがフラッシュをさせるかどうかを判定し、必要であればカメラ撮影時にフラッシュが発光します。FlashMode.Offの場合フラッシュは発光しません。

フラッシュモードを設定する

上記の表の通り、定義としてはフラッシュモードが4つありますが、それぞれのWindows Phone端末でハードウェア的にサポートしていない可能性があります。

そこでまずPhotoCamera.IsFlashModeSupportedメソッドを使用して、現在のカメラでそのフラッシュモードが使用出来るのかを判定し、使用可能であればフラッシュモードの設定を変更するようにします。

    // フラッシュモードの設定を行う
    // カメラが赤目補正モードに対応しているか判定する
    if (camera.IsFlashModeSupported(FlashMode.RedEyeReduction)) {
        camera.FlashMode = FlashMode.RedEyeReduction;
    }

おまけ

余談ですが、カメラのフラッシュを懐中電灯代わりに使用しているアプリケーションが公開されているのをMarketplaceにて発見しました。VideoSourceを設定せずプレビューを非表示の状態でフラッシュモードを常にONにさせることで実現させてそうです。

    // フラッシュを常に発光させる
    camera.FlashMode = FlashMode.On;

フラッシュは静止画撮影時に一瞬発光させるものである為、発光パーツの消耗や消費電力的にフラッシュを付けっぱなしにするのは、あまりおススメ出来ませんが面白いアイディアですね。

参照