Notas de la versión

En este registro de cambios, se detallan las nuevas funciones y las correcciones de errores de cada versión del SDK de Navigation para Android.

18 de octubre de 2021: se congela la compatibilidad con los niveles de API 23, 24 y 25.

En respuesta a los cambios en nuestras dependencias internas, los niveles de API 23, 24 y 25 de Android (Android 6, 7.0 y 7.1) no serán compatibles con las nuevas versiones de los SDKs de Navigation y Driver para Android a partir del tercer trimestre de 2022.

Los SDKs de Navigation y Driver para las versiones de Android que se lanzaron a partir del tercer trimestre de 2022 solo admitirán dispositivos que ejecuten el nivel de API 26 de Android como mínimo.

Las versiones de la app compiladas con la versión 4.x o versiones anteriores de los SDKs de Navigation y Driver para Android seguirán funcionando en dispositivos que ejecuten el nivel de API 25 o versiones anteriores de Android.

Anuncio de baja (21 de junio de 2021)

En este anuncio, se describen las bajas del SDK de Navigation para Android y el SDK de Driver para Android a partir de la fecha mencionada anteriormente. Este anuncio también se envió como un anuncio de servicio obligatorio (MSA) a los clientes afectados.

Baja del SDK de Navigation para Android y la versión 1.x del SDK de Driver para Android

El SDK de Nav/Driver se lanzó en 2018 y, con las versiones 3 que se lanzarán pronto, es hora de dar de baja la versión 1 para evitar que la compatibilidad con muchas versiones principales resulte insostenible.

El tiempo que ahorramos por no tener que admitir esta versión adicional nos permitirá admitir mejor la versión principal más reciente y compilar más funciones importantes para nuestros clientes.

Por lo tanto, la versión 1.x del SDK de Nav/Driver dejó de estar disponible y ya no se mantendrá después del 21 de junio de 2022.

Tómate un momento para ver cómo funcionan las bajas en las versiones del SDK.

Consulta las notas de la versión de la versión 2/v3 del SDK de Navigation para Android para obtener información adicional sobre la baja de Android.

Versión 1.51.1 (1 de abril de 2022)

Estabilidad y corrección de errores

  • Corrige un hipervínculo roto en el diálogo de las Condiciones del Servicio.

  • Algunos clientes recibieron un error del diálogo de las Condiciones del Servicio cuando se destruyó la actividad de Android. Ahora los clientes ya no experimentarán este error de diálogo cuando se destruya una actividad.

Versión 1.51 (18 de enero de 2022)

Cambios en la API

  • Aumenta el nivel de API de Android para el SDK de Navigation a 23 y el nivel de API objetivo aumenta a 30. Esta versión de destino cumple con los requisitos de Google Play.

  • Renderiza la polilínea que sigue el comilla angular de navegación en color "gris" para indicar que el usuario ya condujo a través de esa sección de la ruta.

Versión 1.50 (3 de noviembre de 2021)

  • Variante Jetified de la versión 1.22. No se realizaron cambios más allá del uso de las bibliotecas de AndroidX.

Versión 1.22 (7 de octubre de 2021)

Estabilidad y corrección de errores

  • Se corrigió un error de la cámara por el cual la cámara dejaba de seguir la ubicación del usuario después de que se llamaba a stopNavigation.
  • Se corrigió un error de la cámara por el que el botón para volver a centrar aparece después de ejecutar la app en segundo plano
  • Soluciona un posible problema de fuga de memoria.
  • Corrige un error que producía problemas de ANR.
  • Impide una falla que se originó en el diálogo de las Condiciones del Servicio.

Elementos obsoletos

  • #setDestinations deja de estar disponible con el token de ruta y se reemplaza por una API nueva que usa CustomRoutesOptions.

Nuevas funciones

  • Se agregó una función de retiro asistiva que agrega un nuevo ícono a la IU del pie de página de la navegación.
  • Se agregó compatibilidad con vehículos de 2 ruedas para rutas personalizadas.

Versión 1.21.1 (13 de julio de 2021)

Estabilidad y corrección de errores

  • Corrige un IllegalStateException asociado con una verificación de condiciones previas demasiado restrictiva en el código de implementación.
  • Se corrigió un NullPointerException en NavigationView.onDestroy().

Versión 1.21 (23 de junio de 2021)

Cambios en la API

  • Los objetos de escucha de velocidad ahora son compatibles con la navegación sin interfaz gráfica. Esto permite supervisar el exceso de velocidad sin renderizar primero un View o un Fragment del SDK de Navigation.

Estabilidad y corrección de errores

  • Se mejoró la solidez de la carga de mosaicos de mapas en el modo nocturno en las instalaciones de apps por primera vez.

Elementos obsoletos

Los siguientes métodos dejaron de estar disponibles y se los reemplazó por Navigator.setSpeedAlertOptions():

  • NavigationView.setSpeedAlertOptions()
  • SupportNavigationFragment.setSpeedAlertOptions()
  • NavigationFragment.setSpeedAlertOptions()

Versión 1.20.1 (14 de julio de 2021)

Estabilidad y corrección de errores

  • Corrige un IllegalStateException asociado con una verificación de condiciones previas demasiado restrictiva en el código de implementación.
  • Se corrigió un NullPointerException en NavigationView.onDestroy().

Versión 1.20 (9 de marzo de 2021)

  • Se agregó una nueva dependencia obligatoria. Agrega las siguientes dependencias a tus listas de dependencias de Gradle para evitar fallas en el tiempo de ejecución: api 'joda-time:joda-time:2.9.9'.

Estabilidad y corrección de errores

  • Se solucionó un problema por el que los consumidores del SDK de Navigation que usaban Joda-Time entraban en conflicto con la versión ofuscada de jodatime que se empaquetaba en nuestra biblioteca.
  • Se solucionó un problema en el que el SDK de Navigation ocultaba accidentalmente las notificaciones de la app para consumidores que no le pertenecía cuando se iniciaba una sesión de navegación.

Versión 1.19 (15 de diciembre de 2020)

Cambios en la API

  • DriverSDK ahora envía siempre datos de tráfico a FleetEngine. Antes, este comportamiento estaba determinado por la marca UpdateVehicleResponse. Ahora se ignora esa marca.

  • Cambió el constructor de FleetEngine; se agregaron wrappers para AuthTokenFactory y StatusListener.

  • Se agregaron dos métodos nuevos a la API de Navigator para permitir la configuración y eliminación de objetos de escucha para sesiones de navegación nuevas.

  • Se agregó un nuevo método a la API de Navigator para obtener IDs de transacción para la sesión de navegación en curso. Esta API debe usarse cuando se inicia una nueva sesión de navegación y cuando los IDs de transacción cambian en una sesión de navegación en curso (p.ej., cuando se actualiza la lista de segmentos de recorrido).

Versión 1.18 (9 de octubre de 2020)

  • Se agregó el método setAbnormalTerminationReportingEnabled(boolean). Este método permite a los usuarios inhabilitar la supervisión de detección de fallas.

  • Se corrigió un error por el que no se podía cancelar el registro de LocationListeners desde el evento onLocationChange.

  • Se corrigió una falla de gRPC en la que no se podía crear una instancia de io.grpc.util.SecretRoundRobinLoadBalancerProvider$Provider.

Versión 1.17 (27 de agosto de 2020)

  • Ahora puedes pasar un token de ruta a NavSDK para recuperar la ruta que representa ese token. El token de ruta se asocia con una respuesta de ruta cuando llamas a la API de Routes Preferred. La nueva API es Navigator#setDestination(List<Waypoint> destinations, String routeToken).

  • Se agregaron algunas dependencias nuevas obligatorias. Agrega las siguientes dependencias a tus listas de dependencias de Gradle para evitar fallas en el tiempo de ejecución:

    api 'com.google.android.datatransport:transport-api:2.2.0' api 'com.google.android.datatransport:transport-backend-cct:2.2.0' api 'com.google.android.datatransport:transport-runtime:2.2.0'

Versión 1.16 (10 de agosto de 2020)

Nuevas funciones

  • Se agregó la API de Waypoint.Builder.setVehicleStopover, que habilita o inhabilita la reubicación automática de paradas en la ruta cuando se establecen puntos de referencia en un lugar en el que no es posible detenerse.

  • Se agregó un parámetro SpeedAlertSeverity a la devolución de llamada SpeedAlert. Usa este parámetro con SpeedingListener.

Estabilidad y corrección de errores

  • El método NavigationApi.cleanUp dejó de estar disponible debido a efectos secundarios no deseados, como NullPointerExceptions, que provoca fallas.

  • Waypoint.fromLatLng() y Waypoint.fromPlaceId() dejaron de estar disponibles y se los reemplazó por Waypoint.builder().

  • La clase AddressListener, contenida en NavigationTransactionRecorder, dejó de estar disponible porque no se usa.

Versión 1.15 (23 de marzo de 2020)

Nuevas funciones

  • Fuentes, colores e íconos personalizables para el encabezado Navigation.

  • Se admite la personalización del color de los carriles recomendados en la IU del encabezado de Navigation.

  • Actualiza varias APIs para que sigan el patrón de agregar y quitar a fin de configurar devoluciones de llamada y objetos de escucha. Los métodos set* anteriores se marcaron como obsoletos y se quitarán en una versión futura. Estos son los métodos obsoletos que se enumeran a continuación:

    • SupportNavigationFragment.setOnNightModeChangedListener
    • SupportNavigationFragment.setOnRecenterButtonClickedListener
    • NavigationFragment.setOnNightModeChangedListener
    • NavigationFragment.setOnRecenterButtonClickedListener
    • NavigationView.setOnNightModeChangedListener
    • NavigationView.setOnRecenterButtonClickedListener
    • Navigator.setArrivalListener
    • Navigator.setRouteChangedListener
    • Navigator.setRemainingTimeOrDistanceChangedListener

Estabilidad y corrección de errores

  • Aumenta el valor de minSdkVersion de navsdk a 19.

  • Se corrigió un error por el que no se respetaban los nombres de puntos de referencia de latitud y longitud en caso de que falle la geocodificación inversa del servidor.

Versión 1.14 (2 de febrero de 2020)

Nuevas funciones

  • (Beta) El operador puede influir en cuál de las opciones de ruta sigue el conductor mediante la configuración de una distancia objetivo para la ruta en la solicitud de instrucciones sobre cómo llegar. Esta función está en versión beta. Si te interesa, comunícate con tu representante de Ingeniería de Atención al cliente para obtener más información.

  • Compila el SDK hasta el nivel de API 29.

Estabilidad y corrección de errores

  • Se corrigió un error en el diálogo de las Condiciones del Servicio que impedía que el mensaje "Aceptar" fuera obligatorio para los conductores.

  • Se modificó el comportamiento del control de excepciones en los componentes del NDK para evitar una condición de falla.

Versión 1.13 (8 de noviembre de 2019)

Nuevas funciones

  • Los conductores ahora pueden recibir alertas de velocidad cuando superan el límite de velocidad. Puedes personalizar el aspecto de los íconos de alertas de velocidad. Tal como se detalla en las Condiciones del Servicio de Google Maps Enterprise, Google no ofrece ninguna garantía con respecto a la calidad de ninguna de las funciones, ni a la precisión de las alertas de velocidad. Las alertas de velocidad solo se deben usar con fines informativos.

  • Se agregó una nueva opción de enrutamiento (RoutingOptions) que te permite mostrar rutas alternativas durante la vista previa de la ruta.

  • Se agregó una nueva perspectiva de la cámara que muestra una vista cenital de la ruta, con la ruta orientada de modo que el vehículo siempre apunte hacia adelante. Para configurar esta perspectiva, llama a NavFragment.getCamera().followMyLocation(Camera.Perspective.TOP_DOWN_HEADING_UP).

  • Se agregó una nueva API (resetFreeNav() en RoadSnappedLocationProvider) a la que puedes llamar para restablecer el servicio de Free Nav cada vez que dejes de recibir actualizaciones de ubicación en un objeto de escucha registrado, cuando la navegación no está activa.

Estabilidad y corrección de errores

  • Se actualizó el contenido del diálogo de las Condiciones del Servicio.

Versión 1.12 (7 de octubre de 2019)

Nuevas funciones

  • Ahora puedes ocultar y mostrar una o todas las rutas alternativas durante la navegación.

  • Ahora puedes especificar la estrategia de enrutamiento en las solicitudes (ruta más corta o rápida).

  • Se agregó la capacidad de personalizar completamente el diálogo de los Términos y Condiciones (tamaño del texto, color, etcétera).

Estabilidad y corrección de errores

  • Se corrigió el error de clase duplicada en com.google.http-client.

  • Se actualizó la app de demostración para usar el nuevo SDK de Places y se Jetified la app de demostración.

  • Se mejoró la velocidad de fotogramas de la cámara en la descripción general del viaje.

Versión 1.11 (28 de junio de 2019)

Mejoras en el rendimiento

  • Se mejoró la latencia de red de setDestination.

Correcciones de errores

  • Se corrigió una incoherencia con la devolución de llamada onArrival cuando se navegaban varios puntos de referencia.

  • Se corrigió un problema por el que la llegada podía activarse antes de tiempo para puntos de referencia que no están cerca de la ubicación actual.

  • java.lang.IllegalStateException

    • Una llamada a NavigationView.onDestroy no puede seguir una llamada a NavigationView.onCreate.

Varios

  • Actualizaciones de licencias de software de código abierto.

  • Se quitaron las leyendas de las horas de llegada estimadas de la ruta para quitar datos redundantes y simplificar la IU.

Versión 1.10.2 (11 de abril de 2019)

Estabilidad y corrección de errores

  • Se corrigió un error que podía hacer que se arrojara una IllegalStateException durante una transición del ciclo de vida de Fragment: onCreate() a onDestroy().

Versión 1.10 (11 de abril de 2019)

Funciones

  • Encabezado del diálogo personalizable de los Términos y Condiciones Puedes personalizar el texto del título del cuadro de diálogo de los Términos y Condiciones con showTermsAndConditionsDialog.

  • Marcador de puntos de referencia: Se quitaron los caracteres alfanuméricos de los marcadores de puntos de referencia.

Versión 1.9 (11 de febrero de 2019)

Funciones

  • Encabezado secundario Puedes agregar contenido personalizado debajo del encabezado de navegación con la función de controles personalizados. Consulta la posición SECONDARY_HEADER para el método setCustomControl.

  • Dependencias nuevas: Agrega dependencias para Cronet y Glide. Para obtener información detallada, consulta Cómo actualizar la secuencia de comandos de compilación de Gradle en el tema Configuración del proyecto.

Errores conocidos

  • Si la app de demostración falla con java.lang.ClassNotFoundException: found class "com.example.navigationapidemo.SplashScreenActivity", debes actualizar la dependencia de las herramientas de compilación de Gradle a la versión 3.3.1 o una posterior. En el archivo build.gradle, verifica que buildscript coincida con el siguiente ejemplo:
buildscript {
    repositories {
        mavenCentral()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.1'
    }
}

Versión 1.8.1 (22 de enero de 2019)

Estabilidad y corrección de errores

  • Se corrigieron las fallas del modo taxi en ciertos modos de la cámara.
  • Varias mejoras de estabilidad.

Versión 1.8 (21 de diciembre de 2018)

Funciones

  • Modo taxi (versión beta): Tu app puede usar los carriles y las calles que se dedican específicamente a los taxis para proporcionar rutas y hora estimada de llegada (ETA) para vehículos identificados como taxis.

    Actualmente, se admiten las siguientes áreas geográficas:

    • Brasil: Río de Janeiro
    • Inglaterra: Birmingham, Coventry, Área metropolitana de Londres, Manchester
    • Israel: Tel Aviv
    • Irlanda: Dublín
    • Rusia: Moscú
    • Escocia: Glasgow, Edimburgo
    • España: Madrid, Barcelona

Estabilidad y corrección de errores

  • Se corrigieron fugas de memoria.
  • tiene un rendimiento mejorado.

Versión 1.7.3 (18 de septiembre de 2018)

Correcciones de errores

  • NavigationView ahora puede realizar la transición de onStart directamente a onStop, esto ya no generará un IllegalStateException.

Versión 1.7.2 (16 de agosto de 2018)

Funciones

  • Ahora puedes mostrar una lista de instrucciones sobre cómo llegar durante la navegación para mostrar los próximos giros de un viaje. La lista de instrucciones sobre cómo llegar se proporciona a través de DirectionsListView.
  • Ahora puedes recuperar el estado del tráfico con la clase TimeAndDistance a través del método getSeverity.
  • Ahora se admiten las restricciones por matrícula de vehículos.

Correcciones de errores

  • Se corrigieron fallas ocasionales en el diálogo de las Condiciones del Servicio (que se manifiestan como IllegalStateException).
  • Se corrigió la excepción NullPointerException con un mensaje como "intento de escribir en el campo ... en una referencia de objeto nula".
  • Los identificadores de recursos en R.txt (antes todos 0x1) ahora tienen los valores correctos.

Versión 1.6.2 (16 de julio de 2018)

Correcciones de errores

  • Se corrigió una NullPointerException en AccessibilityStateUtils.getAccessibilityState().

Versión 1.6.0 (10 de mayo de 2018)

Correcciones de errores

  • Se corrigió un error que causaba textos destacados incorrectos de ETA en los tramos del recorrido y las rutas alternativas.
  • Se corrigió una NullPointerException que se producía cuando los valores de latitud o longitud de una ubicación eran null.
  • Se corrigió un error que impedía que se cargara el mapa si se aceptaba el diálogo de las Condiciones del Servicio sin conexión.
  • Se agregó una solución alternativa para un error de LocationManager del SO Android 7.0 que daría como resultado un NPE en el SDK de Navigation.

Versión 1.5.0 (26 de marzo de 2018)

Funciones

  • Modo nocturno: Ahora puedes configurar la navegación para usar el tema del modo nocturno. Puedes habilitar o inhabilitar de manera programática el modo nocturno, o bien permitir que el SDK de Navigation active o desactive automáticamente el tema según la hora del día.
  • Modo de viaje en vehículo motorizado de dos ruedas (Beta): Ahora puedes establecer el medio de transporte en TWO-WHEELER para obtener rutas en motocicleta y scooter. Por el momento, esta función solo está disponible en Indonesia y la India.
  • Límites de velocidad: Ahora puedes ocultar o mostrar de manera programática el ícono de límite de velocidad (el ícono solo aparece en ubicaciones donde están disponibles los datos de límites de velocidad confiables).
  • Controles de superposición de mapa personalizados: Puedes usar controles de superposición de mapa personalizados para posicionar elementos de la IU de forma dinámica mientras navegas.
  • La llamada a getNavigator() ahora acepta un contexto de la aplicación para que se pueda llamar desde un servicio.

Correcciones de errores

  • Se solucionaron varios problemas de diseño del texto en el diálogo de las Condiciones del Servicio para mejorar la visualización de los idiomas que se escriben de derecha a izquierda.

Versión 1.3.4 (24 de enero de 2018)

  • Se corrigió el error que causaba que clearDestinations a veces no borre la ruta anterior.

Versión 1.3.3 (18 de diciembre de 2017)

  • Se hizo que la clase CameraArbitrator sea segura para subprocesos, ya que se usa en los subprocesos de la IU y de renderización.
  • No arrojes un NPE si llegan eventos para CompassButtonController después de que se llamó a onDestroy().
  • Se agregaron verificaciones nulas para los métodos públicos de NavigationApi. El SDK arrojará la NPE lo más cerca posible al código del desarrollador.

Versión 1.3.2 (30 de noviembre de 2017)

  • Se corrigió una falla que se producía cuando se producían errores de red.

Versión 1.3.1 (14 de noviembre de 2017)

  • Se corrigieron las notificaciones emergentes de navegación paso a paso en Android 8.0 Oreo (nivel de API 26) y versiones posteriores.
  • Se solucionó un problema por el que no se podían ver las instrucciones sobre cómo llegar si se solicitaban antes de crear una NavigationView o NavigationFragment.

Versión 1.3 (7 de noviembre de 2017)

  • Se agregó un método onTrimMemory() a NavigationView. La actividad que lo contiene debe llamar a este método.
  • Navigator.setDestinations() ahora mostrará el estado LOCATION_UNKNOWN si no se pudo encontrar una corrección de ubicación dentro del tiempo de espera especificado. El tiempo de espera se puede configurar con RoutingOptions.locationTimeoutMs().
  • Ahora, los puntos de anclaje para imágenes de marcadores personalizadas se pueden configurar con MarkerOptions.anchor().
  • NavigationMap ahora expone un objeto Projection que se puede usar para obtener los límites visibles de latitud y longitud del mapa teniendo en cuenta el padding.
  • Las notificaciones de navegación emergentes paso a paso ahora se pueden inhabilitar usando Navigator.setHeadsUpNotificationEnabled().
  • El botón para volver a centrar ahora ofrece un objeto de escucha en el que se hace clic. Esto se puede configurar con el método setOnRecenterButtonClickedListener() en NavigationView, NavigationFragment y SupportNavigationFragment.

Versión 1.2.6 (25 de octubre de 2017)

  • Se corrigió una NullPointerException que podía ocurrir si el SO recreaba automáticamente el servicio de navegación.
  • NavigationView ya no arroja una excepción si se llama a ciertos métodos de ciclo de vida en un orden incorrecto, p.ej., llamadas consecutivas a onStart() o onResume(). En su lugar, se registra un mensaje de advertencia.

Versión 1.2.5 (19 de octubre de 2017)

  • Se agregó una mejor administración de caché de mosaicos para mantener bajo control el uso de memoria.
  • Se corrigió una falla que ocurría si se llamaba a Navigator.setDestinations() antes de crear un NavigationView o NavigationFragment.

Versión 1.2.4 (11 de octubre de 2017)

  • Se corrigió una fuga de memoria que podía ocurrir cuando se creaban varios objetos NavigationView sin la presencia de un Navigator.

Versión 1.2.3 (4 de octubre de 2017)

  • Se corrigió un error de ciclo de vida que a veces causaba que desapareciera el marcador de mi ubicación.
  • Se corrigió otra instancia en la que se podían perder los eventos de partida y destino.

Versión 1.2.2 (27 de septiembre de 2017)

  • Mejoras en la latencia para acelerar la inicialización de la API y las llamadas a Navigator.setDestinations

Versión 1.2.1 (20 de septiembre de 2017)

  • Se agregó android:largeHeap="true" al manifiesto de la biblioteca. Esto reduce la frecuencia de OutOfMemoryErrors y es necesario para una experiencia de navegación confiable.
  • Se mejoró la confiabilidad de la grabación de eventos de partida y destino.

Versión 1.2 (1 de septiembre de 2017)

  • Cuando no se conoce la orientación del dispositivo, el mapa aparece ahora en un modo de vista general centrado y con el norte arriba y muestra un marcador circular de mi ubicación. Esto es especialmente útil al comienzo del recorrido, ya que ayuda a los usuarios a orientarse comunicando que el dispositivo aún no tiene una buena idea de hacia dónde está orientado.
  • La tarjeta de incidente de tráfico tiene un diseño nuevo y aparece en la parte inferior del mapa en lugar de su posición anterior en la parte superior.
  • Se actualizó la ubicación de escucha para garantizar que funcione según lo previsto en Android 8.0 Oreo (nivel de API 26).
  • Se corrigió un error por el que los marcadores de destino se renderizaban de manera diferente en el modo de navegación y en el que no.

Versión 1.1.2 (16 de septiembre de 2017)

  • Se mejoró la confiabilidad de la grabación de eventos de partida y destino.

Versión 1.1.1 (24 de agosto de 2017)

  • Se corrigió una IllegalStateException que a veces ocurría durante el redireccionamiento sin conexión de red.
  • Se corrigió un error por el que el diseño de mapa era diferente antes y después de llamar a Navigator.setDestinations().

Versión 1.1 (31 de julio de 2017)

  • Se corrigió un error por el que RoadSnappedLocationListener a veces no funcionaba cuando la app se enviaba a segundo plano.
  • Se corrigió un error de la cámara que se producía al iniciar o detener las indicaciones.
  • Se corrigió un error en Simulator.unsetUserLocation() por el que la ubicación no se restablecía correctamente.

Versión 1.0 (5 de julio de 2017)

  • Lanzamiento del SDK de Navigation.