Android ではたくさんのセンサーがサポートされています。
API リファレンスによると、現在想定されているのは以下の種類です。
加速度センサーは、端末の前後(Y軸)・左右(X)・上下(Z)の動きを検知するものです。他のサイトでは、「加速度センサー=重力センサー」と言ってる人もいるようですが、私は違うと思います。もちろん、重力による動き、つまり重力加速度も検知されます。机の上に置きっぱなしでも重力は常にかかっているので、下方向への値が常に検出されるのが面白いところです。
照度センサーは、明るさを検知するもので、液晶の自動輝度調整なんかに役立ってますね。
地磁気センサーは、磁場の強さを図るものです。たぶん富士の樹海に行くと面白い結果を返すのかも知れません。 おそらく 方位センサー は、地磁気センサーをラップして作られているのではないかと思います。
近接センサーは、至近距離にモノがあるかどうかを検知します。スマホで通話中に画面にタッチして誤操作しないのは、このセンサーによって画面をロックしてるからだそうです。という説明を聞いたときは目からウロコでした。
温度センサーは、端末の温度を測るものです。気温は測れないようです。
と、ここまでが、今入手できる Android には普通に搭載されているセンサーです。
次に、今後の端末に搭載が期待されるのがジャイロスコープです。これは「X/Y/Z軸それぞれについての回転」を検出するものです。松坂がメジャーに行った時、ジャイロボールというのが話題になりましたね。どーでもいいですね。えーと、加速度センサー(3軸)とジャイロスコープ(3軸)を合わせたものが6軸センサーと呼ばれ、より正確な姿勢判別・制御が行えるとのことです。
そしてなんとこのジャイロスコープ、iPhone4 には既に搭載されているとのことです。くそう、悔しいですね。
圧力センサー、たぶん気圧が検知できるんだと思います。主に高度の取得に役立つのでしょう。GPS の高さも精度があまりよくないですから。
この2つのセンサーは、近い将来一般化するだろうとの事です。
そして Android SDK の Level:9 (Gingerbread) から追加された謎のセンサータイプ達です。
TYPE_GRAVITY は 重力センサーで間違いないだろうと思います。加速度センサーでも重力は検出できますが、端末の向きによって X/Y/Z 軸のどこに重力加速度が検出されるか分かりません。加速度センサーを使う上で一番難しいのが「如何に重力加速度を除外するか」だそうです。もしかしたらこのセンサーは、そういった問題の助けになるのかも知れません。
そして全く読めないのが最後の二つ。
TYPE_LINEAR_ACCELERATION 、”直線的” な ”加速度” ?なんじゃそりゃ。ベクトルを決めてそれに対する加速度だけを得ることができるのかな?
TYPE_ROTATION_VECTOR 、ベクトルの回転 ???う、うーむ。これもベクトルを決めて、それに対する回転量だけを得られる、のかな?
展開の速い Android ですから、謎なセンサータイプも近い将来、何か分かるでしょう。 その時には、また新しいセンサーが搭載されているかも。
私が、センサーに興味を持ったのは、昨年、
というイベントに(仕事で)参加させていただいた事がきっかけです。
HASC Challege とは、加速度センサーを装着して収集したデータから、人間の行動(歩く、走る、階段の昇り降り、など)の認識率の高さを競い合うものです。
このシンポジウムに参加するまでは、加速度センサーで人間の行動を識別できるなどとは思ってもみなかったのですが、成果の発表でかなり高い認識率を示していたのに驚きました。そして、加速度センサーだけでなく、いろいろなセンサーを組み合わせることで更に高速に正確に行動を認識できるようになる、と。
シンポジウムの様子は、Toggetter と Ustream で見られますので、是非ご覧ください。
これらのセンサー技術は、例えば GPS と組み合わせる事でより正確な位置を検出したり、GPS が使えない場合の補助になったりしますし、AR(拡張現実)分野でも、端末の正確な姿勢判定に役立ちます。
スマートフォンから離れますが、PlayStation Move や今話題の Kinnect などもセンサ技術ですよね。
今、**センサーがアツい!**です。これからもっと熱くなるんではないかと思います。 今のうちにセンサーの事をもっともっと勉強しておきたいです。