WORKS 作ったもの

カーナビと連携するアプリが欲しいなと思った

プロジェクトの目的

レクサス UX250h の純正ナビは…というか世の中のナビ大体そうなのかなと思ってるが、

  • 店名で検索しても見つからない
  • 古いデータが残っている
  • 遠方の同名施設が候補に出る

など使い勝手が悪い。

一方、Googleマップは検索精度が非常に高いため、

Googleマップで検索した地点をワンタップで純正ナビへ送る

というAndroidアプリを作りたい。

最終的なユーザー操作イメージ

  1. Googleマップで目的地を検索
  2. 行きたい場所を開く
  3. 「共有」を押す
  4. 共有先から自作アプリを選択
  5. 自作アプリが自動で処理
  6. NaviConへ地点情報を送信
  7. 車のナビが目的地設定される

ユーザーはGoogleマップだけを使えばよく、
自作アプリは裏側で処理するだけの「橋渡し役」にしたい。

UIについて

最初は専用UIは不要。

Googleマップの検索UIをそのまま利用した方が、

  • Googleの検索精度をそのまま使える
  • UI開発が不要
  • 保守が楽

というメリットがある。

技術構成

  • Android:Kotlin
  • HTTP通信:OkHttp
  • Google Maps:Share(Intent)
  • 車:NaviCon連携(Intent)

NaviConについて

仮説として、Googleマップから取得した、

  • 緯度
  • 経度
  • 地点名

をそのままNaviConへ渡せれば、ナビ側は座標を目的地として設定できるはず。

特に重要なのは、

座標を送ること

名前は補助情報程度。

ナビ内に施設名が存在しなくても、緯度経度さえあれば目的地設定できる可能性が高い。

座標精度

GPS誤差は数メートルあるものの、住宅レベルまで案内可能。

玄関ピッタリではないが、実用上は十分。

最大の懸念

Googleマップの共有が、

何を渡してくれるのか

これが最大の不確定要素。

懸念は、Googleマップが、

https://maps.app.goo.gl/xxxx

のような短縮URLしか渡してくれないのでは?という点。

実際に確認したこと

LINEへGoogleマップを共有したところ、送られてきたのはGoogleマップURLのみだった。

つまり、Googleマップは座標を直接共有していない可能性が高い。

そこから考えた仮説

短縮URLなら、まずURLを展開すればよい。

展開後URLの中には、

  • 緯度
  • 経度
  • Place ID

などが含まれている可能性がある。

つまり、

Googleマップ共有

短縮URL取得

URL展開

緯度経度抽出

NaviCon送信

という流れになる。

URL展開について

ここは特殊な技術ではない。

HTTP通信すると、Googleサーバーが「302 Redirect」を返してくる。

HTTPライブラリ(OkHttp)は、このリダイレクトを自動追跡できるため、最終URLを取得できる。

つまり、自前で短縮URLを解析する必要はない。

Android側で気になったこと

Q1:Googleマップの共有先に自作アプリを表示できる?

回答

可能。

AndroidのIntent Filterを定義すればよい。

Q2:Googleマップは座標を直接くれる?

回答

現時点では不明。

まず実際に共有データを受け取って確認する必要がある。

開発方針

いきなり完成版を作らない。

不確定要素だけを順番に潰す。

フェーズ1:Googleマップから共有を受信できるか

目的

Intent受信確認

完成条件

Googleマップから共有すると、自作アプリが起動する。

フェーズ2:共有データ確認

目的

Googleが何を送っているか調査

完成条件

TextViewなどに受信データを全部表示する。

確認したい内容

  • URLだけか?
  • Place IDがあるか?
  • 座標があるか?

フェーズ3:短縮URL展開

目的

Google短縮URLを元URLへ変換

完成条件

最終URLが取得できる。

フェーズ4:URL解析

目的

展開後URLから緯度・経度取得

完成条件

画面に、

Latitude
Longitude

が表示される。

フェーズ5:NaviCon連携

目的

取得した座標をNaviConへ送る

完成条件

NaviConが起動する。

フェーズ6:実車確認

目的

UX250h純正ナビで目的地設定されるか確認

完成条件

車のナビが目的地設定される。

このアプリの本質

このアプリは、Googleマップの代替ではない。

GoogleマップとNaviConを橋渡しする、非常に小さなユーティリティである。

検索機能も地図表示も持たず、共有データを受け取り、必要な情報だけ抽出して、NaviConへ渡すことだけを責務とする。

じゃあやってみるかな

どこでつまづくかは分からんが、とにかく作ってみよう。

コメント

タイトルとURLをコピーしました