Карты Google для Android Automotive Intents

Отказ от ответственности

Этот продукт/функция будет изменена, и на нее не распространяется какое-либо соглашение об уровне обслуживания (SLA) или политика прекращения поддержки. Реализация может быть изменена в будущих выпусках.

Что касается образцов программного обеспечения, файлов данных и/или исходного кода, сопровождающих эту документацию: этот продукт предоставляется «как есть» и без каких-либо гарантий, и Google прямо отказывается от любых гарантий, явных, подразумеваемых, установленных законом или иных. включая, помимо прочего, гарантии товарного состояния, пригодности для определенной цели и ненарушения каких-либо прав, касающихся этого продукта.


С помощью Android Automotive Intents вы можете запустить навигацию в Google Maps.

Дополнительную информацию см. в разделе «Намерения Google Maps для Android» .

Дополнительную информацию об использовании вашего приложения на автомобилях под управлением ОС Android Auto или Android Automotive см. в разделе Android для автомобилей .

Обзор

На этой странице описаны цели, которые вы можете использовать с Картами Google для Android Automotive. Подробную документацию для разработчиков Android читайте:

Запросы намерений

Чтобы запустить Карты Google для Android Automotive с намерением, необходимо сначала создать объект Intent , указав его действие, URI и пакет.

  • Действие. Все намерения Google Maps называются действием «Просмотр», ACTION_VIEW .

  • УРИ. В намерениях Google Maps используются строки в кодировке URI , которые определяют желаемое действие, а также некоторые данные, с помощью которых это действие можно выполнить.

  • Упаковка. Вызов setPackage("com.google.android.apps.maps") гарантирует, что приложение Google Maps для Android обработает намерение. Если пакет не установлен, система определяет, какие приложения могут обрабатывать намерение. Если доступно несколько приложений, вас могут спросить, какое приложение вы хотели бы использовать.

После создания намерения вы можете запросить у системы запуск связанного приложения несколькими способами. Распространенный метод — передать намерение методу [startActivity()] . Система запустит необходимое приложение, в данном случае Google Maps, и запустит соответствующее 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);

Если система не может определить приложение, которое может ответить на намерение, ваше приложение может выйти из строя. По этой причине сначала убедитесь, что принимающее приложение установлено, прежде чем представлять пользователю одно из этих намерений.

Чтобы убедиться, что приложение доступно для получения намерения, вызовите [resolveActivity()] для вашего объекта [Intent] . Если результат не нулевой, существует хотя бы одно приложение, которое может обработать намерение, и можно безопасно вызывать [startActivity()] . Если результат равен нулю, вам не следует использовать намерение и, если возможно, отключить функцию, вызывающую намерение.

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 Maps, должны иметь кодировку 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"));

Запустить пошаговую навигацию

Используйте это намерение, чтобы запустить навигацию Google Maps с пошаговыми указаниями по одному или нескольким указанным адресам или координатам. Маршруты всегда указываются от текущего местоположения пользователя.

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

Параметры

Чтобы запустить навигацию, используйте place или q с waypoints (это необязательно). Чтобы дополнительно отметить промежуточную точку как зарядную станцию, см. раздел Отправка плана поездки на электромобиле на Карты Google .

  • q устанавливает конечную точку для навигационного поиска. Это может быть широта/долгота или адрес в формате запроса. Если это строка запроса, которая возвращает более одного результата, будет выбран первый результат.

  • place устанавливает конечную точку для дома или работы. Укажите дом, чтобы перейти к дому пользователя, и работу, чтобы перейти к рабочему месту пользователя.

  • avoid устанавливает особенности, которые маршрут должен стараться избегать. avoid является необязательным и может быть установлено одно или несколько из:

    • t для дорожных сборов
    • h для шоссе
    • f для паромов
  • waypoints указывает одно или несколько промежуточных мест для маршрутизации маршрута к конечному пункту назначения, указанному q . Вы можете указать несколько путевых точек, используя символ вертикальной черты ( | ) для разделения мест — например, 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);

Чтобы запустить пошаговую навигацию по следующим трем адресам по порядку, укажите зоопарк Таронга в качестве конечного пункта назначения 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 Maps

Используйте этот способ навигации по нескольким пунктам назначения, чтобы указать некоторые пункты назначения как остановки зарядки электромобилей (EV). Это намерение, которое расширяет возможности использования нескольких точек маршрута , помогает водителям поддерживать достаточный заряд аккумулятора электромобиля, чтобы добраться до пункта назначения, путем синхронизации информации об остановке зарядки между приложениями для планирования поездок на электромобилях и Google Maps.

Для остановок для зарядки, намерения поездки:

  • Должно содержать имя и широту.
  • Опционально может содержать выходную мощность, которая будет использоваться для расчета времени зарядки.

Google использует название зарядной станции и широту, чтобы найти подходящее место для зарядки и отображать обширные данные, такие как типы разъемов, общие данные, скорость и доступность в реальном времени, поддерживаемые способы оплаты и основные достопримечательности (POI). Например, маршруты проезда на открытых парковках для заключительной части навигации, часы работы, рейтинги. Чтобы зарядные станции точно соответствовали данным Google, используйте <brand name> , например ChargePoint .

Параметры

Конечный пункт назначения

Чтобы установить зарядную станцию ​​в качестве конечного пункта назначения, используйте:

  • q : Должно содержать значение широты и долготы зарядной станции.
  • q_type : 1 указывает, что конечным пунктом назначения является зарядная станция.
  • q_name : имя конечного пункта назначения. Требуется, если q_type равен 1 .
  • q_power_output_kw : двойное число для выходной мощности зарядной станции в киловаттах. Необязательный.

Путевые точки

Для путевых точек все параметры представляют собой параллельные, разделенные | массивы значений в том же порядке, что и путевые точки, не включая конечный пункт назначения. Несовпадение количества элементов в параллельных массивах рассматривается как неправильное намерение.

Чтобы добавить одну или несколько точек маршрута зарядных станций, используйте следующие параметры, все из которых являются необязательными. Если один из пунктов назначения помечен как зарядная станция, то имя маршрутной точки становится обязательным для этого пункта назначения.

  • waypoints : список путевых точек, как описано в пошаговой навигации. Должно быть значение широты для маршрутных точек зарядной станции.

  • waypoint_types : Типы для каждой путевой точки, указанные в виде числа. 0 — любая остановка (значение по умолчанию), 1 — зарядная станция.

  • waypoint_names : имена маршрутных точек. Это поле является обязательным для зарядных станций.

  • waypoint_power_outputs_kw : двойные числа для мощности зарядной станции в киловаттах. Для зарядных станций вы можете дополнительно указать значение выходной мощности путевой точки, которое будет использоваться в качестве запасного варианта, если соответствующая станция не найдена. Пустой слот означает, что значение не указано.

Поведение пользовательского опыта (UX)

Для намерений поездки с несколькими пунктами назначения отображается экран обзора маршрута, но навигация не запускается автоматически.

Если намерение правильно оформлено, Карты Google отобразят экран обзора маршрута поездки. На экране обзора маршрута будут отображаться все путевые точки и конечный пункт назначения, а также рекомендации по зарядке, где это применимо.

Для любых путевых точек или конечных пунктов назначения, отмеченных как зарядная станция, Карты Google будут искать подходящее место в базе данных Google.

При обнаружении совпадения Карты Google используют данные Google для отображения зарядной станции в пользовательском интерфейсе (UI) и предоставления рекомендаций по зарядке для этой зарядной станции. Если совпадение не найдено, данные, предоставленные в намерении для зарядной станции (широта, название и выходная мощность), будут использоваться для отображения этой зарядной станции в пользовательском интерфейсе и предоставления рекомендаций по зарядке на этой зарядной станции.

Примеры

Доберитесь до конечного пункта назначения с помощью нескольких зарядных станций

Следующее намерение направляется к конечному пункту назначения, Порт-Маккуори, Новый Южный Уэльс, через две зарядные станции: ChargePoint и Evie.

Направления по порядку:

  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_type , q_name и q_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);