シェアードライブラリ libhardware_legacy がGPSデバイスとのI/Fの入り口になる。
このライブラリの中で、GPSデバイスに対する制御のためのI/Fが取得される。
GPSを操作するときは、得られたI/F -> GPSライブラリ へと呼び出される形になる。
デバイスへのR/Wとかパースとか、実処理はGPSライブラリによって行われる。
で、現状はI/Fの接続先が、GPSデバイスエミュレータ用のダミーになっている。
つまり、GPSライブラリ自体が存在せず、ダミーにつながれていて、ダミーなので当然、I/Fから得られる情報は全部 false。
つまり、デバイスを見に行こうにも見に行くことなど到底ムリ。な、わけ。
これは、libhardware_legacy をmakeするときに、GPSについてはダミー関数をリンクしちゃってるってことで、逆に考えれば、GPSライブラリを使ったちゃんとした(?)libhardware_legacyをmakeしてやればいいんじゃないの?
んで、現状のと入れ替えちゃえば動くかな?
って、感じの方針で行ってみる。
いつものとおり、かなりイイカゲン。
んで、ぐるぐるしてたら、eclair用とおぼしきgpsライブラリの実装を見つけた。
ttp://gitorious.org/android-on-freerunner/freerunner_platform_hardware_hw/trees/eclair/gps
たぶん、これでいけるんじゃないか?と思って、さらにぐるぐるしてたら、実際に独自の実装で同じことをされてる方がおられた。
ttp://labs.beatcraft.com/ja/index.php?bc9%2FSoftware%2FAndroid%2Fgps
をぉ!これでいけるかも!?
早速、実験♪
と言うところが、3日ほど前のオイラ。
・・・環境作るのに時間かかった・・・(´・ω・`)
ケド、、、、
実験用のlibhardware_legacyをビルドしてGPSの初期処理なんかを適当にやってみると、、
以前は「GPSが見つからんがな」とか言って起動しなかった GPS Searcher が起動したよ(゜д゜)
位置情報は拾ってないけどw
で、現状での問題点がいくつかある。
- GPS設定のUIが出せていない。
GPSの強制ONはできてるからとりあえず後回し。 - なぜかwifiがつながらなくなる。
ONにすらできない。libの作り方を間違ってるか、制御用のソースが別に必要なのか、わからん。 - 位置情報を教えてくれない。
処理が抜けてる気がするww
どれもこれも致命的じゃまいか(笑)
まぁ一歩前進、と言うことだけど
公開できるレベルじゃないなぁ~(´・ω・`)
まだ先は長い。
0 件のコメント:
コメントを投稿