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

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

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


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

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

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

Обзор

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

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

Чтобы запустить Google Maps для 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 . Если результат не равен NULL, существует хотя бы одно приложение, которое может обработать намерение, и можно безопасно вызывать 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);

Намерения действия

Доступны следующие намерения действий с интерфейсами:

Действие Описание
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=query_next_turn Google Maps говорит следующий поворот (работает только во время навигации).
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 возвращаются к предыдущему экрану пользовательского интерфейса.
geo.action:?act=query_current_road Карты Google говорят текущую дорогу.
geo.action:?act=query_destination Карты 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 Maps разрешает маршруты с паромами. Это может привести к изменению маршрута, если разрешение паромов приведет к появлению лучшего маршрута.
geo.action:?act=avoid_highways Если пользователь осуществляет навигацию, Google Maps сообщает, что следует избегать маршрутов с автомагистралями. Это может привести к изменению маршрута, если текущий активный маршрут имеет автомагистрали.
geo.action:?act=allow_highways Если пользователь осуществляет навигацию, Google Maps разрешает маршруты с автомагистралями. Это может привести к изменению маршрута, если разрешение автомагистралей приведет к доступности лучшего маршрута.
geo.action:?act=eta Если пользователь осуществляет навигацию, Google Maps сообщает расчетное время прибытия в пункт назначения (например, 9:15 утра).
geo.action:?act=time_to_destination Если пользователь осуществляет навигацию, Google Maps сообщает ожидаемое время до пункта назначения (например, 15 минут).
geo.action:?act=exit_navigation Выход из навигации.
geo.action:?act=select_search_result&id=0 Если результаты поиска в данный момент отображаются на экране (см. ниже), начинается переход к n -му результату на основе предоставленного параметра ID. Обратите внимание, что индекс отсчитывается от 0 (то есть указанное выше намерение выберет первый результат в списке).

Результаты поиска отображаются на экране