「にゃんチュウ電灯」はスマートフォンアプリ選手権時に作成した電灯アプリです。
プログラマー私、デザイン@LirioYさんで作成。
猫とネズミのキャラクターが楽しいアプリなので、
デザインの力が大きいですね、
以前のバージョンでは、せっかくつけたライトが、アプリをシェイクすると消えてしまい。
点灯した上位の維持が難しいという微妙なアプリでしたが、このたび公開されたバージョンで、点灯状態をキープすることができるようになりました。
ちょっと変わったライトアプリが欲しい方は是非試してみてください。
プログラミング的なポイントはライトと携帯電話が振られた(シェイク)ことを判定するシェイクジェスチャーです。
ライトは実はカメラを起動した際のフラッシュを利用したもので、ソースコード上では以下のようにカメラをセットしています。
this._camera = new PhotoCamera(); this._camera.Initialized += this._cameraInitialized; this.VideoBrush.SetSource(this._camera);
実際は、高さ幅が0のコントロールにカメラをセットしているので、画面上に表示されることはありません。
<Canvas x:Name="cameraView" Width="0" Height="0"> <Canvas.Background> <VideoBrush x:Name="VideoBrush" /> </Canvas.Background> </Canvas>
カメラをオンにするには
this._camera.FlashMode = FlashMode.On;
です。
(Offにする場合はFlashMode.Off)
注意点は初期化が終わらないうちにカメラのFlashModeなどにアクセスしようとすると例外発生しますので、
プロパティへのアクセスは初期化終了後(Initializedイベント後)にしましょう。
もう一つのポイント シェイクジェスチャーは、Windows Phone Shake Gestures Libraryを利用します。
LibraryはAppHubからShake gestures library.zipをダウロード。
解凍したShakeGesturesSolution.slnを起動後ShakeGesturesをビルドします。
ビルドで生成された「ShakeGestures.dll」をプロジェクトの参照に追加。
後は利用したいクラスで、
using ShakeGestures;
これで利用の準備ができました。
続いて以下のようにしてシェイクジェスチャーが利用できるように初期化します。
ShakeGesturesHelper.Instance.ShakeGesture += this.Instance_ShakeGesture; // シェイクされた際のイベントハンドラー ShakeGesturesHelper.Instance.MinimumRequiredMovesForShake = 5; // 閾値を設定 ShakeGesturesHelper.Instance.Active = true; // 判定スタート
Activeプロパティにtrueを設定しないと機能しないことに注意してください。
これでシェイクイベントを利用できるようになりました。
(追記)機種によりますが、Camera.Focus()メソッドを呼び出した場合にのみフラッシュを点灯させる機種があります。
その場合はFocus()メソッドを呼び出してあげましょう。
Please give us your valuable comment