Notes de version

Ce journal des modifications détaille les nouvelles fonctionnalités et les 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 apportées à nos dépendances internes, les niveaux d'API Android 23, 24 et 25 (Android 6, 7.0 et 7.1) ne seront plus pris en charge dans les nouvelles versions des SDK Navigation et Driver pour Android à compter du troisième trimestre 2022.

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

Les versions de l'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 le 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 à compter de 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, et la version v3 devrait bientôt être publiée. Il est donc temps d'abandonner la version 1 pour éviter la durabilité de la prise en charge de nombreuses versions majeures.

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

Par conséquent, 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 un moment pour découvrir comment fonctionnent les 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 v2/v3.

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 boîte de dialogue "Conditions d'utilisation" lors de la destruction de l'activité Android. Désormais, les clients ne rencontreront 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

  • Fait passer le niveau d'API Android minimal pour le SDK Navigation à 23 et 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 dans la 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. Aucune modification n'a été apportée au-delà de l'utilisation des bibliothèques AndroidX.

Version 1.22 (7 octobre 2021)

Stabilité et corrections de bugs

  • Correction d'un bug de la caméra qui arrêtait de suivre la position de l'utilisateur après l'appel de stopNavigation.
  • Correction d'un bug de l'appareil photo qui provoquait l'affichage du bouton de recentrage après l'affichage en arrière-plan de l'application.
  • Corrige un éventuel problème de fuite de mémoire.
  • Corrige un bug qui provoquait des erreurs ANR.
  • Empêche un plantage dû à 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 retrait assisté qui ajoute une nouvelle icône à l'UI du pied de page de navigation.
  • Ajout de la prise en charge des itinéraires en deux-roues pour les itinéraires personnalisés.

Version 1.21.1 (13 juillet 2021)

Stabilité et corrections de bugs

  • Correction d'une IllegalStateException associée à une vérification des conditions préalables trop restrictives dans le code d'implémentation.
  • Correction d'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 pris en charge dans la navigation headless. Cela permet de surveiller l'excès de vitesse sans afficher au préalable un View ou un 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'une IllegalStateException associée à une vérification des conditions préalables trop restrictives dans le code d'implémentation.
  • Correction d'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 de l'environnement d'exécution : api 'joda-time:joda-time:2.9.9'.

Stabilité et corrections de bugs

  • Correction d'un problème qui entraînait des conflits entre les utilisateurs du SDK Navigation utilisant Joda-Time et la version obscurcie de jodatime qui était empaquetée dans notre bibliothèque.
  • Correction d'un problème dans lequel le SDK Navigation masquait accidentellement les notifications de l'application consommateur dont il n'est pas propriétaire lors du lancement d'une session de navigation.

Version 1.19 (15 décembre 2020)

Modifications apportées à l'API

  • Désormais, DriverSDK envoie toujours les données de trafic à FleetEngine. Auparavant, ce comportement était déterminé par l'indicateur UpdateVehicleResponse. Celui-ci est désormais ignoré.

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

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

  • Ajout d'une méthode à l'API Navigator pour obtenir les ID de transaction de la session de navigation en cours. Cette API doit être utilisée au démarrage d'une nouvelle session de navigation et lorsque les ID de transaction changent au cours d'une session de navigation en cours (par exemple, lorsque la liste des segments du 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 l'enregistrement de LocationListeners dans l'événement onLocationChange.

  • Correction d'un plantage de gRPC qui empêchait d'instancier io.grpc.util.SecretRoundRobinLoadBalancerProvider$Provider.

Version 1.17 (27 août 2020)

  • Vous pouvez maintenant transmettre un jeton de route à NavSDK pour récupérer la route représentée par ce jeton. Le jeton de route est associé à une réponse de route 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 de l'environnement d'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 pas utilisée.

Version 1.15 (23 mars 2020)

Nouvelles fonctionnalités

  • Polices/couleurs/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 schéma d'ajout et de suppression pour 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. 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 de minSdkVersion pour navsdk à la version 19.

  • Correction d'un bug qui empêchait les noms de point de cheminement lat/lng d'être respectés 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 l'option d'itinéraire suivie 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 représentant de l'ingénierie client pour en savoir plus.

  • Compilez le SDK jusqu'à 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" à devenir 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 limite 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 n'offre aucune garantie concernant la qualité des fonctionnalités, y compris l'exactitude des alertes de vitesse. Les alertes de vitesse sont fournies à titre indicatif uniquement.

  • Ajout d'une option de routage (RoutingOptions) qui vous permet d'afficher des routes secondaires lors de la prévisualisation de la route.

  • Ajout d'une nouvelle perspective de caméra qui montre une vue de haut en bas de l'itinéraire, avec l'itinéraire orienté 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 Free Nav 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 autres itinéraires pendant la navigation.

  • Vous pouvez désormais spécifier une stratégie de routage dans les requêtes (route la plus courte/la 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 d'un 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 mise à jour de 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 setDestination a été améliorée.

Corrections de bugs

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

  • Correction d'un problème où l'arrivée pouvait se déclencher prématurément pour des points de cheminement qui ne se trouvaient pas à proximité de votre 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 accroches indiquant l'heure d'arrivée prévue de l'itinéraire, afin de supprimer les données redondantes et de simplifier l'interface utilisateur.

Version 1.10.2 (11 avril 2019)

Stabilité et corrections de bugs

  • Correction d'un bug qui pouvait générer une exception IllegalStateException lors de la transition du cycle de vie d'un fragment: onCreate() vers onDestroy().

Version 1.10 (11 avril 2019)

Fonctionnalités

  • En-tête de la boîte de dialogue des 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 : suppression des caractères alphanumériques des repères de points de cheminement.

Version 1.9 (11 février 2019)

Fonctionnalités

  • En-tête secondaire : vous pouvez ajouter du contenu personnalisé sous l'en-tête de navigation à l'aide de la fonctionnalité des commandes personnalisées. Consultez la position SECONDARY_HEADER de 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 le sujet "Configuration du projet".

Problèmes connus

  • Si l'application de démonstration plante avec java.lang.ClassNotFoundException: Didn't find class "com.example.navigationapidemo.SplashScreenActivity", vous devez mettre à jour la dépendance des 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 caméra
  • Diverses améliorations de la stabilité.

Version 1.8 (21 décembre 2018)

Fonctionnalités

  • Mode taxi (bêta): votre application peut utiliser les voies et les rues spécifiquement réservées aux taxis afin de fournir des itinéraires et des heures d'arrivée prévues (ETA) pour les véhicules identifiés comme étant des taxis.

    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, ce qui ne générera plus de IllegalStateException.

Version 1.7.2 (16 août 2018)

Fonctionnalités

  • Vous pouvez désormais afficher une liste d'itinéraires pendant la navigation pour afficher les prochains changements de direction. La liste d'itinéraires 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 de circulation liées à l'immatriculation sont désormais acceptées.

Corrections de bugs

  • Les plantages occasionnels dans la boîte de dialogue des conditions d'utilisation (qui se manifestent sous la forme de IllegalStateException) ont été corrigés.
  • L'exception NullPointerException avec un message tel que "ttentt to write to field ..." (tentative d'écriture dans le champ ... sur une référence d'objet null) a été corrigée.
  • Les identifiants de ressources dans le fichier 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 sections du trajet et les itinéraires bis.
  • Correction d'une exception NullPointerException lorsque les valeurs de latitude et/ou de longitude d'un établissement étaient null.
  • Correction d'un bug qui empêchait le chargement de la carte si les boîtes de dialogue des conditions d'utilisation étaient acceptées en mode hors connexion.
  • Introduction d'une solution de contournement pour un bug LocationManager de l'OS Android 7.0 qui entraînait une exception NPE dans le SDK Navigation.

Version 1.5.0 (26 mars 2018)

Fonctionnalités

  • Mode Nuit: vous pouvez désormais configurer la navigation pour qu'elle utilise le thème du mode Nuit. Vous pouvez activer ou désactiver le mode Nuit de manière programmatique, ou laisser le SDK Navigation changer automatiquement de thème en fonction de l'heure.
  • Mode deux-roues (bêta) : vous pouvez désormais définir le mode de déplacement sur TWO-WHEELER pour obtenir des itinéraires en moto ou en scooter. Cette fonctionnalité n'est actuellement disponible qu'en Inde et en Indonésie.
  • Limites de vitesse:vous pouvez désormais afficher ou masquer l'icône de limitation de vitesse de manière programmatique (elle ne s'affiche que dans les endroits où des données fiables sur les limites de vitesse sont disponibles).
  • Commandes de superposition de carte personnalisées: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 dans la boîte de dialogue "Conditions d'utilisation" ont été résolus afin d'améliorer l'affichage pour les langues de droite à gauche.

Version 1.3.4 (24 janvier 2018)

  • Correction d'un bug qui empêchait parfois clearDestinations d'effacer l'itinéraire précédent

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'UI et dans les threads de rendu.
  • Ne pas générer d'exception NPE si les événements pour CompassButtonController se produisent 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 une exception NPE au plus près du code du développeur.

Version 1.3.2 (30 novembre 2017)

  • Résolution du plantage 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 de l'itinéraire s'il était demandé avant la création d'une 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é parent.
  • Navigator.setDestinations() renvoie désormais un état LOCATION_UNKNOWN si aucune correction d'emplacement n'a été trouvée dans le délai spécifié. 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.
  • Les notifications de navigation détaillée par pop-up peuvent désormais être désactivées à l'aide de Navigator.setHeadsUpNotificationEnabled().
  • Le bouton de recentrage propose désormais un écouteur lors d'un clic. Vous pouvez le définir à 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(). À la place, un message d'avertissement est consigné.

Version 1.2.5 (19 octobre 2017)

  • Amélioration de la gestion du cache des cartes pour un contrôle de l'utilisation de la mémoire
  • Correction d'un plantage qui pouvait se produire si Navigator.setDestinations() était appelé avant la création d'une 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 la présence d'un navigateur.

Version 1.2.3 (4 octobre 2017)

  • Correction d'un bug dans le 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éliorations 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 prise en charge et de dépose.

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 centré, avec le nord en haut, et affiche un repère "my-location" circulaire. Ceci est particulièrement utile au début du parcours, pour aider les utilisateurs à s'orienter en indiquant que l'appareil n'a pas encore une idée assez précise de son orientation.
  • La fiche d'incident de circulation a été repensée et s'affiche 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 en mode sans navigation.

Version 1.1.2 (16 septembre 2017)

  • Amélioration de la fiabilité de l'enregistrement des événements de prise en charge et de dépose.

Version 1.1.1 (24 août 2017)

  • Correction d'une 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 de 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 de la position.

Version 1.0 (5 juillet 2017)

  • Lancement du SDK Navigation