[[labs.beatcraft.com]]~ [[bc9/Software/Android]]~ #contents *sensors for bc9 [#e5d43b94] Android 上から bc9 ベースボードの加速度センサー、地磁気センサー、方位センサーを使用する手順を記載します。~ Android 上から bc9 ベースボードの加速度センサー、地磁気センサーを使用する手順を記載します。~ *必要要件 [#yf1d33e0] Android 上からセンサーを利用するためには、[[bc9/Software/Android/kernel2.6.29-bc9-r7]] の手順に従って kernel を更新し~ 各センサー用の device driver が機能している必要があります。~ この sensors for bc9 の記述は~ ・kernel 2.6.29-bc9-r7~ ・android-1.5r3 + ALSA + wifi~ の組み合わせでビルド作業と動作確認を行っています。~ ビルドには 2.6.29-bc9-r7 kernel の header が必要になります。~ 以下の記述では bc9-android-sdk の kernel source の場所を前提にしています。 android-1.5r3 の source も必要になりますが、android 全体を再ビルドする必要はありません。 また、android-sdk をインストールして PATH が設定してあり、~ adb([[Android Debug Bridge:http://developer.android.com/intl/ja/guide/developing/tools/adb.html]]) が使用可能にしてある前提です。 *手順 [#g88de642] **glue code のビルドと配置 [#h0544650] 添付の &ref(bc9-sensors.tar.gz); をダウンロードし展開します。~ $ tar xvfz bc9-sensors.tar.gz $ cd bc9-sensors $ ls gluecode project glucode/ を ~/android-1.5r3/hardware/libhardware/modules/ にコピーします。 $ cp -a glucode ~/android-1.5r3/hardware/libhardware/modules/ sensors/ にある Android.mk の LINUX_KERNEL_ROOT の PATH を自分の Linux kernel のルートを指すように書き換えます。 $ cd ~/android-1.5r3/hardware/libhardware/modules/sensors/ $ vim Android.mk LINUX_KERNEL_ROOT := /home/beat/kernel_work/linux-android-2.6.29-bc9-r7 以下のようにして Android の部分ビルドができる準備をします。 $ cd ~/android-1.5r3/build/ $ source envsetup.sh ビルドします。 $ cd ~/android-1.5r3/hardware/libhardware/modules/sensors/ $ mm android-1.5r3/out/target/product/generic/obj/SHARED_LIBRARIES/sensors.default_intermediates/LINKED/ に~ ライブラリ sensors_default.so が生成されます。~ ~ ''' 注:センサー類は gps とは異なり、 libhardware 以下の hal モジュールとして実装するようになっています。 ''' ~ ''' これは共有ライブラリとして /system/hw/lib 以下に置かれ、はじめて必要になった際に dlopen(2) されます。 ''' ~ ''' GPS は libhardware_legacy に置かれ、android のロード時に全て静的にロードされていました。 ''' ~ ''' GPS については[[こちら>bc9/Software/Android/gps]]を参照してください。 ''' ~ ~ 生成されたライブラリを bc9 起動 microSD の android-root/system/hw/lib/ にコピーします。~ microSD の第1パーティション(FAT16)、第2パーティション(EXT3)がそれぞれ作業用PC の /media/disk、/media/disk-1 に ~ マウントされている前提で、~ $ sudo cp -a android-1.5r3/out/target/product/generic/obj/SHARED_LIBRARIES/sensors.default_intermediates/LINKED/sensors_default.so /media/disk-1/android-root/system/hw/lib/ これで android アプリケーションから各センサーを利用する準備ができました。~ ** アプリケーションのビルドと展開 [#qf914430] デモ用のアプリケーションには2種類あります。~ ***加速度センサーデモ用アプリケーション [#h1574919] bc9-sensors/ の project/ を eclipse で import してビルドすると、project/bin/ に SensorApp.apk が生成されます。~ 以下のようにしてビルド作業用 PCから adb 接続し adb install します。~ $ cd ~/bc9-sensors/project/bin/ $ export ASBHOST=192.168.0.144 $ adb kill-server $ adb start-server $ adb install SensorApp.apk 正常にインストールできたら android のアプリケーションランチャーから BC9-Sensors を起動してください。~ bc9 実機の姿勢によって「縦」「横」「水平」の3つのパターンが出ます。~ 実機を振るとバックグラウンドが黄色く光ります。~ &ref(sensor01.png); ***コンパスデモアプリケーション [#oea133df] [[android-30days-apps:http://code.google.com/p/android-30days-apps/]] から 21day.apk をダウンロードし、以下のようにしてインストールします。~ $ cd ~/ $ export ASBHOST=192.168.0.144 $ adb kill-server $ adb start-server $ adb install 21day.apk 正常にインストールできたら android のアプリケーションランチャーから Compass を起動して下さい。~ コンパスアプリケーションが起動し北の方角を示します。~ &ref(compass.png);