[[labs.beatcraft.com]]~ [[bc9/Software/Android]]~ #contents * GPS on Android [#t4217110] -bc9 ベースボード の GPS用シリアルコネクタに接続した GPS モジュールを Android 上から利用するための手順です。 -使用する GPS モジュールは、sparkfun の [[GPS Micro-Mini:http://www.sparkfun.com/commerce/product_info.php?products_id=8936]] です。 -GPS モジュールと bc9 ベースボードの GPS用シリアルコネクタを接続するケーブルは自作する必要があります。~ bc9 ベースボードの GPS用シリアルコネクタと接続する側は~ ヒロセ電機(HIROSE ELECTRIC CO., LTD.)の~ 型番: DF13A-4P-1.25H(20)~ ~ spakfun GPS Micro-Mini と接続する側は~ ヒロセ電機(HIROSE ELECTRIC CO., LTD.)の以下のソケットおよびコンタクト(いずれか一種類)~ ~ -ソケット~ 型番: DF13-4S-1.25C~ ~ -コンタクト~ 型番 適合ワイヤ 挿抜 端子 ------------------- -------------- ------ --------- DF13-2630SCFA(04) AWG26 〜 AWG30 標準 金メッキ DF13-2630SCF AWG26 〜 AWG30 標準 錫メッキ DF13-3032SCFA(04) AWG30 〜 AWG32 標準 金メッキ DF13-3032SCF AWG30 〜 AWG32 標準 錫メッキ DF13G-2630SCFA AWG26 〜 AWG30 低挿抜 金メッキ DF13G-2630SCF AWG26 〜 AWG30 低挿抜 錫メッキ ~ &ref(gps-module-small.jpg); * 必要用件 [#z81d89d6] この GPS の動作は~ ・bc9 用 patch を適用した android kernerl 2.6.29 (kernel-2.6.29-bc9-r7)~ ・android-1.5r3 + ALSA + wifi~ の組み合わせ上で動作確認しています。~ このソフトウェアのビルドには linux kernel の header が必要になりますので、~ 起動させる kernel のソースを予め用意しておいて下さい。~ 以下の記述では bc9-android-sdk の kernel source の場所を前提にしています。 また、GPS を使用するために android-1.5r3 全体を再ビルドする必要はありません。~ libhardware_legacy.so だけを再ビルドして入れ替えますので、~ bc9/Software/Android/Android-1.5r3 を一度実行していることを前提としています。~ * 手順 [#ba3beb48] ** Android Hardware library の再ビルドと配置 [#bd8fc0cd] 以下のようにして部分ビルドができる準備をします。 $ cd ~/android-1.5r3/build/ $ source envsetup.sh 1. 添付のアーカイブ &ref(bc9-gps.tar.gz); を ~/android-1.5r3/hardware/libhardware_legacy/gps 以下に展開します。 $ tar xvfz bc9-gps.tar.gz $ cd bc9-gps $ ls Android.mk gps.cpp gps_bc9.c gps_qemu.c $ cp * ~/android-1.5r3/hardware/libhardware_legacy/gps/ 2. Android 用の Makefile、 Android.mk の BC9_KERNEL_DIR を書き換えます。 $ cd ~/android-1.5r3/hardware/libhardware_legacy/gps/ $ vim Android.mk BC9_KERNEL_DIR= :/home/beat/kernel_work/linux-android-2.6.29-bc9-r7 3. 以下のようにして libhardware_legacy.so を再ビルドします。 $ cd ~/android-1.5r3/hardware/libhardware_legacy/gps/ $ mm これで ~/android-1.5r3/out/target/product/generic/system/lib/ に libhardware_legacy.so が再ビルドされます。~ 4. 3. で作成した libhardware_legacy.so を /system/lib/libhardware_legacy.so に上書きします。~ すでに bc9 上で android-1.5r3 を起動している場合は、以下のようにしてビルド作業用 PCから adb 接続し /system/lib/ に adb push します。~ $ export ASBHOST=192.168.0.144 $ adb kill-server $ adb start-server $ adb push ~/android-1.5r3/out/target/product/generic/system/lib/libhardware_legacy.so /system/lib あるいは bc9 起動用 microSD を作業用 PC にマウントし、~ 以下のように第2パーティションの /android-root/system/lib/ にコピーしてから起動しても同じです。 $ sudo cp -a ~/android-1.5r3/out/target/product/generic/system/lib/libhardware_legacy.so /media/disk-1/android-root/system/lib/ 5. android の設定をハードウェア GPS が有効になるように sqlite で設定データベースを書き換えます。~ すでに bc9 上で android-1.5r3 を起動している場合は、以下のようにしてビルド作業用 PCから adb 接続し、~ adb pull でビルド作業用PC へコピーして書き換え、adb push で書き戻します。~ $ adb pull /data/data/com.android.providers.settings/databases/settings.db . $ sqlite3 settings.db sqlite> update secure set value = 'gps,network' where name='location_providers_allowed'; sqlite> .exit $ adb push settings.db data/data/com.android.providers.settings/databases/ あるいは bc9 起動用 microSD を作業用 PC にマウントし、~ 以下のように直接設定データベースを書き換えてから起動しても同じです。 $ cd /media/disk-1/android-root/data/data/com.android.providers.settings/databases/ # sqlite3 settings.db sqlite> update secure set value = 'gps,network' where name='location_providers_allowed'; sqlite> .exit 6. init.rc の、/dev/bc9_leds のパーミッションを設定する行の下に、以下の一行を加えます。~ chmod 666 /dev/ttyS2 以上で GPS を Android から使う下回りの準備が整いました。 ** サンプルアプリのインストール [#q8480d08] 添付のサンプルアプリケーション &ref(bc9-gps.apk); をダウンロードし、以下のようにインストールします。 $ export ASBHOST=192.168.0.144 $ export ADBHOST=192.168.0.144 $ adb kill-server $ adb start-server $ adb install bc9-gps.apk 正しくインストールできたら、Android の GUI から起動し、ビルド作業用PC から adb logcat して下さい。~ 以下のようになれば正常に動作しています。~ ・Android のノーティフィケーションエリア(画面最上部の時計や電池状態が表示される部分)にGPS 測位中のアイコンが表示される。~ ・bc9-gps アプリケーションの UI に Hello World,BC9GPSActivity! という文字が表示される。~ ~・adb logcat の log には Received: '................... と GPS モジュールから取得した値が出力され続ける。~ 以上です。~ ** サンプルアプリケーションのソースコード [#o08d7abf] サンプルアプリケーションのソースコードは、添付の &ref(bc9-gps-sampleapp-src.tar.gz); をダウンロードして御参照下さい。~ ~