ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

Windows Phoneアプリ開発 – たった3行でできる加速度センサの利用

with 3 comments

IMG_3857_mid_640_480

<Fig.1 : 加速度センサの値を画面に表示するサンプル>

Windows Phoneにとって、というよりもモバイルデバイスにとって加速度センサの役割は重要である。加速度センサは言葉を変えると「傾きセンサー」であり、これを使うとモバイル機器を傾けることで機器をコントロールすることができる。Windows Phoneは様々なメーカーからモデルが出されるが、加速度センサーは標準仕様であり、必ず実装されなければならないものとなっている。このように基本仕様を決めることは開発にとってメリットがある。開発ツールで標準のライブラリさえ提供できれば、プログラム上で利用することが簡単になるからだ。Windows Phoneプログラミングでは加速度センサーを参照する標準のクラスが用意されており、これを使うと実に簡単に加速度センサの値を取得することができる。

上のFig.1は加速度センサの値をX、Y、Z軸でそれぞれ検知し、テキストボックスに値を表示するサンプルである。

加速度センサを参照するためには、次のようにたった3行でいい。

1.Accelerometerのインスタンス変数を定義する
2.new演算子でインスタンスを生成する
3.myAccelerometer.CurrentValue.Acceleration.Xで値を取得する

実際には上のサンプルは、myAccelerometer.CurrentValueChangedイベントプロシージャでリアルタイムに加速度センサの値が変化するたびにテキストボックスの値を書き換える処理をしている。このサンプルでは、テキストボックスの上から「X値」、「Y値」、「Z値」を表示している。また必要な参照設定を追加し、名前空間の追加も必要である。

IMG_3858_mid_640_480

<Fig.2 : Windows Phoneを右に傾けると加速度センサのX値が正となり増加する>

IMG_3859_mid_640_480

<Fig.3 : Windows Phoneを左に傾けると加速度センサのX値が負となり減少する>

Windows Phone本体を左右に傾けるとX軸の値が変化する。右に傾ければX値が増加し、左に傾ければX値は減少する。平らな状態が「0」であり、最大値は1、最小値は-1だ。また本体を左右に傾けることでZ軸も傾くのでZ値も変化していることがわかる。

IMG_3860_mid_640_480

<Fig.4 : Windows Phoneを向こう側に傾けると加速度センサのY値が正となり増加する>

IMG_3861_mid_640_480

<Fig.5 : Windows Phoneを手前に傾けると加速度センサのY値が負となり減少する>

Windows Phone本体を向こう側や手前に傾けるとY軸の値が変化する。向こう側に傾ければY値が増加し、手前に傾ければY値は減少する。平らな状態が「0」であり、最大値は1、最小値は-1だ。左右に傾けた時と同様に、向こう側や手前に傾けるとZ軸も傾くのでZ値も変化している。

IMG_3862_mid_640_480

<Fig.6 : Windows Phoneをひっくりかえすと加速度センサのZ値が正となり増加する>

加速度センサのZ値は、体感的にはわかりにくいが本体の手前から裏側に向かって突き抜ける回転軸である。Windows Phone本体をどの方向にであれ傾けるとZ軸の値が変化する。通常、表パネルを手前に向けた状態でZ値は負であり、上の写真のように本体をひっくりかえすとZ値は正になる。平らな状態が「-1」または「1」であり、本体が立った状態で「0」となる。

加速度センサは魅力的なインターフェースである。加速度センサーを使うことができれば、いろいろなアプリケーションのアイデアが湧くだろう。どんなアプリケーションを作ろうかと、いろいろと考えるだけで楽しい。30年以上も前、はじめて「パソコン」というものに触れ、プログラミングに熱中してあっというまに朝が来た日々を思い出す。Windows Phoneプログラミングは俺の心を捉えて離さない。

コメント / トラックバック3件

Subscribe to comments with RSS.


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。