ナビゲーション アプリのインテントを実装する

Google アシスタントは、ナビゲーション アプリがサポートできる 3 種類のインテントを使用します。相互運用性を実現し、アプリと Google アシスタントを統合するには、このページで説明するインテント フィルタをアプリのマニフェストで宣言します。インテントの詳細については、Intent をご覧ください。

アシスタント ナビゲーション アプリの Intent クラスは、次のインテントをサポートしています。

  • ナビゲーション インテント
  • 検索目的
  • カスタム アクション インテント

インテント データフロー

図 1. インテント データフロー。

インテント データのパラメータ

インテント データは、渡すインテントに基づくパラメータを含む URI 形式に従います。一部のパラメータは、常にデータで指定されます。つまり、常に明示的な値が設定されていると想定できます。ただし、オプション パラメータにデータで値が設定されているとは限りません。詳細については、データテストをご覧ください。

オフライン インテント

このページに記載されているすべてのインテントには、オフライン バリアントが用意されています。これらを区別するには、スキームに .offline を追加します。たとえば、ナビゲーション インテントでは geo.offline スキームが使用されます。マニフェスト内のこれらのインテント フィルタは、アプリがこれらのアクションをオフラインでサポートできることを示します。

ナビゲーション インテントを使用して、特定のデスティネーションに移動するユーザーのリクエストを処理します。このデスティネーションには、単一の場所(住所)または複数の場所(コーヒーショップやガソリンスタンドなど)を指定できます。インテントデータは、各インテントに対して指定された URI 形式に従います。

インテント フォーマット

Intent クラスは、ナビゲーション アプリのインテントに次の形式を使用します。

カテゴリ: android.intent.category.DEFAULT

アクション:

  • Android Auto と Android Automotive OS: androidx.car.app.action.NAVIGATE
  • その他のフォーム ファクタ: android.intent.action.NAVIGATE

スキーム: geo

例:

  • geo:0,0?q=Googleplex
  • geo:0,0?q=1600+Amphitheatre+parkway&mode=b&intent=add_a_stop
  • geo:0,0?q=coffee+shop&mode=w&intent=navigation
  • geo:1.1,2.2?q=Starbucks+on+Main+Street&mode=w&intent=navigation

推奨されるアプリの動作: 指定した場所へのナビゲーションが開始されるか、ユーザーに複数のオプションから選択するよう求められます。

マニフェストのインテント フィルタ

ナビゲーション アプリがナビゲーション インテントを受信できることを Google アシスタントに通知するには、アプリのマニフェスト ファイルで次のインテント形式を宣言します。

Android Auto と Android Automotive OS を除くすべてのフォーム ファクタ:

<intent-filter>
  <action android:name="android.intent.action.NAVIGATE" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

Android Auto と Android Automotive OS:

<intent-filter>
  <action android:name="androidx.car.app.action.NAVIGATE" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

指定されたパラメータ

提供されるナビゲーション アプリのインテント データでは、次のパラメータを使用できます。

位置情報クエリまたは地理座標

すべてのナビゲーション インテント クエリには、リクエストされたデータの種類に応じて、次のパラメータの 1 つまたは両方が含まれます。

  • 位置情報クエリ

    ユーザーがナビゲートしようとしている場所を指します。このデータを使用して、ユーザーの宛先を解決します。

    パラメータキー: q
    値: ユーザーがクエリした目的地。

    例: geo:0,0?q=Golden+Gate+Bridge
    解釈: ユーザーは ゴールデン ゲート ブリッジに移動しようとしています。

  • 地理座標(緯度と経度)

    ユーザーがナビゲーションに使用する特定の座標を指します。

    パラメータキー: geo:lat,long
    値: ユーザーがクエリした座標。

    例: geo:1.1,2.2?mode=w&intent=navigation
    解釈: ユーザーは座標(1.1、2.2)に移動することを希望しています。

省略可能なパラメータ

このセクションでは、ナビゲーション アプリのインテント データで指定するオプション パラメータについて説明します。

インテント

ユーザーの意図を定義します。このパラメータが設定されていない場合、デフォルトのユーザー インテントは navigation とみなされます。

パラメータキー: intent
有効な値:

  • navigation [デフォルト値] - 目的地を置き換えてナビゲーションを開始します。「x に移動」などのクエリに使用します。
  • add_a_stop - 前の目的地とともに、その停留所を次の目的地として追加します。「x に停留所を追加」などのクエリに使用します。
  • directions - ナビを開始せずにルート案内を表示します。「x へのルート」などのクエリに使用します。

例: geo:47.61594547836694,-122.20373173098756?q=575+Bellevue+Square,+Bellevue,+WA+98004&intent=add_a_stop 解釈: ユーザーは、Bellevue Square、Bellevue に停留所を追加したいと考えています。現在の座標は [47.6, -122.2] です。

不使用

ナビゲーションで避けるべきことを定義します。

パラメータキー: avoid
有効な値:

  • f - フェリー
  • h - 高速道路
  • t - 有料道路

例: geo:0,0?q=googleplex&avoid=tf
解釈: ユーザーは通行料とフェリーを避けて Googleplex にナビを設定したいと考えています。

移動手段

移動モードは、ユーザーがクエリで指定した交通手段を表します。

パラメータキー: mode
有効な値:

  • b - 自転車
  • d - ドライブ
  • x - タクシー
  • l - オートバイ
  • r - 交通機関
  • w - 徒歩

例: geo:0,0?q=Googleplex&mode=r
解釈: ユーザーは公共交通機関を使って Googleplex に移動したいと考えています。

エントリ

エントリのソースをロギングするために使用されます。

有効な値: アシスタント

例: geo:47.61594547836694,-122.20373173098756?entry=assistant

検索目的

検索インテントを使用してクエリを検索し、運転中にルート沿いに複数の結果を表示します。

インテント フォーマット

Intent クラスは、検索インテントに対して次の形式を使用します。

カテゴリ: android.intent.category.DEFAULT

アクション: android.intent.action.VIEW

スキーム: geo

例: geo:0,0?q=restaurants+nearby

推奨されるアプリの動作: ユーザーのクエリに一致する場所のリストを表示します。

マニフェストのインテント フィルタ

ナビゲーション アプリが検索インテントを受信できることを Google アシスタントに通知するため、アプリのマニフェスト ファイルで次のインテント形式を宣言します。

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

指定されたパラメータ

提供される検索インテント データでは、次のパラメータを使用できると想定されています。

位置情報クエリ

位置情報クエリとは、ユーザーが運転中に検索している場所です。このクエリは不正確な場合や、アクティブなナビゲーション ルート上にある場合があります。

パラメータキー: q
値: ユーザーの検索語句。コーヒーショップ大学などの場所の種類にすることもできますが、-near me-with best rating などの修飾子を含めることもできます。

例: geo:0,0?q=restaurants+nearby
解釈: ユーザーは近くのレストランを検索したいと考えています。

カスタム アクション インテント

カスタム アクション(事故の報告やナビゲーションの終了など)にはカスタム インテントを使用します。メイン アクション タイプは、act クエリ パラメータで定義されます。アクションの種類に応じて、追加のパラメータを設定できます。

インテント フォーマット

Intent クラスでは、カスタム アクション インテントに次の形式を使用します。

カテゴリ: android.intent.category.DEFAULT

アクション: android.intent.action.VIEW

スキーム: geo.action

例: geo.action:?act=report&accident_type=major

マニフェストのインテント フィルタ

ナビゲーション アプリがカスタム アクション インテントを受信できることを Google アシスタントに通知するには、アプリのマニフェスト ファイルで次のインテント形式を宣言します。

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo.action" />
</intent-filter>

指定されたパラメータ

提供されるカスタム アクションのインテント データでは、次のパラメータを使用できます。

アクション タイプ

ユーザーが実行するカスタム アクションのタイプを定義します。

パラメータキー: act

例:

  • geo.action:?act=report_crash&accident_type=major
    解釈: ユーザーは重大な事故を報告したいと考えています。

  • geo.action:?act=mute
    解釈: お客様は音声指示をミュートしたいと考えています。

  • geo.action:?act=exit_navigation
    解釈: ユーザーは現在のナビゲーションを終了したいと考えています。

推奨されるアプリの動作: ナビゲーション アプリでリクエストされたアクションを実行するか、サポートされていないアクション メッセージを表示します。

次の図は、レスポンス クエリの Key-Value ペアの例を示しています。

カスタム アクション インテントのデータフロー

図 2. カスタム アクション インテントのデータフロー。

Key-Value ペア:

"act": "report_crash"
"road_direction": other_side"

すべてのカスタム アクションには、常に act パラメータがキーとして設定されます。上記のコード例では、一部のアクションに追加の Key-Value ペアを指定できます。たとえば、act=report_crashaccident_typeroad_direction の追加キーをサポートしています。

キー accident_type は、minormajor の 2 つの値をサポートできます。

有効な値

次の表に、ユーザーがナビゲーション アプリで実行しようとしているアクションとして Google アシスタントが渡すことができる値を示します。

説明 省略可能なパラメータキー 省略可能なパラメータ値
allow_ferries フェリーを許可するようにルート設定を変更します。
allow_highways 高速道路を許可するようにルート設定を変更します。
allow_tolls ルートの設定を変更して、通行料を許可します。
apply_electric_vehicle_connector_filter 車のコネクタに対応した電気自動車の充電スタンドのみを表示します。
apply_electric_vehicle_fast_charging_filter 急速充電器がある EV 充電スタンドのみを表示します。
apply_electric_vehicle_payment_filter 支払いが必要となる EV 充電スタンドの場所のみを表示します。
avoid_ferries フェリーを避けるようにルート設定を変更します。
avoid_highways 高速道路を避けるようにルート設定を変更します。
avoid_tolls 有料道路を回避するようにルート設定を変更します。
clear_search_results 地図上の検索結果を消去します。
distance_to_destination 目的地までの距離を表示します。
distance_to_next_turn 次の曲がり角までの距離を表示します。
eta 目的地までの所要時間を表示します。
exit_navigation ナビを終了またはキャンセルします。
follow_mode 地図ビューをフォローモードに変更します。
go_back 前の地図操作に戻る。
hide_satellite 地図の設定を変更して、航空写真情報を非表示にします。
hide_traffic 地図の設定を変更して、交通情報を非表示にします。
mute 音声案内をミュートします。
query_current_road ユーザーが現在走行している道路を表示します。
query_destination リンク先を表示します。
query_next_turn 次のターンを表示します。
remove_electric_vehicle_connector_filter 車のコネクタに一致する EV 充電スタンドのフィルタを削除。
remove_electric_vehicle_fast_charging_filter 急速充電器である EV 充電場所のフィルタを削除。
remove_electric_vehicle_payment_filter 料金が必要な EV 充電スタンドのフィルタを削除。
report_crash クラッシュを報告します。 accident_type minor
major
road_direction this_side
other_side
report_hazard 危険を報告します。 hazard_type animal
broken_traffic_light
construction
flooding
fog
hail
ice
missing_sign
object_on_road
pothole
roadkill
snow
vehicle
weather
road_direction this_side
other_side
location_on_road on_road
on_shoulder
report_police 警察活動を報告します。 road_direction this_side
other_side
report_road_closure 通行止めを報告します。 road_closure_type partial
full
report_traffic 交通情報を報告します。 traffic_type moderate
heavy
standstill
road_direction this_side
other_side
resume_navigation ナビを再開します。
route_overview ルートの概要を表示します。
show_alternates 別のルートを表示します。
show_directions_list ターンバイターン方式のルート案内を表示します。
show_satellite 地図に衛星情報を表示します。
show_traffic 地図に交通状況を表示します。
time_to_destination 目的地までの所要時間を表示します。
time_to_next_turn 次の曲がり角までの所要時間を表示します。
unmute 音声案内のミュートを解除します。