[[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); をダウンロードして御参照下さい。~
~

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS