SensorSimulator (OpenIntents)

加速度センサーをエミュレータで使いたいときはOpenIntentsのSensorSimulatorを使う。
http://code.google.com/p/openintents/wiki/SensorSimulator


これを使うにはAndroid側にOpenIntentsを入れる必要があって、とりあえずソースのopenintentsだけ落としてEclipseからAndroidエミュレータにインストールしてみたんだけど、これだけだとタブに何も出て来なくて使えなかった。1年くらい前に試したときは使えた気がするんだけど、あのときはantでコンパイルしたか、あるいはNetBeansだったからかも知れない。NetBeansはant使うから。
最初はバージョンのせいかと思ったけどそうではなく、ソースをざっと見たところopenintents自体はランチャーみたいなもので単体では何もできないようだ。


というわけでSensorSimulatorのActivityも入れる必要がある。
Andも面倒なのでEclipseで簡単に動かすには、
trunk/openintents (プロジェクト名はOpenIntentsView)
の他に、
trunk/sensorsimulator/SensorSimulatorSettings (プロジェクト名はSensorSimulatorSettingsActivity)
のプロジェクトも作って、
OpenIntentsView側のビルドパスのプロジェクトにSensorSimulatorSettingsActivityを追加すればOpenIntentsのアプリのSettingsタブの中にSensor Simulatorのアイコンが出てくるようになった。
いちいちプロジェクトを作って追加しなくてもまとめてビルドする方法もあると思うんだけど、今回はSensorSimulatorだけ使えれば良かったので追求せず。


無事AndroidエミュレータでSensorSimulatorが入ったらSensorSimulatorのjarのほうをコンパイルして起動して、そのログに出てくるIPアドレスをOpenIntents側のSensorSimulatorのSettingsに入力。
Testingタブで動きを見たい項目にチェックを入れたら、jarのアプリ側の端末の絵を動かせば数値が変わる。


ちなみに起動時はy軸に重力がかかっているので、端末は立っている状態ってことになる。ディスプレイを普通に横から見てるならそのままの向きってこと。
今回は加速度しか扱わないのでそこだけ観察してみた。
画面をこっちに向けた状態で、
右がx軸+、左がx軸-。
上がy軸+、下がy軸-。
手前がz軸+、奥がz軸-。
相対的な加速度だけ知りたいなら重力加速度はあらかじめ引いといた方がいいな。
数値の変化が速くてよく見えないんだけど、激しく動かしてもせいぜい+-5くらいしか変わってないみたい。変化の幅は結構小さいんだな。重力は9.8もかかってるのに。まぁ実機での振り幅がどんなもんかこれだとよく分からないから参考までに。


欠点はマウスを使う関係上一度に2方向にしか動かせないこと。向きを変えてやれば違う軸の方向にも動かせるけど、画面に対して前後左右の2方向だけであることには変わりない。縦横前後の全方位を同時に駆使するアプリとなるとコードの動作確認には使えても操作感はこれじゃ分からない。
そういえば最初作ろうとしてたのは縦と横だけでいいんだった。そういうのを作ろうとしている人にはこれで十分か。
3Dマウスとか加速度センサー付きのUSBのガジェットでも繋げてコードいじればなんとかなるとは思うんだけど、どうせ実機買うから。


なんだかんだで意外と手間取った。