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

免責条項

このプロダクト/機能は変更され、サービスレベル契約(SLA)または非推奨ポリシーの対象ではありません。実装は今後のリリースで変更される可能性があります。

このドキュメントに付属のサンプル ソフトウェア、データファイル、およびソースコードについて: 本プロダクトは「現状有姿」で提供され、いかなる種類の保証も行いません。Google は、商品性、特定の目的への適合性、および本プロダクトに関する権利の非侵害を含め、明示、黙示、法定を問わず、いかなる保証も明示的に放棄します。


Android Automotive のインテントを使用して、Google マップでナビゲーションを起動できます。

詳しくは、Android 向け Google マップ インテントをご覧ください。

Android Auto または Android Automotive OS を搭載した自動車にアプリを提供する方法について詳しくは、自動車向け Android をご覧ください。

概要

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

インテント リクエスト

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

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

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

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

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

// 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 parse() メソッドを使用して、文字列をエンコードできます。次に例を示します。

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

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

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

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

パラメータ

ナビゲーションを起動するには、place または qwaypoints とともに使用します(省略可)。必要に応じてウェイポイントを充電スタンドとしてマークする場合は、電気自動車の移動プランを Google マップに送信するをご覧ください。

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

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

  • 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)。

パラメータ

最終目的地

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

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

ウェイポイント

ウェイポイントの場合、すべてのパラメータは、| で区切られた並行な値の配列で、ウェイポイントと同じ順序で並べられます(最終目的地は含まれません)。並列配列内の要素数の不一致は、不正な形式のインテントとして扱われます。

充電スタンドの地点を 1 つ以上追加するには、次のパラメータを使用します。これらのパラメータはすべてオプションです。目的地のいずれかが充電スタンドとしてマークされている場合、その目的地のウェイポイント名が必須になります。

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

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

  • waypoint_names: 地点名。充電スタンドの場合、このフィールドは必須です。

  • waypoint_power_outputs_kw: 充電スタンドの電力を表す 2 つの数値(キロワット単位)。充電スタンドの場合は、必要に応じてウェイポイントの電力出力値を指定できます。この値は、一致する充電スタンドが見つからない場合のフォールバックとして使用されます。空のスロットは、値が指定されていないことを意味します。

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

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

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

充電スタンドとしてマークされた地点や最終目的地については、Google マップは Google のデータベース内で一致する場所を検索します。

一致する場所が見つかった場合、Google マップは Google データを使用して、ユーザー インターフェース(UI)に充電スタンドを表示し、充電スタンドのおすすめを提供します。一致するものが見つからない場合は、充電スタンドのインテントで提供されたデータ(緯度、経度、名前、電源出力)を使用して、その充電スタンドを UI に表示し、その充電スタンドでの推奨充電を提示します。

複数の充電スタンド経由で最終目的地までナビゲートする

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

目的地の順序:

  1. ChargePoint 充電スタンド(場所: -32.9599188,151.6240806、電源出力: 6.6 キロワット)

  2. Evie 充電スタンド(場所: -31.9432539,152.4699808、出力: 350 キロワット)

  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 キロワット)

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);