Notes de version

Ce journal des modifications détaille les nouvelles fonctionnalités et corrections de bugs dans chaque version du SDK Navigation pour Android.

18 octobre 2021 : gel de la prise en charge des niveaux d'API 23, 24 et 25.

En réponse aux modifications de nos dépendances internes, les niveaux d'API 23, 24 et 25 (Android 6, 7.0 et 7.1) ne seront plus compatibles avec les nouvelles versions des SDK Navigation et Driver pour Android à partir du troisième trimestre 2022.

Les SDK Navigation et Driver pour Android publiés à partir du troisième trimestre 2022 ne seront compatibles qu'avec les appareils exécutant au minimum le niveau d'API 26 d'Android.

Les versions d'application compilées avec la version 4.x ou antérieure des SDK Navigation et Driver pour Android continueront de fonctionner sur les appareils exécutant Android niveau d'API 25 ou inférieur.

Annonce de l'abandon (21 juin 2021)

Cette annonce décrit les abandons du SDK Navigation pour Android et du SDK Driver pour Android à la date indiquée ci-dessus. Cette annonce a également été envoyée sous forme d'annonce obligatoire sur le service aux clients concernés.

Abandon du SDK Navigation pour Android et du SDK Driver pour Android v1.x

La version 1 du SDK Nav/Driver a été publiée en 2018. Avec nos versions 3 qui seront bientôt publiées, il est temps d'abandonner la version 1 pour éviter que la prise en charge de nombreuses versions majeures ne soit un risque pour la durabilité.

Le temps gagné grâce à l'absence de compatibilité avec cette version supplémentaire nous permettra de mieux prendre en charge la dernière version majeure et de créer davantage de fonctionnalités importantes pour nos clients.

Ainsi, la version 1.x du SDK Nav/Driver est désormais obsolète et ne sera plus gérée après le 21 juin 2022.

Veuillez prendre quelques instants pour découvrir le fonctionnement des abandons dans les versions du SDK.

Pour en savoir plus sur l'abandon d'Android, consultez les notes de version du SDK Navigation pour Android.

Version 1.51.1 (1er avril 2022)

Stabilité et corrections de bugs

  • Corrige un lien hypertexte non fonctionnel dans la boîte de dialogue des conditions d'utilisation.

  • Certains clients ont reçu une erreur de la boîte de dialogue "Conditions d'utilisation" lorsque l'activité Android a été détruite. Désormais, les clients ne rencontrent plus cette erreur de boîte de dialogue lorsqu'une activité est détruite.

Version 1.51 (18 janvier 2022)

Modifications apportées à l'API

  • Passe le niveau d'API Android minimal du SDK Navigation à 23 et fait passer le niveau d'API cible à 30. Cette version cible est conforme aux exigences de Google Play.

  • Affiche la polyligne qui suit le chevron de navigation en couleur "gris" pour indiquer que l'utilisateur a déjà parcouru cette section de l'itinéraire.

Version 1.50 (3 novembre 2021)

  • Variante jetified de la version 1.22. Hormis l'utilisation des bibliothèques AndroidX, aucune modification n'a été apportée.

Version 1.22 (7 octobre 2021)

Stabilité et corrections de bugs

  • Correction d'un bug de la caméra qui empêchait la caméra de suivre la position de l'utilisateur après l'appel de "stopNavigation".
  • Correction d'un bug de l'appareil photo où le bouton de recentrage apparaissait après l'affichage en arrière-plan de l'application.
  • Correction d'un problème potentiel de fuite de mémoire.
  • Corrige un bug qui provoquait des problèmes d'ANR.
  • Empêche un plantage causé par la boîte de dialogue des conditions d'utilisation.

Abandons

  • Abandon de #setDestinations avec un jeton de routage, au profit d'une nouvelle API qui utilise CustomRoutesOptions.

Nouvelles fonctionnalités

  • Ajout d'une fonctionnalité de récupération assistée, qui ajoute une nouvelle icône à l'interface utilisateur du pied de page de navigation.
  • Ajout de la compatibilité avec les deux-roues pour les routes personnalisées.

Version 1.21.1 (13 juillet 2021)

Stabilité et corrections de bugs

  • Correction d'un IllegalStateException associé à une vérification des conditions préalables trop restrictive dans le code d'implémentation.
  • Corrige une NullPointerException dans NavigationView.onDestroy().

Version 1.21 (23 juin 2021)

Modifications apportées à l'API

  • Les écouteurs d'accélération sont désormais compatibles avec la navigation headless. Cela permet de surveiller l'excès de vitesse sans afficher au préalable une View ou une Fragment à partir du SDK Navigation.

Stabilité et corrections de bugs

  • Amélioration de la robustesse du chargement des tuiles de carte en mode Nuit lors de la première installation d'applications.

Abandons

Les méthodes suivantes ont été abandonnées au profit de Navigator.setSpeedAlertOptions():

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

Version 1.20.1 (14 juillet 2021)

Stabilité et corrections de bugs

  • Correction d'un IllegalStateException associé à une vérification des conditions préalables trop restrictive dans le code d'implémentation.
  • Corrige une NullPointerException dans NavigationView.onDestroy().

Version 1.20 (9 mars 2021)

  • Ajout d'une dépendance obligatoire. Ajoutez les dépendances suivantes à vos listes de dépendances Gradle pour éviter les plantages au moment de l'exécution : api 'joda-time:joda-time:2.9.9'.

Stabilité et corrections de bugs

  • Les utilisateurs du SDK Navigation utilisant Joda-Time rencontraient des conflits avec la version obscurcie de jodatime empaquetée dans notre bibliothèque. Ce problème a été résolu.
  • Correction d'un problème qui provoquait le masquage accidentel des notifications d'applications grand public dont il n'est pas propriétaire lors du lancement d'une session de navigation par le SDK Navigation.

Version 1.19 (15 décembre 2020)

Modifications apportées à l'API

  • Le DriverSDK envoie désormais toujours les données de trafic à FleetEngine. Auparavant, ce comportement était déterminé par l'option UpdateVehicleResponse, qui est désormais ignorée.

  • Le constructeur FleetEngine a été modifié. Des wrappers ont été ajoutés pour AuthTokenFactory et StatusListener.

  • Ajout de deux nouvelles méthodes à l'API Navigator pour permettre la définition et la suppression d'écouteurs pour de nouvelles sessions de navigation.

  • Ajout d'une nouvelle méthode à l'API Navigator pour obtenir les ID de transaction de la session de navigation en cours. Cette API doit être utilisée lorsqu'une nouvelle session de navigation démarre et lorsque les ID de transaction changent dans une session de navigation en cours (par exemple, lorsque la liste des segments de parcours est mise à jour).

Version 1.18 (9 octobre 2020)

  • Ajout de la méthode setAbnormalTerminationReportingEnabled(boolean). Cette méthode permet aux utilisateurs de désactiver la surveillance de la détection des plantages.

  • Correction d'un bug qui empêchait d'annuler l'enregistrement de LocationListeners de l'événement onLocationChange.

  • Correction d'un plantage gRPC qui empêchait io.grpc.util.SecretRoundRobinLoadBalancerProvider$Provider d'être instancié.

Version 1.17 (27 août 2020)

  • Vous pouvez maintenant transmettre un jeton de route à NavSDK pour récupérer l'itinéraire représenté par ce jeton. Le jeton de route est associé à une réponse de routage lorsque vous appelez l'API Routes Preferred. La nouvelle API est Navigator#setDestination(List<Waypoint> destinations, String routeToken).

  • Ajout de nouvelles dépendances obligatoires. Ajoutez les dépendances suivantes à vos listes de dépendances Gradle pour éviter les plantages au moment de l'exécution:

    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'

Version 1.16 (10 août 2020)

Nouvelles fonctionnalités

  • Ajout de l'API Waypoint.Builder.setVehicleStopover, qui active/désactive le déplacement automatique des arrêts sur l'itinéraire lorsque des points de cheminement sont définis dans un endroit où il n'est pas possible de s'arrêter.

  • Ajout d'un paramètre SpeedAlertSeverity au rappel SpeedAlert. Utilisez ce paramètre avec SpeedingListener.

Stabilité et corrections de bugs

  • Abandon de la méthode NavigationApi.cleanUp en raison d'effets secondaires indésirables tels que NullPointerExceptions entraînant des plantages.

  • Abandon de Waypoint.fromLatLng() et Waypoint.fromPlaceId() au profit de Waypoint.builder().

  • Abandon de la classe AddressListener, contenue dans NavigationTransactionRecorder, car elle n'est plus utilisée.

Version 1.15 (23 mars 2020)

Nouvelles fonctionnalités

  • Polices, couleurs et icônes personnalisables pour l'en-tête Navigation

  • Prise en charge de la personnalisation de la couleur des voies recommandées dans l'interface utilisateur de l'en-tête de navigation.

  • Mise à jour de plusieurs API pour suivre le modèle d'ajout/de suppression permettant de définir des rappels/écouteurs Les méthodes set* précédentes ont été marquées comme obsolètes et seront supprimées dans une prochaine version. Les méthodes obsolètes répertoriées ici:

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

Stabilité et corrections de bugs

  • Augmentez la valeur minSdkVersion pour navsdk sur 19.

  • Correction d'un bug qui empêchait le respect des noms des points de cheminement de latitude/longitude en cas d'échec du geocoding inversé côté serveur.

Version 1.14 (2 février 2020)

Nouvelles fonctionnalités

  • (Bêta) L'opérateur peut influencer les options d'itinéraire suivies par le conducteur en définissant une distance cible pour l'itinéraire dans la requête d'itinéraire. Cette fonctionnalité est en version bêta. Si vous êtes intéressé, veuillez contacter votre ingénieur client pour en savoir plus.

  • Compilez le SDK mis à niveau vers l'API 29.

Stabilité et corrections de bugs

  • Correction d'un bug dans la boîte de dialogue des conditions d'utilisation qui empêchait l'invite "Accepter" d'être obligatoire pour les conducteurs.

  • Modification du comportement de gestion des exceptions dans les composants du NDK pour éviter un plantage.

Version 1.13 (8 novembre 2019)

Nouvelles fonctionnalités

  • Les conducteurs peuvent désormais recevoir des alertes de vitesse lorsqu'ils dépassent la limitation de vitesse. Vous pouvez personnaliser l'apparence des icônes d'alerte de vitesse. Comme indiqué dans les conditions d'utilisation de Google Maps Enterprise, Google ne fournit aucune garantie quant à la qualité des fonctionnalités, y compris la précision de la fonctionnalité Alerte de vitesse. Les alertes de vitesse ne sont fournies qu'à titre d'information.

  • Ajout d'une nouvelle option de routage (RoutingOptions) qui vous permet d'afficher d'autres itinéraires lors de l'aperçu de l'itinéraire.

  • Ajout d'une nouvelle perspective de la caméra qui affiche une vue plongeante de l'itinéraire, de sorte que le véhicule soit toujours orienté vers l'avant. Vous pouvez configurer cette perspective en appelant NavFragment.getCamera().followMyLocation(Camera.Perspective.TOP_DOWN_HEADING_UP).

  • Ajout d'une nouvelle API (resetFreeNav() dans RoadSnappedLocationProvider) que vous pouvez appeler pour réinitialiser le service de navigation sans frais chaque fois que vous cessez de recevoir des mises à jour de position sur un écouteur enregistré lorsque la navigation n'est pas active.

Stabilité et corrections de bugs

  • Modification du contenu de la boîte de dialogue sur les conditions d'utilisation.

Version 1.12 (7 octobre 2019)

Nouvelles fonctionnalités

  • Vous pouvez désormais masquer et afficher un ou tous les itinéraires bis pendant la navigation.

  • Vous pouvez désormais spécifier une stratégie de routage dans les requêtes (itinéraire le plus court/le plus rapide).

  • Ajout de la possibilité de personnaliser entièrement la boîte de dialogue des conditions d'utilisation (taille du texte, couleur, etc.).

Stabilité et corrections de bugs

  • Correction du problème de classe en double dans com.google.http-client.

  • Mise à jour de l'application de démonstration pour utiliser le nouveau SDK Places et Jetified l'application de démonstration

  • Amélioration de la fréquence d'images de la caméra dans l'aperçu du trajet.

Version 1.11 (28 juin 2019)

Amélioration des performances

  • La latence du réseau de setDestination a été améliorée.

Corrections de bugs

  • Correction d'une incohérence avec le rappel onArrival lors de la navigation de plusieurs points de cheminement.

  • Correction d'un problème qui entraînait parfois le déclenchement prématuré de l'arrivée pour des points de cheminement éloignés de la position actuelle.

  • java.lang.IllegalStateException

    • Un appel à NavigationView.onDestroy ne peut pas suivre un appel à NavigationView.onCreate.

Divers

  • Mises à jour de licences logicielles Open Source.

  • Suppression des appels concernant l'heure d'arrivée prévue de l'itinéraire, afin de supprimer les données redondantes et de simplifier l'UI.

Version 1.10.2 (11 avril 2019)

Stabilité et corrections de bugs

  • Correction d'un bug qui pouvait entraîner la génération d'une IllegalStateException lors de la transition du cycle de vie d'un fragment: onCreate() à onDestroy().

Version 1.10 (11 avril 2019)

Caractéristiques

  • En-tête de boîte de dialogue "Conditions d'utilisation personnalisables" : vous pouvez personnaliser le texte du titre de la boîte de dialogue des conditions d'utilisation à l'aide de showTermsAndConditionsDialog.

  • Repère de point de cheminement a supprimé les caractères alphanumériques des repères de point de cheminement.

Version 1.9 (11 février 2019)

Caractéristiques

  • En-tête secondaire : vous pouvez ajouter du contenu personnalisé sous l'en-tête de navigation à l'aide de la fonctionnalité de commandes personnalisées. Consultez la position de SECONDARY_HEADER pour la méthode setCustomControl.

  • Nouvelles dépendances : ajoutez des dépendances pour Cronet et Glide. Pour en savoir plus, consultez Mettre à jour le script de compilation Gradle dans la rubrique "Configuration du projet".

Problèmes connus

  • Si l'application de démonstration plante avec l'erreur java.lang.ClassNotFoundException: Didn't find class "com.example.navigationapidemo.SplashScreenActivity", vous devez mettre à jour la dépendance pour les outils de compilation Gradle vers la version 3.3.1 ou ultérieure. Dans le fichier build.gradle, vérifiez que buildscript correspond à l'exemple ci-dessous:
buildscript {
    repositories {
        mavenCentral()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.1'
    }
}

Version 1.8.1 (22 janvier 2019)

Stabilité et corrections de bugs

  • Correction des plantages du mode Taxi dans certains modes de l'appareil photo.
  • Diverses améliorations de la stabilité.

Version 1.8 (21 décembre 2018)

Caractéristiques

  • Mode Taxi (bêta): votre application peut utiliser les voies et les rues spécifiquement dédiées aux taxis pour fournir des itinéraires et leur heure d'arrivée prévue.

    Les zones géographiques suivantes sont actuellement prises en charge:

    • Brésil: Rio de Janeiro
    • Angleterre: Birmingham, Coventry, London Metro Area, Manchester
    • Israël: Tel-Aviv
    • Irlande: Dublin
    • Russie: Moscou
    • Écosse: Glasgow, Édimbourg
    • Espagne: Madrid, Barcelone

Stabilité et corrections de bugs

  • Correction des fuites de mémoire
  • Performances améliorées

Version 1.7.3 (18 septembre 2018)

Corrections de bugs

  • NavigationView peut désormais passer directement de onStart à onStop. Cela ne générera plus de IllegalStateException.

Version 1.7.2 (16 août 2018)

Caractéristiques

  • Vous pouvez désormais afficher une liste d'itinéraires pendant la navigation pour afficher les prochains virages d'un trajet. La liste de l'itinéraire est fournie via DirectionsListView.
  • Vous pouvez maintenant récupérer l'état du trafic à l'aide de la classe TimeAndDistance via la méthode getSeverity.
  • Les restrictions liées aux plaques d'immatriculation sont désormais acceptées.

Corrections de bugs

  • Les plantages occasionnels qui s'affichaient dans la boîte de dialogue des conditions d'utilisation (qui se manifestent sous forme de IllegalStateException) ont été corrigés.
  • Correction d'une exception NullPointerException avec un message du type "tentative to write to field ... on a null object reference" (tentative d'écriture dans le champ sur une référence d'objet nul).
  • Les identifiants de ressources dans R.txt (auparavant tous 0x1) ont désormais les valeurs correctes.

Version 1.6.2 (16 juillet 2018)

Corrections de bugs

  • Correction d'une exception NullPointerException dans AccessibilityStateUtils.getAccessibilityState().

Version 1.6.0 (10 mai 2018)

Corrections de bugs

  • Correction d'un bug qui entraînait des appels d'heure d'arrivée prévue incorrects sur les étapes de trajet et les itinéraires bis.
  • Correction d'une exception NullPointerException lorsque les valeurs de latitude et/ou de longitude d'un lieu étaient null.
  • Correction d'un bug qui empêchait le chargement de la carte si la boîte de dialogue des conditions d'utilisation était acceptée en mode hors connexion.
  • Introduction d'une solution de contournement pour un bug LocationManager d'OS Android 7.0, qui se traduisait par un NPE dans le SDK Navigation.

Version 1.5.0 (26 mars 2018)

Caractéristiques

  • Mode Nuit: vous pouvez désormais utiliser le thème du mode Nuit pour la navigation. Vous pouvez activer ou désactiver le mode Nuit de manière programmatique, ou laisser le SDK Navigation changer automatiquement le thème en fonction de l'heure.
  • Mode de transport à deux-roues (bêta) : vous pouvez désormais définir le mode de transport sur TWO-WHEELER pour obtenir des itinéraires en moto et en scooter. Cette fonctionnalité n'est actuellement disponible qu'en Inde et en Indonésie.
  • Limitations de vitesse:vous pouvez désormais afficher ou masquer l'icône de limitation de vitesse par programmation (elle n'apparaît que dans les endroits où des données fiables sur les limitations de vitesse sont disponibles).
  • Commandes personnalisées de superposition de carte:vous pouvez utiliser des commandes de superposition de carte personnalisées pour positionner les éléments d'interface utilisateur de manière dynamique pendant la navigation.
  • L'appel getNavigator() accepte désormais un contexte d'application afin qu'il puisse être appelé à partir d'un service.

Corrections de bugs

  • Plusieurs problèmes de mise en page du texte ont été résolus dans la boîte de dialogue "Conditions d'utilisation" afin d'améliorer l'affichage pour les langues s'écrivant de droite à gauche.

Version 1.3.4 (24 janvier 2018)

  • Correction d'un bug qui empêchait parfois clearDestinations d'effacer la route précédente

Version 1.3.3 (18 décembre 2017)

  • La classe CameraArbitrator est désormais thread-safe, car elle est utilisée à la fois dans l'interface utilisateur et dans les threads de rendu.
  • Ne générez pas d'exception NPE si les événements pour CompassButtonController arrivent après l'appel de onDestroy().
  • Ajout de vérifications de valeur nulle pour les méthodes publiques de NavigationApi. Le SDK génère les NPE au plus près du code du développeur.

Version 1.3.2 (30 novembre 2017)

  • Résolution du plantage qui survenait en cas d'erreurs réseau.

Version 1.3.1 (14 novembre 2017)

  • Correction des notifications de navigation détaillée sous Android 8.0 Oreo (niveau d'API 26) et versions ultérieures.
  • Correction d'un problème qui empêchait l'affichage d'un itinéraire si demandé avant la création d'un NavigationView ou d'un NavigationFragment.

Version 1.3 (7 novembre 2017)

  • Ajout d'une méthode onTrimMemory() à NavigationView. Cette méthode doit être appelée par l'activité associée.
  • Navigator.setDestinations() renvoie désormais un état LOCATION_UNKNOWN si une correction d'emplacement n'a pas pu être trouvée dans le délai imparti. Le délai avant expiration peut être défini à l'aide de RoutingOptions.locationTimeoutMs().
  • Les points d'ancrage pour les images de repères personnalisés peuvent désormais être définis à l'aide de MarkerOptions.anchor().
  • NavigationMap expose désormais un objet Projection qui peut être utilisé pour obtenir les limites de latitude/longitude visibles de la carte, en tenant compte de la marge intérieure.
  • Il est désormais possible de désactiver les notifications pop-up de navigation détaillée à l'aide de Navigator.setHeadsUpNotificationEnabled().
  • Le bouton de recentrage propose désormais un écouteur "on-clicked". Vous pouvez définir ce paramètre à l'aide de la méthode setOnRecenterButtonClickedListener() sur NavigationView, NavigationFragment et SupportNavigationFragment.

Version 1.2.6 (25 octobre 2017)

  • Correction d'une exception NullPointerException qui pouvait se produire si le service de navigation était automatiquement recréé par le système d'exploitation.
  • NavigationView ne génère plus d'exception si certaines méthodes de cycle de vie sont appelées dans un ordre incorrect, par exemple des appels consécutifs à onStart() ou onResume(). Au lieu de cela, un message d'avertissement est consigné.

Version 1.2.5 (19 octobre 2017)

  • Ajout d'une meilleure gestion du cache de cartes pour contrôler l'utilisation de la mémoire.
  • Correction d'un plantage qui pouvait se produire si Navigator.setDestinations() était appelé avant la création d'un NavigationView ou d'un NavigationFragment.

Version 1.2.4 (11 octobre 2017)

  • Correction d'une fuite de mémoire qui pouvait se produire lors de la création de plusieurs NavigationViews sans présence d'un Navigator.

Version 1.2.3 (4 octobre 2017)

  • Correction d'un bug de cycle de vie qui provoquait parfois la disparition du repère "my-location"
  • Correction d'une autre situation où les événements de prise en charge et de dépose pouvaient être perdus.

Version 1.2.2 (27 septembre 2017)

  • Amélioration de la latence pour accélérer l'initialisation de l'API et les appels à Navigator.setDestinations.

Version 1.2.1 (20 septembre 2017)

  • Ajout de android:largeHeap="true" au fichier manifeste de la bibliothèque. Cela réduit la fréquence des erreurs OutOfMemoryErrors et est nécessaire pour une expérience de navigation fiable.
  • Amélioration de la fiabilité de l'enregistrement des événements de montée et de descente.

Version 1.2 (1er septembre 2017)

  • Lorsque l'orientation de l'appareil n'est pas connue, la carte s'affiche désormais en mode d'aperçu orienté nord en haut et affiche un repère circulaire "Ma position". Cette approche est particulièrement utile au début du parcours, car elle aide les utilisateurs à s'orienter en indiquant que l'appareil n'a pas encore une idée assez précise de la direction à prendre.
  • La carte des incidents de circulation a fait peau neuve et apparaît en bas de la carte au lieu de sa position précédente en haut.
  • Mise à jour de l'écoute de la position pour s'assurer qu'elle fonctionne comme prévu dans Android 8.0 Oreo (niveau d'API 26).
  • Correction d'un bug qui provoquait l'affichage différent des repères de destination en mode de navigation et hors navigation.

Version 1.1.2 (16 septembre 2017)

  • Amélioration de la fiabilité de l'enregistrement des événements de montée et de descente.

Version 1.1.1 (24 août 2017)

  • Correction d'une exception IllegalStateException qui se produisait parfois lors du réacheminement sans connexion réseau.
  • Correction d'un bug qui provoquait un changement de style de carte avant et après l'appel de Navigator.setDestinations()

Version 1.1 (31 juillet 2017)

  • Correction d'un bug qui empêchait parfois RoadSnappedLocationListener de fonctionner lorsque l'application était envoyée en arrière-plan.
  • Correction d'un bug lié à l'appareil photo lors du démarrage ou de l'arrêt du guidage.
  • Correction d'un bug dans Simulator.unsetUserLocation() qui empêchait la réinitialisation correcte de l'emplacement.

Version 1.0 (5 juillet 2017)

  • Lancement du SDK Navigation