labs.beatcraft.com
bc9/Software/Android

GPS on Android

  • bc9 ベースボード の GPS用シリアルコネクタに接続した GPS モジュールを Android 上から利用するための手順です。
  • 使用する GPS モジュールは、sparkfun の GPS Micro-Mini です。
  • 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  低挿抜  錫メッキ

    gps-module-small.jpg

必要用件

この 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 を一度実行していることを前提としています。

手順

Android Hardware library の再ビルドと配置

以下のようにして部分ビルドができる準備をします。

$ cd ~/android-1.5r3/build/
$ source envsetup.sh

1. 添付のアーカイブ filebc9-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 から使う下回りの準備が整いました。

サンプルアプリのインストール

添付のサンプルアプリケーション filebc9-gps.apk をダウンロードし、以下のようにインストールします。

$ 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 モジュールから取得した値が出力され続ける。

以上です。

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

サンプルアプリケーションのソースコードは、添付の filebc9-gps-sampleapp-src.tar.gz をダウンロードして御参照下さい。


添付ファイル: filebc9-gps-sampleapp-src.tar.gz 1851件 [詳細] filebc9-gps.apk 1854件 [詳細] filebc9-gps.tar.gz 2056件 [詳細] filegps-module-small.jpg 2089件 [詳細] filegps-module.jpg 1102件 [詳細]

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2010-05-18 (火) 14:00:15 (5254d)