Gemini は、ナビゲーション アプリがサポートできる 3 種類のインテント形式を使用します。相互運用性を実現し、アプリと Gemini を統合するには、このページで説明するインテント フィルタをアプリのマニフェストで宣言します。インテントの詳細については、Intent をご覧ください。
Gemini ナビゲーション アプリの 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=Googleplexgeo:0,0?q=1600+Amphitheatre+parkway&mode=b&intent=add_a_stopgeo:0,0?q=coffee+shop&mode=w&intent=navigationgeo:1.1,2.2?q=Starbucks+on+Main+Street&mode=w&intent=navigation
推奨されるアプリの動作: 指定された場所へのナビゲーションが開始されるか、複数のオプションから選択するようユーザーに求められます。
マニフェストのインテント フィルタ
アプリのマニフェスト ファイルで次のインテント形式を宣言して、ナビゲーション アプリがナビゲーション インテントを受信できることを Gemini に知らせます。
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>
指定されたパラメータ
指定されたナビゲーション アプリのインテント データには、次のパラメータが含まれていることが想定されます。
位置情報のクエリまたは地理座標
ナビゲーション インテント クエリには、リクエストされたデータの種類に応じて、次のパラメータのいずれかまたは両方が含まれます。
位置情報のクエリ
ユーザーが移動しようとしている場所を指します。このデータを使用して、ユーザーの宛先を解決します。
パラメータ キー:
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
解釈: ユーザーは、現在の座標 [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 に行きたいと考えています。
Entry
エントリのソースを記録するために使用されます。
有効な値: assistant
例: geo:47.61594547836694,-122.20373173098756?entry=assistant
検索目的
検索インテントを使用してクエリを検索し、運転中にルートに沿って複数の結果を表示します。
インテントの形式
Intent クラスは、検索インテントに次の形式を使用します。
カテゴリ: android.intent.category.DEFAULT
アクション: android.intent.action.VIEW
スキーム: geo
例: geo:0,0?q=restaurants+nearby
推奨されるアプリの動作: ユーザーのクエリに一致する場所のリストを開きます。
マニフェストのインテント フィルタ
Gemini がナビゲーション アプリで検索インテントを受信できることを認識できるように、アプリのマニフェスト ファイルで次のインテント形式を宣言します。
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="geo" />
</intent-filter>
指定されたパラメータ
指定された検索目的データには、次のパラメータが含まれていることが想定されます。
位置情報のクエリ
位置情報クエリは、運転中にユーザーが検索している場所です。このクエリは、不正確な場合や、アクティブなナビゲーション ルートに沿っている場合があります。
パラメータ キー: q
値: ユーザーの検索語句。コーヒー ショップや大学などの場所の種類の場合もあれば、「近くの」や「評価の高い」などの限定詞が含まれる場合もあります。
例: 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
マニフェストのインテント フィルタ
アプリのマニフェスト ファイルで次のインテント形式を宣言して、ナビゲーション アプリがカスタム アクション インテントを受信できることを Gemini に知らせます。
<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_crash は accident_type と road_direction の追加の鍵をサポートしています。
キー accident_type は、minor と major の 2 つの値をサポートできます。
有効な値
次の表に、ユーザーがナビゲーション アプリで実行しようとしているアクションとして Gemini が渡す可能性のある値を示します。
| 値 | 説明 | 省略可能なパラメータキー | 省略可能なパラメータ値 |
|---|---|---|---|
allow_ferries
|
フェリーを許可するようにルート設定を変更します。 | ||
allow_highways
|
高速道路を許可するようにルート設定を変更します。 | ||
allow_tolls
|
ルート設定を変更して有料道路を許可します。 | ||
avoid_ferries
|
フェリーを避けるようにルート設定を変更します。 | ||
avoid_highways
|
高速道路を避けるようにルート設定を変更します。 | ||
avoid_tolls
|
ルート設定を変更して有料道路を回避します。 | ||
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
|
次のターンを表示します。 | ||
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
|
|||
route_overview
|
ルートの概要を表示します。 | ||
show_alternates
|
別のルートを表示します。 | ||
show_directions_list
|
ターンバイターン方式のルート案内を表示します。 | ||
show_satellite
|
地図に衛星情報を表示します。 | ||
show_traffic
|
地図に交通状況を表示します。 | ||
time_to_destination
|
目的地までの到着予定時刻を表示します。 | ||
time_to_next_turn
|
次の曲がり角までの到着予定時刻を表示します。 | ||
unmute
|
音声案内のミュートを解除します。 |
ナビゲーション ステータスを取得する
ユーザーがルートのステータスについて問い合わせたときに、Gemini が正確なリアルタイム情報を提供できるようにするには、アプリが NavigationManager カーサービスを使用してナビゲーション メタデータを提供する必要があります。実装ガイダンスについては、ナビゲーション メタデータを伝えるをご覧ください。