Intents de Google Maps para Android Automotive

Este producto o función cambiará y no estará sujeto a ningún acuerdo de nivel de servicio (ANS) ni política de baja. La implementación está sujeta a cambios en versiones futuras.

En relación con el software de muestra, los archivos de datos o el código fuente que acompañan esta documentación, este producto se proporciona “tal como está” y sin garantía de ningún tipo, y Google rechaza expresamente cualquier garantía, ya sea expresa, implícita, legal o de otro tipo, incluidas, sin limitaciones, las garantías de comerciabilidad, adecuación para un fin determinado y no incumplimiento de ningún derecho relacionado con este producto.


A través de los intents de Android Automotive, puedes iniciar la navegación en Google Maps.

Para obtener más información, consulta Intents de Google Maps para Android.

Para obtener más información sobre cómo llevar tu app a vehículos con Android Auto o el SO Android Automotive, consulta Android para vehículos.

Descripción general

En esta página, se describen los intents que puedes usar con Google Maps para Android Automotive. Para obtener documentación detallada para desarrolladores de Android, consulta los siguientes recursos:

Solicitudes de intents

Para iniciar Google Maps para Android Automotive con un intent, primero debes crear un objeto Intent y especificar su acción, URI y paquete.

  • Acción. Todos los intents de Google Maps se llaman como una acción de View, ACTION_VIEW.

  • URI. Los intents de Google Maps usan cadenas codificadas en URI que especifican una acción deseada, junto con algunos datos con los que realizarla.

  • Paquete. Llamar a setPackage("com.google.android.apps.maps") garantiza que la app de Google Maps para Android controle el intent. Si no se configura el paquete, el sistema determina qué apps pueden controlar el intent. Si hay varias apps disponibles, es posible que se te pregunte qué app quieres usar.

Después de crear el intent, puedes solicitar que el sistema inicie la app relacionada de varias maneras. Un método común es pasar el Intent al método startActivity(). El sistema iniciará la app necesaria, en este caso, Google Maps, y la actividad correspondiente.

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

Si el sistema no puede identificar una app que pueda responder al intent, es posible que la app falle. Por este motivo, primero verifica que esté instalada una aplicación receptora antes de presentarle uno de estos intents a un usuario.

Para verificar que una app esté disponible para recibir el intent, llama a resolveActivity() en tu objeto Intent. Si el resultado no es nulo, hay al menos una app que puede controlar el intent y es seguro llamar a startActivity(). Si el resultado es nulo, no debes usar el intent y, si es posible, inhabilita la función que lo invoca.

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

Por ejemplo, para iniciar la navegación paso a paso al zoológico de Taronga en Sídney, puedes usar el siguiente código:

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

Cadenas de consulta codificadas con URI

Todas las cadenas pasadas a las intenciones de Google Maps deben tener codificación de URI. Por ejemplo, la cadena "1st & Pike, Seattle" debe convertirse en 1st%20%26%20Pike%2C%20Seattle. Los espacios de la cadena se pueden codificar con %20 o reemplazar con el signo más (+).

Puedes usar el método android.net.Uri parse() para codificar tus cadenas. Por ejemplo:

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

Inicia la navegación paso a paso

Usa este intent para iniciar la navegación de Google Maps con instrucciones paso a paso a una o varias direcciones o coordenadas especificadas. Las instrucciones siempre se proporcionan desde la ubicación actual del usuario.

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

Parámetros

Para iniciar la navegación, usa place o q con waypoints, que es opcional. Para marcar un punto de referencia como estación de carga de forma opcional, consulta Cómo enviar un plan de viaje en vehículo eléctrico a Google Maps.

  • q establece el extremo para las búsquedas de navegación. Puede ser una latitud/longitud o una dirección con formato de consulta. Si es una cadena de consulta que muestra más de un resultado, se seleccionará el primero.

  • place establece el extremo en casa o en el trabajo. Especifica casa para navegar a la casa del usuario y trabajo para navegar a su lugar de trabajo.

  • avoid establece las características que la ruta debe evitar. avoid es opcional y se puede establecer en uno o más de los siguientes valores:

    • t para peajes
    • h para autopistas
    • f para ferris
  • waypoints especifica uno o más lugares intermedios para enrutar instrucciones sobre cómo llegar al destino final que especifica q. Puedes especificar varios puntos de referencia si usas el carácter de barra vertical (|) para separar los lugares, por ejemplo, Berlin,Germany|Paris,France. Puedes usar tantos puntos de referencia como sea necesario. Los puntos de referencia se agregarán a la ruta en el mismo orden en que aparecen en la URL. Cada punto de referencia puede ser una dirección o coordenadas de latitud y longitud separadas por comas. Además, puedes tener direcciones y coordenadas de latitud y longitud en el mismo intent. Las cadenas deben estar escapaes de URL, por lo que los puntos de referencia como "Berlin,Germany|Paris,France" deben convertirse a Berlin%2CGermany%7CParis%2CFrance.

Ejemplos

Este intent solicitará la navegación paso a paso al zoológico de Taronga, en Sídney, Australia:

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

Si prefieres no pagar peajes ni tomar un ferry, puedes solicitar rutas que intenten evitar estas situaciones:

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

O bien, si prefieres navegar a tu casa, usa lo siguiente:

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

Para iniciar la navegación paso a paso a las siguientes tres direcciones en orden, pasa el zoológico de Taronga como destino final q y Google Sydney y la Ópera de Sídney como puntos de ruta:

  1. Google Sydney

  2. Ópera de Sidney

  3. Taronga Zoo, Sídney, Australia

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

Al igual que con q, puedes representar cualquiera de los puntos de referencia con una latitud y una longitud separadas por comas en lugar de una dirección. Por ejemplo, para iniciar la misma navegación y pasar la latitud y longitud de la Ópera de Sídney en lugar de la dirección, haz lo siguiente:

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

Cómo enviar un plan de viaje en vehículo eléctrico a Google Maps

Usa este intent de navegación de varios destinos para especificar algunos destinos como paradas de carga de vehículos eléctricos (VE). Este intent, que extiende el intent de varios puntos de ida y vuelta, ayuda a los conductores a mantener una carga de batería suficiente en el vehículo eléctrico para llegar a sus destinos sincronizando la información de las paradas de carga entre las apps de planificación de viajes en VE y Google Maps.

Para las paradas de carga, los intents de viaje son los siguientes:

  • Debe contener el nombre y la latitud y longitud
  • De forma opcional, puede contener la salida de energía para calcular el tiempo de carga.

Google usa el nombre y la latitud y longitud de la estación de carga para encontrar un lugar de estación de carga que coincida y mostrar datos enriquecidos, como tipos de conectores, totales, velocidades y disponibilidad en tiempo real, formas de pago admitidas y puntos de interés (POI) del host. Por ejemplo, instrucciones sobre cómo llegar en automóvil a estacionamientos al aire libre para la parte final de la navegación, horarios de atención y calificaciones. Para asegurarte de que las estaciones de carga coincidan con los datos de Google, usa <brand name>, por ejemplo, ChargePoint.

Parámetros

Destino final

Para establecer una estación de carga como destino final, usa lo siguiente:

  • q: Debe contener el valor de latitud y longitud de la estación de carga.
  • q_type: 1 especifica que el destino final es una estación de carga.
  • q_name: Es el nombre del destino final. Obligatorio si q_type es 1.
  • q_power_output_kw: Es un número doble para la salida de energía de la estación de carga en kilovatios. Opcional.

Hitos

En el caso de los puntos de referencia, todos los parámetros son arrays paralelos de valores separados por | en el mismo orden que los puntos de referencia, sin incluir el destino final. Una discrepancia en la cantidad de elementos en los arrays en paralelo se considera un intent con el formato incorrecto.

Para agregar uno o más puntos de referencia de estaciones de carga, usa los siguientes parámetros, que son opcionales. Si uno de los destinos está marcado como estación de carga, el nombre del punto de referencia se vuelve obligatorio para ese destino.

  • waypoints: Es la lista de puntos de referencia, como se describe en el intent de navegación paso a paso. Debe ser un valor de latitud/longitud para los puntos de referencia de las estaciones de carga.

  • waypoint_types: Son los tipos por punto de referencia especificados como un número. 0 es cualquier parada (valor predeterminado) y 1 es la estación de carga.

  • waypoint_names: Nombres de los puntos de referencia Este campo es obligatorio para las estaciones de carga.

  • waypoint_power_outputs_kw: Números dobles para la potencia de la estación de carga en kilovatios. En el caso de las estaciones de carga, puedes especificar de manera opcional un valor de salida de energía de punto de referencia, que se usa como resguardo si no se encuentra la estación coincidente. Una ranura vacía significa que no se proporciona ningún valor.

Comportamiento de la experiencia del usuario (UX)

En el caso de los intents de viaje con varios destinos, se muestra la pantalla de descripción general de la ruta, pero la navegación no se inicia automáticamente.

Si el intent tiene el formato correcto, Google Maps mostrará una pantalla de descripción general de la ruta del viaje. En la pantalla de descripción general de la ruta, se mostrarán todos los puntos de referencia y el destino final del intent, con recomendaciones de carga cuando corresponda.

En el caso de los puntos de referencia o el destino final marcados como estaciones de carga, Google Maps buscará un lugar que coincida en la base de datos de Google.

Cuando se encuentra una coincidencia, Google Maps usa los datos de Google para mostrar la estación de carga en la interfaz de usuario (IU) y proporcionar una recomendación de carga para la estación. Si no se encuentra la coincidencia, se usarán los datos proporcionados en el intent para una estación de carga (latitud y longitud, nombre y potencia de salida) para mostrarla en la IU y proporcionar una recomendación de carga en ella.

Ejemplos

Navegar a un destino final a través de varias estaciones de carga

El siguiente intent navega al destino final, Port Macquarie NSW, a través de dos estaciones de carga, ChargePoint y Evie.

Destinos en orden:

  1. Estación de carga ChargePoint (ubicación: -32.9599188,151.6240806, potencia de salida: 6.6 kW)

  2. Estación de carga Evie (ubicación: -31.9432539,152.4699808, potencia de salida: 350 kW)

  3. Port Macquarie, Nueva Gales del Sur

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

Potencia de salida desconocida

Si se desconoce el valor de la salida de energía, deja el espacio correspondiente de waypoint_power_outputs_kw vacío. O bien, si todos los espacios están vacíos, no es necesario especificar el parámetro waypoint_power_outputs_kw.

Destinos en orden:

  1. Estación de carga ChargePoint (ubicación: -32.9599188,151.6240806, potencia: desconocida)

  2. Port Macquarie, Nueva Gales del Sur

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

Cómo marcar el destino final como una estación de carga

Para marcar el destino final como una estación de carga, especifica los parámetros q_type, q_name y q_power_output_kw.

Destinos en orden:

  1. Taronga Zoo, Sídney, Australia

  2. Estación de carga ChargePoint (ubicación: -32.9599188,151.6240806, potencia: desconocida)

  3. Estación de carga Evie (ubicación: -31.9432539,152.4699808, potencia de salida: 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);

Intentos de acción

Los siguientes intents de acción con interfaces están disponibles:

Acción Descripción
geo.action:?act=mute Silencia todas las indicaciones por voz de navegación.
geo.action:?act=unmute Activa el sonido de las indicaciones por voz de navegación.
geo.action:?act=show_traffic Muestra las líneas de tráfico en el mapa.
geo.action:?act=hide_traffic Oculta las líneas de tráfico en el mapa.
geo.action:?act=show_satellite Muestra imágenes satelitales en el mapa.
geo.action:?act=hide_satellite Oculta las imágenes satelitales en el mapa.
geo.action:?act=query_next_turn Google Maps indica el próximo giro (solo funciona mientras se navega).
geo.action:?act=distance_to_next_turn Google Maps indica la distancia hasta el próximo giro (solo funciona mientras se navega).
geo.action:?act=time_to_next_turn Google Maps indica el tiempo hasta el próximo giro (solo funciona mientras se navega).
geo.action:?act=distance_to_destination Google Maps dice la distancia al destino (solo funciona mientras se navega).
geo.action:?act=go_back Google Maps vuelve a la pantalla anterior en la IU.
geo.action:?act=query_current_road Google Maps indica la ruta actual.
geo.action:?act=query_destination Google Maps dice el destino.
geo.action:?act=apply_electric_vehicle_connector_filter Aplica el filtro de tipo de conector para los resultados de la búsqueda de estaciones de carga de vehículos eléctricos.
geo.action:?act=remove_electric_vehicle_connector_filter Quita el filtro de tipo de conector de los resultados de la búsqueda de estaciones de carga de vehículos eléctricos.
geo.action:?act=apply_electric_vehicle_payment_filter Aplica el filtro de pago para los resultados de la búsqueda de estaciones de carga de vehículos eléctricos.
geo.action:?act=remove_electric_vehicle_payment_filter Se quita el filtro de pago de los resultados de la búsqueda de estaciones de carga de vehículos eléctricos.
geo.action:?act=apply_electric_vehicle_fast_charging_filter Aplica el filtro de carga rápida a los resultados de la búsqueda de estaciones de carga de vehículos eléctricos.
geo.action:?act=remove_electric_vehicle_fast_charging_filter Se quita el filtro de carga rápida de los resultados de la búsqueda de estaciones de carga de vehículos eléctricos.
geo.action:?act=avoid_tolls Si el usuario está navegando, le indica a Google Maps que evite las rutas con peajes. Esto puede provocar un cambio de ruta si la ruta actual tiene peajes.
geo.action:?act=allow_tolls Si el usuario está navegando, le indica a Google Maps que permita rutas con peajes. Esto puede provocar un cambio de ruta si permitir peajes genera una ruta mejor disponible.
geo.action:?act=avoid_ferries Si el usuario está navegando, le indica a Google Maps que evite las rutas con transbordadores. Esto puede provocar un cambio de ruta si la ruta activa actual tiene transbordadores.
geo.action:?act=allow_ferries Si el usuario está navegando, le indica a Google Maps que permita rutas con transbordadores. Esto podría generar un cambio de ruta si permitir los transbordadores hace que haya una ruta mejor disponible.
geo.action:?act=avoid_highways Si el usuario está navegando, le indica a Google Maps que evite las rutas con autopistas. Esto puede provocar un cambio de ruta si la ruta activa actual tiene autopistas.
geo.action:?act=allow_highways Si el usuario está navegando, le indica a Google Maps que permita rutas con autopistas. Esto podría generar un cambio de ruta si permitir las autopistas genera una ruta mejor disponible.
geo.action:?act=eta Si el usuario está navegando, Google Maps dice la hora estimada de llegada al destino (por ejemplo, 9:15 a.m.).
geo.action:?act=time_to_destination Si el usuario está navegando, Google Maps dice el tiempo estimado hasta el destino (por ejemplo, 15 minutos).
geo.action:?act=exit_navigation Sale de la navegación.
geo.action:?act=select_search_result&id=0 Si los resultados de la búsqueda se muestran actualmente en la pantalla (consulta a continuación), comienza la navegación al n° en función del parámetro de ID proporcionado. Ten en cuenta que el índice se basa en 0 (es decir, el intent anterior seleccionará el primer resultado de la lista).

Resultados de la búsqueda que se muestran en la pantalla