Android Sensor Simulator設定メモ

このページはAndroidのセンサーを使ったアプリケーションを開発するために
SDKのエミュレータと組み合わせて利用できるSensorSimulatorについて
インストールの仕方と設定法、サンプルアプリの起動について書き留めています。




■Sensor Simulator

センサーシミュレータはJavaで作られたAndroid SDKのエミュレータと組み合わせて利用できる アプリケーションです。
SDKのエミュレータはデフォルトでセンサー入力できる機能を持っていませんが、 センサーを利用するアプリケーションの開発はこれを利用することで、センサー入力のテストを行えるようになります。

以降にインストール手順と、付属のサンプルアプリケーションを動作させるまでを記載します。



■インストール環境

SensorSimulatorは次の環境でインストールしました。

  • OS:Windows7 Professional
  • Eclipse 3.5 Preades all in one
  • JDK1.6.0_18
  • Android SDK r05

■インストール/設定〜SensorSimulatorへの接続の実施

1.SensorSimulatorをダウンロード

次のGoogleのopenintentsのページにエミュレータのダウンロードリンクがあります。
http://code.google.com/p/openintents/downloads/list
"sensorsimulator-x.x.x-xxxx.zip" のリンクからインストール用のアーカイブをダウンロードしてください。
本稿執筆点での最新版はバージョン1.0.0-Beta1の"sensorsimulator-1.0.0-beta1.zip"でした。

ダウンロードしたアーカイブを解凍し、任意のディレクトリに格納してください。
※以下、解凍したディレクトリ(sensorsimulator-x.x.x-xxxx)を$SENSOR_HOMEと記載します。

2.シミュレータ起動

$SENSOR_HOME/bin/SensorSimulator.jarをダブルクリックして、 シミュレータアプリケーションを起動します。
ここでシミュレータ左下のテキストボックスに出力されている IPアドレスを確認しておいてください。(多分、自マシンのIPアドレス) あとでAndroidエミュレータ側の設定で使用します。

3.SensorSimulatorSettings.apkのインストール

$SENSOR_HOME/bin/に格納されているSensorSimulatorSettings.apkを Androidエミュレータにインストールします。
インストールは格納ディレクトリで次のコマンド(SDKのもの)を実行して行います。

> adb install SensorSimulatorSettings.apk

成功すると次のようなメッセージが表示されます。

501 KB/s (48266 bytes in 0.094s)
  pkg: /data/local/tmp/SensorSimulatorSettings.apk
Success

4.AnroidエミュレータからSensorSimulatorへの接続

Androidエミュレータを起動してMenuを開くとSensorSimulatorの アイコンが追加されています。

SensorSimulatorを起動します。

次の画面が表示されます。

1.で確認したIPアドレスを設定し、"Testing"タブを選択します。

次の画面が表示されます。

"Connect"ボタンをクリックしてSensorSimulatorへ接続します。

接続に成功するとつぎのような表示になります。

"orientation","accelerometer","magnetic field"のチェックボックスをONにすると SensorSimulatorの該当項目が有効になり、DISABLEだった表示が次のように 計測値が表示されるようになります。

これで、連携接続完了です。
上部の携帯のイメージをマウスでグリグリ動かしてみましょう。 計測値が変化するのがわかります。


■サンプルアプリケーションの動作確認

1.サンプルアプリケーションのEclipseへのインポート

$SENSOR_HOME/samplesに格納されている"SensorDemo"アプリケーションを Eclipseにインポートします。
Eclipseメニューの"ファイル"-"インポート"でインポートダイアログを表示します。

"一般" - "既存プロジェクトをワークスペースへ"を選択して[次へ]ボタンを押下します。


ルートディレクトリの選択でSensorDemoを指定して完了します。

ワークスペースにSensorDemoプロジェクトがインポートされます。


2.サンプルアプリケーションの実行

次はSensorDemoを実行します。
Eclipseメニューの"実行"-"実行の構成"で実行構成ダイアログを表示し、Androidアプリケーションを右クリックして 実行の構成を新規作成します。

名前、プロジェクトを設定して、"ターゲット"タブを選択します。


ここでは、すでに作成済みのターゲットを選択します。
必要に応じて、追加の後に設定してください。
実行ボタンをクリックすると、エミュレータでSensorDemoが実行されます。

うまく起動できたらSensorSimulatorの携帯イメージを動かして見ましょう。
SensorDemoアプリに表示されるセンサー計測値が変化します。

■サンプルアプリケーションのソースコード考察

サンプルも動いたところで自前で作成したテストアプリを試してみたところ、 センサーはSensorManager#getSensorList()で取得できるが、 SensorEventListener#onSensorChanged()に計測イベントが通知されない…。
サンプルのソースコード(SensorDemoActivity.java)を確認したところ、 次のとおりSensorSimulatorを利用する専用のAPIを利用するなど、 下ごしらえが必要であった。

  • $SENSOR_HOME/lib/sensorsimulator-lib.jarにクラスパスを通す。
  • マニュフェストファイルに次の宣言が必要
    <uses-permission android:name="android.permission.INTERNET"/>
  • Simulator利用のためのコード差し替え、接続コード追加(下のコード抜粋参照)

// 差し替え
//mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mSensorManager = SensorManagerSimulator.getSystemService(this, SENSOR_SERVICE);

// SensorSimulator接続のためのコード
mSensorManager.connectSimulator();

サンプルは非推奨になっているSensorListenerを利用しているので、 SensorEventLisnerが対応しているか試さないといけない。


□Androidの書籍

わたしは最初に「初めてのAndroid」を読んで、自分で一通りサンプルを動かして、 Androidアプリ開発のスタイルを理解しました。