Intents de Google Maps para Android Automotive

Renuncia de responsabilidad

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

Con respecto al software de muestra, los archivos de datos o el código fuente que acompañan esta documentación, este producto se proporciona "tal cual" y sin garantía de ningún tipo, y Google renuncia explícitamente a cualquier garantía, ya sea expresa, implícita, legal o de otra índole, incluidas, sin limitarse a ello, las garantías de comerciabilidad, adecuación a un fin particular y no incumplimiento de cualquier derecho relacionado con este producto.


Mediante 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.

Si quieres obtener más información para llevar tu app a vehículos con Android Auto o el SO Android Automotive, consulta Android para automóviles.

Descripción general

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

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 vista, ACTION_VIEW.

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

  • Empaquetado. 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 cuál 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, e iniciará la Activity 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 puede responder al intent, es posible que tu app falle. Por este motivo, primero verifica que esté instalada una aplicación receptora antes de presentar uno de estos intents a un usuario.

A fin de verificar que haya una app 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, inhabilitar 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 con codificación de 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 string se pueden codificar con %20 o reemplazar por 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 sobre cómo llegar a una o varias direcciones o coordenadas especificadas. Las instrucciones sobre cómo llegar 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. Si deseas marcar de manera opcional un punto de referencia como estación de carga, consulta Cómo enviar un plan de viaje en vehículo eléctrico a Google Maps.

  • q establece el punto de finalización para las búsquedas de navegación. Puede ser una latitud y 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 primer resultado.

  • place establece el extremo como particular o del trabajo. Especifica la página principal para navegar a la casa del usuario y la del trabajo para navegar al lugar de trabajo del usuario.

  • avoid establece atributos que la ruta debe evitar. avoid es opcional y se puede establecer en una o más de las siguientes opciones:

    • t para peajes
    • h en autopistas
    • f para transbordadores
  • waypoints especifica uno o más lugares intermedios para dirigir las instrucciones sobre cómo llegar al destino final especificado por q. Puedes especificar varios puntos de referencia con el carácter de barra vertical (|) para separar lugares, por ejemplo, Berlin,Germany|Paris,France. Puedes usar todos los puntos de referencia que necesites. Los puntos de referencia se agregarán a la ruta en el mismo orden en que se enumeran en la URL. Cada punto de referencia puede ser una dirección o coordenadas de latitud y longitud separadas por comas, y puedes tener direcciones y coordenadas de latitud y longitud en el mismo intent. Las cadenas deben tener con escape de URL, por lo que los puntos de referencia como "Berlín,Alemania|París,Francia" deben convertirse en Berlin%2CGermany%7CParis%2CFrance.

Ejemplos

Esta intent solicitará 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 abordar un transbordador, puedes solicitar la planificación de ruta que intente 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);

Si prefieres navegar a tu casa, usa:

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 hacia las siguientes tres direcciones en orden, pasa al zoológico de Taronga como destino final q y a la Ópera de Sídney y a la Ópera de Sídney como los puntos de referencia.

  1. Google Sídney

  2. Ópera de Sidney

  3. Zoológico Taronga, 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);

De manera similar a q, puedes representar cualquiera de los puntos de referencia mediante una latitud y longitud separadas por comas en lugar de una dirección. Por ejemplo, para iniciar la misma navegación y pasar la longitud de latitud 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);

Envía un plan de viaje en vehículo eléctrico a Google Maps

Usa este intent de navegación con 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 referencia, ayuda a los conductores a mantener suficiente carga de batería del vehículo eléctrico para llegar a sus destinos mediante la sincronización de la información de las paradas de carga entre las apps de planificación de viajes del VE y Google Maps.

En el caso de las paradas de carga, los intents de viaje hacen lo siguiente:

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

Google usa el nombre de la estación de carga y la latitud y longitud para encontrar un lugar que coincida con esa estación y mostrar datos enriquecidos, como los tipos de conectores, los totales, las velocidades y la disponibilidad en tiempo real, las formas de pago admitidas y los lugares de interés de host. Por ejemplo, las instrucciones sobre cómo llegar en auto dentro de estacionamientos al aire libre para la parte final de la navegación, el horario de atención y las calificaciones. Para asegurarte de que las estaciones de carga coincidan bien 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 potencia de salida de la estación de carga en kilovatios. Opcional.

Puntos de referencia

Para los puntos de referencia, todos los parámetros son arreglos de valores paralelos separados por | en el mismo orden que los puntos de referencia, sin incluir el destino final. Una falta de coincidencia en la cantidad de elementos de los arreglos paralelos se trata como un intent con 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 es 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 y longitud para los puntos de referencia de la estación de carga.

  • waypoint_types: Tipos por punto de referencia especificado como un número. 0 es cualquier parada (valor predeterminado), y 1 es la estación de carga.

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

  • waypoint_power_outputs_kw: Números dobles para la energía de la estación de carga en kilovatios. En el caso de las estaciones de carga, puedes especificar de manera opcional un valor de potencia de salida para el punto de referencia, que se usa como resguardo si no se encuentra la estación coincidente. Si la ranura está vacía, significa que no se proporcionó 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.

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

Para los puntos de referencia o destino final marcados como estación de carga, Google Maps buscará un lugar coincidente 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 de carga. Si no se encuentra una coincidencia, los datos proporcionados en el intent de una estación de carga (lat-long, nombre y salida de energía) se usarán para mostrar esa estación en la IU y proporcionar una recomendación de carga en ella.

Ejemplos

Navega 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 no se conoce el valor de potencia de salida, deja vacía la ranura relevante de waypoint_power_outputs_kw. O, si todas las ranuras están vacías, 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 de salida: 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 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. Zoológico Taronga, Sídney, Australia

  2. Estación de carga ChargePoint (ubicación: -32.9599188,151.6240806, potencia de salida: 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);