2010-07-20 (火)
*[Android] センサーとか
入力がタッチパネルだけなのは面白くないので,内蔵されているセンサーのうちいくつかを使ってみる.
どのセンサーも使い方は簡単で,SensorManagerで使いたいSensorを取得して,SensorEventListenerを実装したリスナーを登録すれば,値が更新されるたびにデータが飛んでくる.マニフェストファイルに何か追記しなければいけないのかと思ったけど,とりあえずそのままで使えました.
加速度と地磁気センサーから現在の姿勢を簡単に知る機能が用意されてないかと探したところ,TYPE_ORIENTATIONを見つけたのだけど,マニュアルには非推奨(deprecated)だと書かれているので,SensorManager.getRotationMatrixを使う.ただし,各センサーから自分で取ってきた値を入れてやらないといけないみたい.なんていうか,そのハードに搭載されているセンサーを自動的に組み合わせて可能な限り正確なデータを取得してくれる何かが欲しかったのだけど期待しすぎだったか.取得した行列はOpenGLでも使えるみたい.
些細なことだけど,ACCELEROMETERとGYROSCOPEだけ名前がセンサーを意味してるのが気になるな.他は,TEMPERATUREとかLIGHTとかMAGNETIC_FIELDのように計測対象を表す名前なのに….
とりあえず,加速度と地磁気から姿勢を得ることができました.
これだけでも色々作れそうですが,とりあえず次はGPSにしようかな.