С помощью намерений Android Automotive можно запустить навигацию в Google Maps.
Обзор
На этой странице описываются намерения, которые можно использовать с Google Maps для Android Automotive. Подробную документацию для разработчиков Android см. в следующем разделе:
Запросы намерений
Чтобы запустить Google Maps для Android Automotive с намерением, необходимо сначала создать объект Intent
, указав его действие, URI и пакет.
Действие. Все намерения Google Maps называются действием View,
ACTION_VIEW
.URI. Намерения Google Карт используют закодированные строки URI , которые определяют выбранное действие, а также некоторые данные, с которыми это действие выполняется.
Пакет. Вызов
setPackage("com.google.android.apps.maps")
гарантирует, что приложение Google Maps для Android обработает Intent. Если пакет не установлен, система определяет, какие приложения могут обработать Intent. Если доступно несколько приложений, вам может быть предложено выбрать, какое приложение вы хотели бы использовать.
После создания Intent вы можете запросить, чтобы система запустила соответствующее приложение несколькими способами. Распространенный метод — передать Intent методу 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);
Если система не может определить приложение, которое может ответить на Intent, ваше приложение может выйти из строя. По этой причине сначала убедитесь, что принимающее приложение установлено, прежде чем вы предоставите одно из этих намерений пользователю.
Чтобы проверить, доступно ли приложение для получения намерения, вызовите 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 Intents, должны быть закодированы в 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 Maps .
q
задает конечную точку для навигационных поисков. Это может быть широта и долгота или адрес в формате запроса. Если это строка запроса, которая возвращает более одного результата, будет выбран первый результат.place
устанавливает конечную точку на home или work. Укажите home для навигации к дому пользователя и work для навигации к рабочему месту пользователя.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 Сидней и Сиднейский оперный театр в качестве путевых точек:
Google Сидней
Сиднейский оперный театр
Зоопарк Таронга, Сидней, Австралия
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 Maps представит экран обзора маршрута для поездки. Экран обзора маршрута отобразит все путевые точки и конечный пункт назначения из намерения, с рекомендациями по зарядке, где это применимо.
Для любых промежуточных точек или конечного пункта назначения, отмеченных как зарядная станция, Google Maps будет искать соответствующее место в базе данных Google. Чтобы обеспечить отображение наилучшей возможной информации для зарядных станций:
Если совпадение найдено, Google Maps использует данные Google для отображения зарядной станции в пользовательском интерфейсе (UI) и предоставляет рекомендации по зарядке на этой зарядной станции.
Если совпадение не найдено, данные, указанные в намерении для зарядной станции (широта и долгота, название и выходная мощность), используются для отображения этой зарядной станции в пользовательском интерфейсе и предоставления рекомендаций по зарядке на этой зарядной станции.
Примеры
Следующие примеры иллюстрируют, как создавать намерения для различных сценариев планирования поездок на электромобиле, включая навигацию с использованием нескольких зарядных станций и обработку неизвестных значений выходной мощности.
Прокладывайте маршрут до конечного пункта назначения, используя несколько зарядных станций.
Следующее намерение направляет автомобиль к конечному пункту назначения, Порт-Маккуори, Новый Южный Уэльс, через две зарядные станции, ChargePoint и Evie.
Направления по порядку:
Зарядная станция ChargePoint (местоположение: -32.9599188,151.6240806, выходная мощность: 6,6 кВт)
Зарядная станция Evie (местоположение: -31.9432539,152.4699808, выходная мощность: 350 кВт)
Порт-Маккуори, Новый Южный Уэльс
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
.
Направления по порядку:
Зарядная станция ChargePoint (местоположение: -32.9599188,151.6240806, выходная мощность: неизвестна)
Порт-Маккуори, Новый Южный Уэльс
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
.
Направления по порядку:
Зоопарк Таронга, Сидней, Австралия
Зарядная станция ChargePoint (местоположение: -32.9599188,151.6240806, выходная мощность: неизвестна)
Зарядная станция 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=show_alternates | Google Maps открывает экран альтернативных маршрутов (работает только во время навигации). |
geo.action:?act=query_next_turn | Google Maps озвучивает следующий поворот (работает только во время навигации). |
geo.action:?act=distance_to_next_turn | Google Maps озвучивает расстояние до следующего поворота (работает только во время навигации). |
geo.action:?act=time_to_next_turn | Google Maps озвучивает время до следующего поворота (работает только во время навигации). |
geo.action:?act=distance_to_destination | Google Maps озвучивает расстояние до пункта назначения (работает только во время навигации). |
geo.action:?act=go_back | Google Maps возвращается к предыдущему экрану пользовательского интерфейса. |
geo.action:?act=query_current_road | Google Maps отображает текущую дорогу. |
geo.action:?act=query_destination | Google Maps озвучит пункт назначения. |
geo.action:?act=traffic_report | Google Maps озвучивает отчет о дорожном движении. |
geo.action:?act=clear_search_results | Google Maps закрывает экран результатов поиска (если он открыт). |
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 Maps избегать платных маршрутов. Это может привести к перенаправлению, если текущий маршрут платный. |
geo.action:?act=allow_tolls | Если пользователь использует навигацию, сообщает Google Maps разрешить маршруты с платными дорогами. Это может привести к перенаправлению, если разрешение платных дорог приведет к доступности лучшего маршрута. |
geo.action:?act=avoid_ferries | Если пользователь использует навигацию, сообщает Google Maps избегать маршрутов с паромами. Это может привести к перенаправлению, если текущий активный маршрут имеет паромы. |
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 (то есть geo.action:?act=select_search_result&id=0 выберет первый результат в списке). |