Notas de la versión

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

18 de octubre de 2021: Congelación de 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 SDK de Navigation y Driver para las versiones de Android que se hayan lanzado a partir del tercer trimestre de 2022 solo serán compatibles con dispositivos que ejecuten un nivel mínimo de API de Android 26.

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

Anuncio de baja (21 de junio de 2021)

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

Baja del SDK de Navigation para Android y el SDK de Driver para Android v1.x

El SDK de Nav/Driver versión 1 se lanzó en 2018 y, como pronto se lanzarán nuestras versiones 3, es hora de dar de baja la versión 1 para evitar la falta de sustentabilidad de muchas versiones principales.

El tiempo que se ahorra por no tener que admitir esta versión adicional nos permitirá brindar una mejor compatibilidad con 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 está obsoleta y 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 v2/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

  • Se corrigió 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 mínimo de API de Android para el SDK de Navigation a 23 y el nivel de API objetivo a 30. Esta versión objetivo cumple con los requisitos de Google Play.

  • Renderiza la polilínea que sigue el corchete angular de navegación en el color "gris" para indicar que el usuario ya condujo por 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 que dejaba de seguir la ubicación del usuario después de llamar a stopNavigation
  • Se corrigió un error de la cámara por el que el botón de volver a centrar la imagen se mostraba después de hacer un análisis a fondo de la app.
  • Soluciona un posible problema de fuga de memoria.
  • Corrige un error que producía problemas de ANR.
  • Impide una falla originada por el diálogo de las Condiciones del Servicio.

Elementos obsoletos

  • #setDestinations dejó de estar disponible con un token de ruta y se reemplazó por una nueva API que use CustomRoutesOptions.

Nuevas funciones

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

Versión 1.21.1 (13 de julio de 2021)

Estabilidad y corrección de errores

  • Se corrigió 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 velocidad sin renderizar primero un View o un Fragment desde el SDK de Navigation.

Estabilidad y corrección de errores

  • Se mejoró la robustez de la carga de mosaicos de mapas en el modo nocturno en las primeras instalaciones de apps.

Elementos obsoletos

Los siguientes métodos dejaron de estar disponibles y se reemplazaron 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

  • Se corrigió 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 tenían conflictos con la versión ofuscada de Jodatime que se empaqueta en nuestra biblioteca.
  • Se solucionó un problema por el que el SDK de Navigation ocultaba accidentalmente las notificaciones de la app de consumidor que no le pertenece al iniciar una sesión de navegación.

Versión 1.19 (15 de diciembre de 2020)

Cambios en la API

  • Ahora, DriverSDK siempre envía datos de tráfico a FleetEngine. Anteriormente, este comportamiento se determinaba mediante la marca UpdateVehicleResponse y ahora se ignora.

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

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

  • Se agregó un método nuevo a la API de Navigator para obtener los ID de transacción de la sesión de navegación en curso. Esta API debe utilizarse 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 viaje).

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 del 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 representada por ese token de ruta. 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 obligatorias nuevas. 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 donde 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

  • Se dio de baja el método NavigationApi.cleanUp debido a efectos secundarios no deseados, como NullPointerExceptions, que generaba fallas.

  • Se dieron de baja Waypoint.fromLatLng() y Waypoint.fromPlaceId() y se reemplazaron por Waypoint.builder().

  • Se dio de baja la clase AddressListener, que se encuentra en NavigationTransactionRecorder, porque no se usa.

Versión 1.15 (23 de marzo de 2020)

Nuevas funciones

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

  • Admite la personalización del color de los carriles recomendados en la IU del encabezado de navegación.

  • Se actualizaron varias APIs a fin de seguir el patrón de agregar y quitar para configurar objetos de escucha y devoluciones de llamada. 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 para 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 fallara 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 estableciendo 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.

  • Se aumentó el SDK de compilación a la 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 la solicitud "Aceptar" fuera obligatoria para los conductores.

  • Se modificó el comportamiento de 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

  • Ahora los conductores pueden recibir alertas de velocidad cuando excedan el límite de velocidad. Puedes personalizar el aspecto de los íconos de alertas de velocidad. Como se detalla en las Condiciones del Servicio de Google Maps Enterprise, Google no otorga garantías con respecto a la calidad de ninguna característica, incluida la precisión de la función de alerta de velocidad. Las alertas de velocidad solo deben usarse 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 cámara que muestra una vista cenital de la ruta, con la ruta orientada de modo que el vehículo siempre apunte hacia delante. 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 navegación gratuita 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 más rápida).

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

Estabilidad y corrección de errores

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

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

  • 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 de rendimiento

  • Se mejoró la latencia de red de setDestination.

Correcciones de errores

  • Se corrigió una inconsistencia con la devolución de llamada onArrival cuando se navega por varios puntos de referencia.

  • Se solucionó un problema en el que la llegada podía activarse de forma prematura para puntos de referencia que no estaban 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 los textos destacados de la hora de llegada estimada de la ruta para quitar los 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 provocar que se arrojara una IllegalStateException durante una transición del ciclo de vida del fragmento: de onCreate() a onDestroy().

Versión 1.10 (11 de abril de 2019)

Funciones

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

  • Marcador de punto 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.

  • Nuevas dependencias Agrega dependencias para Cronet y Glide. Para obtener más información, 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: Did't find class "com.example.navigationapidemo.SplashScreenActivity", deberás 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 los accidentes de tránsito en ciertos modos de cámara.
  • Se implementaron varias mejoras de estabilidad.

Versión 1.8 (21 de diciembre de 2018)

Funciones

  • Modo taxi (BETA): Tu app puede usar los carriles y las calles específicamente dedicados a taxis para proporcionar rutas y la hora estimada de llegada (ETA) de los 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 y 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 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ó NullPointerException con un mensaje como "attempt to write to field ... on a null object reference".
  • 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 de hora de llegada incorrectos en los tramos del viaje y en 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 generaría una 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 forma programática el modo nocturno o dejar que el SDK de Navigation active o desactive el tema automáticamente según la hora del día.
  • Modo de viaje de dos ruedas a motor (Beta): Ahora puedes configurar el modo de viaje en TWO-WHEELER para obtener rutas en motocicleta y scooter. Por el momento, esta función solo está disponible en India e Indonesia.
  • 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 las ubicaciones donde hay datos confiables disponibles sobre el límite de velocidad).
  • Controles personalizados de superposición de mapas: Puedes utilizar estos controles para posicionar elementos de la IU de forma dinámica mientras navegas.
  • La llamada getNavigator() ahora acepta un contexto de aplicación para que se pueda llamar desde un servicio.

Correcciones de errores

  • Se solucionaron varios problemas de diseño de texto en el diálogo de las Condiciones del Servicio a fin de mejorar la visualización para 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 borrara la ruta anterior.

Versión 1.3.3 (18 de diciembre de 2017)

  • Se hizo que la clase CameraArbitrator sea segura para los subprocesos, ya que se usa en la IU y en los subprocesos de renderización.
  • No arrojes una NPE si los eventos de CompassButtonController llegan 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 más cercana al código del desarrollador.

Versión 1.3.2 (30 de noviembre de 2017)

  • Se corrigió la 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 de navegación paso a paso emergentes 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 un objeto 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á un 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 establecer con RoutingOptions.locationTimeoutMs().
  • Ahora se pueden configurar los puntos de anclaje para las imágenes de marcadores personalizados 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 con el padding que se tiene en cuenta.
  • Ahora se pueden inhabilitar las notificaciones de navegación emergente paso a paso con Navigator.setHeadsUpNotificationEnabled().
  • El botón para volver a centrar ahora ofrece un objeto de escucha al hacer clic. 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 suceder si el SO recreaba automáticamente el servicio de navegación.
  • NavigationView ya no arroja una excepción si se llama a determinados métodos del 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 tarjetas para mantener el uso de memoria bajo control.
  • Se corrigió una falla que podía suceder si se llamaba a Navigator.setDestinations() antes de crear un NavigationView o un NavigationFragment.

Versión 1.2.4 (11 de octubre de 2017)

  • Se corrigió una fuga de memoria que podía ocurrir cuando se creaban varias NavigationViews sin que estuviera presente un Navigator.

Versión 1.2.3 (4 de octubre de 2017)

  • Se corrigió un error del ciclo de vida que, a veces, causaba que el marcador my-location desapareciera
  • 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)

  • Se realizaron mejoras de 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 necesaria para brindar 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 ahora aparece en un modo de vista general centrado con el norte arriba y muestra un marcador circular Mi ubicación. Esto resulta particularmente útil al comienzo del recorrido, ya que ayuda a los usuarios a orientarse, ya que transmite que el dispositivo aún no sabe bien hacia dónde está orientado.
  • La tarjeta de incidentes 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 escucha de ubicación 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 modo sin navegación.

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 se producía al redireccionar sin conexión de red.
  • Se corrigió un error por el que el diseño del 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, a veces, RoadSnappedLocationListener no funcionaba cuando la app se enviaba al segundo plano.
  • Se corrigió un error de la cámara que se producía cuando se iniciaba o detenía la guía.
  • 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.