Android Automotive のインテント用 Google マップ

Android インテントを使用して、Android Automotive 向け Google マップでナビゲーションを開始できます。

概要

このページでは、Android Automotive 向け Google マップで使用できるインテントについて説明します。Android デベロッパー向けドキュメントの詳細については、以下をご覧ください。

インテント リクエスト

インテントを使用して Android Automotive 向け Google マップを起動するには、まず Intent オブジェクトを作成し、そのアクション、URI、パッケージを指定する必要があります。

  • アクション。すべての Google マップのインテントは、View アクション ACTION_VIEW として呼び出されます。

  • URI。Google マップのインテントは、選択したアクションを指定する URI エンコード文字列と、アクションを実行するためのデータを使用します。

  • パッケージ。setPackage("com.google.android.apps.maps") を呼び出すと、Android 向け Google マップ アプリが Intent を処理します。パッケージが設定されていない場合、システムはどのアプリがインテントを処理できるかを判断します。複数のアプリが利用可能な場合は、使用するアプリの選択を求められることがあります。

インテントを作成したら、さまざまな方法で関連アプリを起動するようシステムにリクエストできます。一般的な方法は、Intent を startActivity() メソッドに渡すことです。システムは、必要なアプリ(この場合は Google マップ)を起動し、対応する Activity を開始します。

// Create a Uri from an intent string. Use the result to create an Intent.
Uri mapIntentUri =
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
// Create an Intent from mapIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps");
// Attempt to start an activity that can handle the Intent
startActivity(mapIntent);

インテントに応答できるアプリをシステムが特定できない場合、アプリがクラッシュする可能性があります。そのため、これらのインテントのいずれかをユーザーに提示する前に、まず受信側のアプリがインストールされていることを確認してください。

インテントを受け取れるアプリがあるかどうかを確認するには、Intent オブジェクトで resolveActivity() を呼び出します。結果が null でない場合、インテントを処理できるアプリが少なくとも 1 つ存在し、startActivity() を安全に呼び出すことができます。結果が null の場合は、インテントを使用しないでください。可能であれば、インテントを呼び出す機能を無効にしてください。

if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}

たとえば、シドニーのタロンガ動物園へのターンバイターン ナビゲーションを開始するには、次のコードを使用します。

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}

URI エンコードされたクエリ文字列

Google マップのインテントに渡されるすべての文字列は URI エンコードされている必要があります。たとえば、「1st & Pike, Seattle」という文字列は 1st%20%26%20Pike%2C%20Seattle になります。文字列内のスペースは %20 でエンコードするか、プラス記号(+)に置き換えることができます。

android.net.Uri encode() メソッドを使用して文字列をエンコードできます。次に例を示します。

Uri mapIntentUri = Uri.parse("google.navigation:q=" + Uri.encode("1st & Pike, Seattle"));

地図を表示する

geo: インテントを使用して、指定した位置とズームレベルで地図を表示します。次に例を示します。

geo:latitude,longitude?z=zoom

パラメータ

  • latitudelongitude は、地図の中心点を設定します。

  • z は、地図の初期ズームレベルを任意で設定します。指定できる値の範囲は、0(全世界)から 21(個々の建物)までです。上限は、選択した場所で利用可能な地図データによって異なります。

// Creates an intent that will load a map of San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

場所を検索

このインテントを使用して、指定したビューポート内に検索クエリを表示します。

geo:latitude,longitude?q=query
geo:0,0?q=my+street+address

パラメータ

地図の表示に使用されるパラメータに加えて、検索では次のパラメータがサポートされています。

  • q は、地図上でハイライト表示する場所を定義します。q パラメータは、すべての検索リクエストで必須です。場所の名前または住所のいずれかを入力します。文字列は URL エスケープする必要があります。たとえば、「City Hall, New York, NY」という住所は City+Hall%2CNew+York%2CNY に変換する必要があります。

座標で検索結果にバイアスを設定する

非常に特定の場所を検索する場合、q パラメータに含まれていれば、緯度と経度は厳密には必須ではありません。ただし、正確な住所がわからない場合や、クエリが曖昧な場合は、座標を指定して検索結果をバイアス処理できます。たとえば、「メインストリート」の住所検索を行うと、結果が多すぎる可能性があります。

// Searching for "101 Main Street" with no lat/long might return too many results
Uri gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

インテント URI に緯度と経度を追加すると、結果が特定の地域に偏ります。

// Searches for "101 Main Street" near San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=101+main+street");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

ルート沿いの検索

ナビゲーション中に検索インテント geo:latitude,longitude?q=query が送信されると、ルートに沿った検索がトリガーされ、緯度と経度は無視されます。

事前定義済みカテゴリを検索する

車両との統合をサポートするため、車載 Google マップは、次の事前定義されたカテゴリを表示するインテントをサポートしています。

カテゴリ インテント カテゴリのエンコード
ガソリンスタンド gas_station
レストラン restaurant
カフェ cafe
駐車場 parking
電気自動車充電スタンド electric_vehicle_charging_station

カテゴリ インテントは geo:lat,lng?c=category の形式です。

ユーザーの言語 / 地域設定に関係なく c=<pre-defined category> を使用します。Google マップでは、このカテゴリの適切な言語 / 地域で関連性の高い結果が表示されます。次に例を示します。

// Search for gas stations nearby
Uri gmmIntentUri = Uri.parse("geo:0,0?c=gas_station");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

その他のカテゴリ検索

ユーザーの言語 / 地域で一般的な検索語句(「レストラン」や「コーヒー ショップ」など)を渡すと、Android Automotive 版 Google マップは、条件に一致するビジネス リスティングを検索します。geo: インテントで特定の緯度と経度が指定されている場合、検索はその場所を中心に行われます。ロケーションが指定されていない場合(geo:0,0)の場合、Google マップは近くのビジネス リスティングを探します。次に例を示します。

// Search for restaurants nearby
Uri gmmIntentUri = Uri.parse("geo:0,0?q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

クエリ文字列とともにズーム パラメータを指定することで、検索結果のバイアスをさらに設定できます。次の例では、ズームを 10 に追加すると、近くではなく都市レベルでレストランを検索しようとします。

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?z=10&q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

ターンバイターン方式のナビを起動する

他の Android デバイスでターンバイターン方式のナビゲーションを開始する方法については、Android 向け Google マップ インテントでターンバイターン方式のナビゲーションを開始するをご覧ください。

このインテントを使用して、指定された 1 つまたは複数の住所または座標へのターンバイターン方式のナビゲーションで Google マップを起動します。ルートは常にユーザーの現在地から表示されます。

google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
google.navigation:place=placename

パラメータ

ナビゲーションを起動するには、place または qwaypoints(省略可)とともに使用します。オプションで経由地を充電スタンドとしてマークするには、電気自動車の旅行プランを Google マップに送信するをご覧ください。

  • q は、ナビゲーション検索のエンドポイントを設定します。緯度と経度、またはクエリ形式の住所を指定できます。複数の結果を返すクエリ文字列の場合、最初の結果が選択されます。

  • place は、エンドポイントを自宅または職場に設定します。ユーザーの自宅に移動するには home を、ユーザーの職場に移動するには work を指定します。

  • avoid は、ルートで回避すべきフィーチャーを設定します。avoid は省略可能で、次の 1 つ以上に設定できます。

    • t(有料道路)
    • h(高速道路)
    • フェリーの f
  • waypoints は、q で指定された最終目的地までのルートを計算する際に経由する 1 つ以上の中間地点を指定します。複数の経由地を指定するには、パイプ文字(|)を使用して場所を区切ります(例: Berlin,Germany|Paris,France)。経由地は必要に応じて何個でも使用できます。経由地は、URL に記載されている順序でルートに追加されます。各経由地は、住所またはカンマ区切りの緯度と経度の座標のいずれかです。また、同じインテントに住所と緯度と経度の座標を含めることができます。文字列は URL エスケープする必要があります。たとえば、「Berlin,Germany|Paris,France」のような経由地は Berlin%2CGermany%7CParis%2CFrance に変換する必要があります。

このインテントは、オーストラリアのシドニーにあるタロンガ動物園へのターンバイターン ナビゲーションをリクエストします。

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

有料道路やフェリーの利用を避けたい場合は、それらを回避するルートをリクエストできます。

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

自宅へのナビゲーションをご希望の場合は、次のコマンドを使用します。

Uri mapIntentUri = Uri.parse("google.navigation:place=home");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

次の 3 つの住所に順番にターンバイターン ナビゲーションを開始するには、最終目的地としてタロンガ動物園(q)を渡し、経由地として Google シドニーとシドニー オペラハウスを渡します。

  1. Google シドニー

  2. シドニー オペラハウス

  3. タロンガ動物園(オーストラリア、シドニー)

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7CSydney+Opera+House");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

q と同様に、経由地は住所ではなく、カンマ区切りの緯度と経度で表すことができます。たとえば、住所ではなくシドニー オペラハウスの緯度と経度を渡して同じナビゲーションを開始するには:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7C-33.856159,151.215256");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

電気自動車のルート計画を Google マップに送信する

この複数目的地ナビゲーション インテントを使用して、一部の目的地を電気自動車(EV)の充電ステーションとして指定します。このインテントは、複数経由地のインテントを拡張したもので、EV のルート検索アプリと Google マップの間で充電スタンドの情報を同期することで、ドライバーが目的地に到着するのに十分なバッテリー残量を維持できるようにします。

充電スタンド、ルートのインテント:

  • 名前と緯度経度を含める必要があります
  • 充電時間の計算に使用する出力電力を任意で含めることができます

Google は、充電スタンドの名前と緯度経度を使用して、一致する充電スタンドの場所を検索し、コネクタの種類、合計数、速度、リアルタイムの空き状況、対応するお支払い方法、ホストのスポット(POI)などのリッチデータを表示します。たとえば、ナビゲーションの最後の部分の屋外駐車場内の運転ルート、営業時間、評価などです。充電ステーションが Google のデータと適切に一致するように、特定の <brand name>ChargePoint など)を使用します。

パラメータ

次のパラメータを使用すると、最終目的地と経由地(EV 充電ステーションとして指定された経由地を含む)の詳細を指定できます。

最終目的地

充電ステーションを最終目的地として設定するには、次のコードを使用します。

  • q: 充電ステーションの緯度と経度の値を含める必要があります。
  • q_type: 1 は、最終目的地が充電ステーションであることを指定します。
  • q_name: 最終目的地の名前。q_type1 の場合は必須です。
  • q_power_output_kw: 充電ステーションの出力(キロワット単位)を表す倍精度浮動小数点数。省略可能。

ウェイポイント

経由地の場合、すべてのパラメータは、最終目的地を含まない経由地と同じ順序の値のパイプ区切り(|)配列です。並列配列内の要素の数が一致しない場合は、不正なインテントとして扱われます。

1 つ以上の充電ステーションの経由地を追加するには、次のパラメータを使用します。これらのパラメータはすべて省略可能です。目的地の 1 つが充電ステーションとしてマークされている場合、その目的地では経由地の名前が必須になります。

  • waypoints: ターンバイターン ナビゲーション インテントで説明されている経由地のリスト。充電ステーションの経度と緯度の値である必要があります。

  • waypoint_types: ウェイポイントごとのタイプ。数値で指定します。0 は任意の停車地(デフォルト値)、1 は充電ステーションです。

  • waypoint_names: 経由地の名前。このフィールドは充電ステーションで必須です。

  • waypoint_power_outputs_kw: 充電ステーションの電力をキロワット単位で表す倍精度浮動小数点数。充電ステーションの場合、必要に応じて経由地の出力値を指定できます。これは、一致するステーションが見つからなかった場合のフォールバックとして使用されます。空のスロットは、値が指定されていないことを意味します。

ユーザー エクスペリエンス(UX)の動作

複数の目的地を含む旅行インテントの場合、ルートの概要画面は表示されますが、ナビゲーションは自動的に開始されません。

インテントの形式が正しければ、Google マップにルートの概要画面が表示されます。ルートの概要画面には、インテントから取得したすべての経由地と最終目的地が表示されます。充電に関する推奨事項がある場合は、それも表示されます。

充電ステーションとしてマークされた経由地または最終目的地については、Google マップで Google のデータベース内の該当する場所が検索されます。充電スタンドに関する最適な情報を表示するには:

  • 一致する充電スタンドが見つかった場合、Google マップは Google のデータを使用して、充電スタンドをユーザー インターフェース(UI)に表示し、その充電スタンドの充電に関する推奨事項を提供します。

  • 一致する充電スタンドが見つからない場合は、充電スタンドのインテントで提供されたデータ(緯度経度、名前、出力)を使用して、この充電スタンドを UI に表示し、この充電スタンドでの充電の推奨事項を提供します。

次の例は、複数の充電ステーションを経由したナビゲーションや、不明な出力の処理など、さまざまな EV 旅行計画シナリオのインテントを構築する方法を示しています。

複数の充電スタンドを経由して最終目的地までナビする

次のインテントは、ChargePoint と Evie の 2 つの充電スタンドを経由して、最終目的地のポート マッコーリー NSW に移動します。

目的地(順序付き):

  1. ChargePoint 充電スタンド(場所: -32.9599188,151.6240806、出力: 6.6kw)

  2. Evie 充電スタンド(場所: -31.9432539,152.4699808、出力: 350 kW)

  3. ニュー サウス ウェールズ州ポート マッコーリー

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806%7C-31.9432539%2C152.4699808"
            + "&waypoint_types=1%7C1"
            + "&waypoint_names=ChargePoint+Charging+Station%7CEvie+Charging+Station"
            + "&waypoint_power_outputs_kw=6.6%7C350");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

不明な電源出力

出力値が不明な場合は、waypoint_power_outputs_kw の関連するスロットを空のままにします。また、すべてのスロットが空の場合、waypoint_power_outputs_kw パラメータを指定する必要はありません。

目的地(順序付き):

  1. ChargePoint 充電スタンド(場所: -32.9599188,151.6240806、出力: 不明)

  2. ニュー サウス ウェールズ州ポート マッコーリー

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806"
            + "&waypoint_types=1"
            + "&waypoint_names=ChargePoint+Charging+Station");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

最終目的地を充電ステーションとしてマークする

最終目的地を充電ステーションとしてマークするには、q_typeq_nameq_power_output_kw パラメータを指定します。

目的地(順序付き):

  1. タロンガ動物園(オーストラリア、シドニー)

  2. ChargePoint 充電スタンド(場所: -32.9599188,151.6240806、出力: 不明)

  3. Evie 充電スタンド(場所: -31.9432539,152.4699808、出力: 350 kW)

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=-31.9432539,152.4699808&q_type=1&q_name=Evie+Charging+Station&q_power_output_kw=350"
            + "&waypoints=Taronga+Zoo%2C+Sydney+Australia%7C-32.9599188%2C151.6240806"
            + "&waypoint_types=0%7C1"
            + "&waypoint_names=%7CChargePoint+Charging+Station"
            + "&waypoint_power_outputs_kw=%7C");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

アクション インテント

インターフェースを備えた次のアクション インテントを使用できます。

アクション 説明
geo.action:?act=mute ナビゲーションの音声案内をすべてミュートします。
geo.action:?act=unmute ナビゲーションの音声案内のミュートを解除します。
geo.action:?act=show_traffic 地図上に交通状況の線を表示します。
geo.action:?act=hide_traffic 地図上の交通状況の線が非表示になります。
geo.action:?act=show_satellite 地図上に衛星画像を表示します。
geo.action:?act=hide_satellite 地図上の航空写真を非表示にします。
geo.action:?act=show_alternates Google マップで代替ルートの画面が開きます(ナビゲーション中にのみ機能します)。
geo.action:?act=query_next_turn Google マップが次の曲がり角を読み上げます(ナビゲーション中にのみ動作します)。
geo.action:?act=distance_to_next_turn Google マップで次の曲がり角までの距離が読み上げられます(ナビゲーション中にのみ機能します)。
geo.action:?act=time_to_next_turn Google マップで次の曲がり角までの時間が読み上げられます(ナビゲーション中にのみ機能します)。
geo.action:?act=distance_to_destination Google マップで目的地までの距離が読み上げられます(ナビゲーション中のみ)。
geo.action:?act=go_back Google マップの UI で前の画面に戻ります。
geo.action:?act=query_current_road Google マップが現在の道路名を読み上げます。
geo.action:?act=query_destination Google マップが目的地を読み上げます。
geo.action:?act=traffic_report Google マップが交通情報レポートを読み上げます。
geo.action:?act=clear_search_results Google マップで検索結果画面が閉じます(開いている場合)。
geo.action:?act=apply_electric_vehicle_connector_filter 電気自動車充電スタンドの検索結果にコネクタ タイプのフィルタを適用します。
geo.action:?act=remove_electric_vehicle_connector_filter 電気自動車充電スタンドの検索結果のコネクタの種類フィルタを削除します。
geo.action:?act=apply_electric_vehicle_payment_filter 電気自動車充電スタンドの検索結果に支払いフィルタを適用します。
geo.action:?act=remove_electric_vehicle_payment_filter 電気自動車充電スタンドの検索結果の支払いフィルタを削除します。
geo.action:?act=apply_electric_vehicle_fast_charging_filter 電気自動車の充電スタンドの検索結果に急速充電フィルタを適用します。
geo.action:?act=remove_electric_vehicle_fast_charging_filter 電気自動車充電スタンドの検索結果から急速充電フィルタを削除します。
geo.action:?act=avoid_tolls ユーザーがナビゲーションを使用している場合、有料道路を含むルートを避けるよう Google マップに指示します。現在のルートに有料道路が含まれている場合、ルートが変更されることがあります。
geo.action:?act=allow_tolls ユーザーがナビゲーションを使用している場合、Google マップに有料道路を含むルートを許可するよう指示します。有料道路を許可すると、より良いルートが利用可能になる場合は、ルートが変更されることがあります。
geo.action:?act=avoid_ferries ユーザーがナビゲーションを使用している場合、フェリーを含むルートを避けるよう Google マップに指示します。現在の有効なルートにフェリーが含まれている場合、ルートが再設定される可能性があります。
geo.action:?act=allow_ferries ユーザーがナビゲーションを使用している場合、フェリーを含むルートを許可するよう Google マップに指示します。フェリーを許可すると、より良いルートが利用可能になる場合、ルートが再設定されることがあります。
geo.action:?act=avoid_highways ユーザーがナビゲーションを使用している場合、高速道路を含むルートを避けるよう Google マップに指示します。現在の有効なルートに高速道路が含まれている場合、ルートが再設定される可能性があります。
geo.action:?act=allow_highways ユーザーがナビゲーションを使用している場合、高速道路を含むルートを許可するよう Google マップに指示します。高速道路を許可すると、より良いルートが利用可能になるため、ルートが変更されることがあります。
geo.action:?act=eta ユーザーがナビゲーションを使用している場合、Google マップは目的地の到着予定時刻を読み上げます(午前 9 時 15 分など)。
geo.action:?act=time_to_destination ユーザーがナビゲーションを使用している場合、Google マップは目的地までの所要時間(15 分など)を読み上げます。
geo.action:?act=exit_navigation ナビゲーションを終了します。
geo.action:?act=select_search_result&id=0 検索結果が画面に表示されている場合(添付の画像を参照)、このアクションは、指定された ID パラメータに基づいて n 番目の結果へのナビゲーションを開始します。インデックスは 0 ベースです(つまり、geo.action:?act=select_search_result&id=0 はリストの最初の結果を選択します)。

検索結果が画面に表示されます