Windows Phoneの加速度シミュレータ下部に記録されたデータとして「Shake」があります。再生するとX、Y、Zの値が揺れ、デバイスが振られたようなデータを演出します。
Shakeを再生すると、以下のグラフのような加速度データが渡されます。
このデータを使って、例えばデバイスを振ったときにイベントを実行したいということがあるかもしれません。しかし加速度シミュレータの生データを解析するのは、とても困難です。そこで、App HubにWindows PhoneでShake Gestureイベントを利用するためのライブラリが用意されています。実際に使ってみましょう。
まず「App Hub - recipe: shake gesture library」から、「Shake gestures library.zip」をダウンロード、解凍します。Visual Studioで「ShakeGesturesSolution.sln」を開き、ビルドします。すると、「ShakeGestures.dll」ができています。これで、ジェスチャを使う準備ができました。
Expression Blendで新しいプロジェクトを作成し、TextBlockを設置します。TextBlockにtbと名前を付けました。
次に、Visual Studioでプロジェクトを開き、参照の追加で「ShakeGestures.dll」を追加します。「MainPage.xaml.cs」を開き、usingにShakeGesturesを追加し、コードを以下のように記述します。
protected override void OnNavigatedTo(NavigationEventArgs e) { // イベントハンドラを設定 ShakeGesturesHelper.Instance.ShakeGesture += Instance_ShakeGesture; // イベントが反応する閾(しきい)値(多いほど鈍くなる) ShakeGesturesHelper.Instance.MinimumRequiredMovesForShake = 5; //ジェスチャの監視を開始 ShakeGesturesHelper.Instance.Active = true; } protected override void OnNavigatedFrom(NavigationEventArgs e) { // ジェスチャの監視を終了 ShakeGesturesHelper.Instance.Active = false; // イベントハンドラを解除 ShakeGesturesHelper.Instance.ShakeGesture -= Instance_ShakeGesture; } void Instance_ShakeGesture(object sender, ShakeGestures.ShakeGestureEventArgs e) { //別スレッドからUIスレッドの処理へ Dispatcher.BeginInvoke(()=> { //文字の書き換え tb.Text = "Shake!"; }); }
実行してみましょう。アプリを立ち上げ、加速度シミュレータをクリックすると、TextBlockが「Shake!」に変化します。
タップやフリックなどジェスチャと違い、Shakeジェスチャはデバイスを振ることによって、画面から一度目を離すことになります。一方で、Shakeジェスチャは両手を必要としないことから、最も簡単に行うことのできるジェスチャでもあります。
実際にShakeジェスチャは、Facebook公式アプリでデータを再取得する際に使われています。
Shakeイベントが使われたFacebookアプリ
「デバイスを持つ片手で一振り」と「イベントの処理内容」がうまく合致するようにアプリをデザインすれば、手軽に使ってみようと思えるアプリになるのではないでしょうか。
泉本優輝
UIデザインからプログラミング、表現までやりたい、自称クリエイティブデザイナ
“さわってみたい”を創ることが目標。フィジカルコンピューティングなどの試作を行う傍ら、コミュニティ活動ではExpression Blendを中心としたセッションを行っている
Copyright © ITmedia, Inc. All Rights Reserved.