2014年7月21日月曜日

ツーリング用ナビアプリ プロジェクト(2)

プロジェクト ツーリング用ナビ の続き.

Google マップのマイマップでエクスポートした KML を Android の MapView に読み込むとこまでできた.

直接 MapView が KML をレンダリングしてくれればチョー楽だったんだけど,残念ながらそこまでは行けてなかった.
しかたがないので,XmlPullParser で KML をパースして WayPoint とルートの線をここらへんを見ながら
←表示してみた.

ウヒョヒョwww だいぶいい感じ.

ここまでできたので,次にナビの起動を実装してみた.前回書いたようにナビの起動自体はインテントを投げるだけなんだけど,ここで問題発生.
経由地に到達したら (Google ナビが起動中の状態で) 次のナビを起動することになるけど,そうすると前動いていた方のナビで「ナビを終了しますか?」というダイアログが表示されて,手動でボタンを押さないと次のナビが起動しない.経由地毎に操作するとかありえないので,これは痛い.

仕方がないので,次のナビを起動する前に Google マップのプロセスを強制終了させることにした.普通は ActivityManager.killBackgroundProcesses() で kill できるはずなんだけど,どうやってもうまくいかない.で Automatic Task Killer とか他のタスクキラーアプリの挙動を観察していると,どうもナビ起動中の Google マップは killBackgroundProcesses() 出来なさそうなことがわかった(;´д⊂)
android.os.Process.killProcess() なら kill できるけど root 権限必須だし.

別の切り口で,ここによると
FLAG_ACTIVITY_CLEAR_TOP を設定することでタスクに積まれたアクティビティを再開させることができる(タスクに積まれていなければ新しく開始される)。
このとき、再開されたアクティビティより上に詰まれた(新しい)アクティビティはすべてが破棄される。
つまり、アプリ実行時に最初に起動されるアクティビティを呼び出すことで最初の状態に戻すことができる。
これだ!(`・ω・´) シャキーン と思ってやってみたけど,状況変わらず(´・ω・`) ショボーン

んー,困った.

0 件のコメント:

コメントを投稿