版本说明

此更新日志详细介绍了 Navigation SDK for Android 的每个版本中的新功能和 bug 修复。

2021 年 10 月 18 日 - 冻结对 API 级别 23、24 和 25 的支持

为了应对内部依赖项的变化,从 2022 年第三季度开始,新版 Navigation SDK for Android 和驱动程序 SDK 将不再支持 Android API 级别 23、24 和 25(Android 6、7.0 和 7.1)。

从 2022 年第三季度开始发布的 Android 导航和驱动程序 SDK 将仅支持搭载 Android API 级别 26 或以上版本的设备。

使用 v4.x 或更低版本的 Android 版导航和驱动程序 SDK 构建的应用版本可继续在搭载 Android API 级别 25 及更低版本的设备上运行。

弃用公告(2021 年 6 月 21 日)

本公告介绍了自上述日期起弃用 Navigation SDK for Android 和 Driver SDK for Android。同时,我们还以重要服务通告 (MSA) 的形式向受影响的客户发送了此通告。

弃用 Navigation SDK for Android 和 Driver SDK for Android v1.x

Nav/Driver SDK v1 发布于 2018 年,v3 版本也即将发布,现在是时候弃用 v1 了,以免无法持续支持许多主要版本。

由于不必支持此附加版本而节省了时间,让我们能够更好地支持最新的主要版本,并构建更多对客户至关重要的功能。

因此,Nav/Driver SDK v1.x 现已废弃,2022 年 6 月 21 日之后将不再维护。

请花点时间了解 SDK 版本弃用的运作方式

如需了解更多 Android 弃用信息,请参阅 Navigation SDK for Android v2/v3 版本说明

版本 1.51.1(2022 年 4 月 1 日)

稳定性和 bug 修复

  • 修复“服务条款”对话框中损坏的超链接。

  • 当 Android Activity 被销毁时,一些客户端会收到“服务条款”对话框错误。现在,当 activity 被销毁时,客户端不会再遇到此对话框错误。

版本 1.51(2022 年 1 月 18 日)

API 变更

  • 将 Navigation SDK 的最低 Android API 级别提高到 23,并将目标 API 级别提高到 30。此目标版本符合 Google Play 要求

  • 将追踪 V 形导航路段的多段线显示为“灰色”,以表示用户已驾车经过路线的该路段。

版本 1.50(2021 年 11 月 3 日)

  • 版本 1.22 的 Jetified 变体。除了使用 AndroidX 库之外,未进行任何更改。

版本 1.22(2021 年 10 月 7 日)

稳定性和 bug 修复

  • 修复了在调用 stopNavigation 后相机停止跟踪用户位置的相机 bug。
  • 修复了进入应用背景后会显示“重新居中”按钮的相机 bug。
  • 修复了潜在的内存泄漏问题。
  • 修复了导致 ANR 问题的 bug。
  • 防止由“服务条款”对话框引起的崩溃。

弃用

  • 废弃了带有路线令牌的 #setDestinations,取而代之的是使用 CustomRoutesOptions 的新 API。

新功能

  • 添加了辅助取货功能,从而在导航页脚界面中添加新图标。
  • 添加了对自定义路线的双轮机动车支持。

版本 1.21.1(2021 年 7 月 13 日)

稳定性和 bug 修复

  • 修复了与实现代码中的前提条件过于严格的检查有关的 IllegalStateException 问题。
  • 修复了 NavigationView.onDestroy() 中的 NullPointerException

版本 1.21(2021 年 6 月 23 日)

API 变更

  • 无头导航现在支持加速监听器。这样,您无需先从 Navigation SDK 呈现 ViewFragment 即可监控速度。

稳定性和 bug 修复

  • 改进了首次安装应用时地图图块在夜间模式下加载的稳健性。

弃用

废弃了以下方法,取而代之的是 Navigator.setSpeedAlertOptions()

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

版本 1.20.1(2021 年 7 月 14 日)

稳定性和 bug 修复

  • 修复了与实现代码中的前提条件过于严格的检查有关的 IllegalStateException 问题。
  • 修复了 NavigationView.onDestroy() 中的 NullPointerException

版本 1.20(2021 年 3 月 9 日)

  • 添加了新的必需依赖项。请将以下依赖项添加到您的 Gradle 依赖项列表中,以避免运行时崩溃:api 'joda-time:joda-time:2.9.9'

稳定性和 bug 修复

  • 修复了使用 Joda-Time 的 Navigation SDK 使用方与打包到库中的 jodatime 混淆版本发生冲突的问题。
  • 修复了启动导航会话时 Navigation SDK 意外隐藏了它不拥有的消费者应用通知的问题。

版本 1.19(2020 年 12 月 15 日)

API 变更

  • DriverSDK 现在会始终向 FleetEngine 发送流量数据。以前,此行为由 UpdateVehicleResponse 标志决定;现在,该标志会被忽略。

  • FleetEngine 构造函数已更改;为 AuthTokenFactoryStatusListener 添加了封装容器。

  • 向 Navigator API 添加了两个新方法,以允许设置和移除新导航会话的监听器。

  • 向 Navigator API 添加了一个新方法,用于获取正在进行的导航会话的事务 ID。当新的导航会话开始,以及正在进行的导航会话中交易 ID 发生更改时(例如,当旅程片段列表更新时),应使用此 API。

版本 1.18(2020 年 10 月 9 日)

  • 添加了 setAbnormalTerminationReportingEnabled(boolean) 方法。此方法可让用户停用崩溃检测监控功能。

  • 修复了无法从 onLocationChange 事件取消注册 LocationListeners 的 bug。

  • 修复了无法实例化 io.grpc.util.SecretRoundRobinLoadBalancerProvider$Provider 的 gRPC 崩溃问题。

版本 1.17(2020 年 8 月 27 日)

  • 您现在可以将路线令牌传递给 NavSDK,以检索由该路线令牌表示的路线。当您调用 Routes Preferred API 时,路由令牌会与路线响应相关联。新 API 为 Navigator#setDestination(List<Waypoint> destinations, String routeToken)

  • 添加了一些新的必需依赖项。请将以下依赖项添加到您的 Gradle 依赖项列表中,以避免运行时崩溃:

    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'

版本 1.16(2020 年 8 月 10 日)

新功能

稳定性和 bug 修复

  • 废弃了 NavigationApi.cleanUp 方法,因为存在导致崩溃的 NullPointerExceptions 等不良副作用。

  • 废弃了 Waypoint.fromLatLng()Waypoint.fromPlaceId(),取而代之的是 Waypoint.builder()

  • 废弃了 NavigationTransactionRecorder 中包含的 AddressListener 类,因为它未使用。

版本 1.15(2020 年 3 月 23 日)

新功能

  • 导航标题的可自定义的字体/颜色/图标。

  • 支持在导航标题界面中自定义推荐车道的颜色。

  • 更新了多个 API,以遵循用于设置回调/监听器的移除模式。之前的 set* 方法已标记为已废弃,并将在未来的版本中移除。下面列出了已废弃的方法:

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

稳定性和 bug 修复

  • 将 navsdk 的 minSdkVersion 提高到 19。

  • 修复了在服务器端反向地理编码失败的情况下不遵循纬度/经度航点名称的 bug。

版本 1.14(2020 年 2 月 2 日)

新功能

  • (Beta 版)运营商可以在路线请求中设置路线的目标距离,从而影响驾驶员遵循的路线选项。此功能目前为 Beta 版,如果您有兴趣,请与您的客户工程代表联系以了解详情。

  • 编译 SDK(最高版本为 API 29)。

稳定性和 bug 修复

  • 修复了服务条款对话框中的 bug,该 bug 导致驾驶员必须强制看到“接受”提示。

  • 修改了 NDK 组件中的异常处理行为,以避免崩溃情况。

版本 1.13(2019 年 11 月 8 日)

新功能

  • 现在,当驾驶员超过速度限制时,就能收到限速提醒。您可以自定义速度提醒图标的外观。如 Google Maps Enterprise 服务条款中所述,Google 对任何功能的质量(包括速度提醒功能的准确性)不作任何保证。速度提醒仅供参考。

  • 添加了新的路线选项 (RoutingOptions),允许您在路线预览期间显示备选路线。

  • 添加了新的相机视角,该视角会显示路线的俯视图,其中路线朝向,以便车辆始终面向前方。您可以通过调用 NavFragment.getCamera().followMyLocation(Camera.Perspective.TOP_DOWN_HEADING_UP) 来配置此透视图。

  • 添加了一个新 API(RoadSnappedLocationProvider 中的 resetFreeNav()),每当您停止在已注册的监听器上接收位置信息更新时(导航处于非活动状态时),您都可以调用该 API 来重置免费导航服务。

稳定性和 bug 修复

  • 更新了《服务条款》对话的内容。

版本 1.12(2019 年 10 月 7 日)

新功能

  • 现在,您可以在导航期间隐藏和显示一条或所有备选路线。

  • 您现在可以在请求中指定路由策略(较短/最快的路由)。

  • 添加了完全自定义“条款及条件”对话框(文字大小、颜色等)的功能。

稳定性和 bug 修复

  • 修复了 com.google.http-client 中存在重复类的问题。

  • 更新了演示版应用以使用新的 Places SDK,并 Jetified 演示版应用。

  • 改进了行程概览中的相机帧速率。

版本 1.11(2019 年 6 月 28 日)

性能提升

  • 改善了 setDestination 的网络延迟。

bug 修复

  • 修复了在多个航点导航时与 onArrival 回调不一致的问题。

  • 修复了以下问题:对于不在当前位置附近的航点,可能会过早触发到达。

  • java.lang.IllegalStateException

    • NavigationView.onDestroy 的调用无法跟随对 NavigationView.onCreate 的调用。

其他

  • 开源软件许可更新。

  • 移除了路线上的路线预计到达时间宣传信息,以便移除冗余数据并简化界面。

版本 1.10.2(2019 年 4 月 11 日)

稳定性和 bug 修复

  • 修复了可能导致在 fragment 生命周期转换 onCreate() 到 onDestroy() 期间抛出 IllegalStateException 的 bug。

版本 1.10(2019 年 4 月 11 日)

功能

  • 可自定义的“条款及条件”对话框标题:您可以使用 showTermsAndConditionsDialog 自定义“条款及条件”对话框的标题文本。

  • 航点标记:从航点标记中移除了字母数字字符。

版本 1.9(2019 年 2 月 11 日)

功能

  • 辅助标题:您可以使用自定义控件功能在导航标题下方添加自定义内容。请参阅 setCustomControl 方法的 SECONDARY_HEADER 位置。

  • 新的依赖项为 Cronet 和 Glide 添加依赖项。如需了解详情,请参阅“项目配置”主题中的更新 Gradle build 脚本

已知问题

  • 如果演示版应用崩溃并显示 java.lang.ClassNotFoundException: Didn’t find class "com.example.navigationapidemo.SplashScreenActivity",您需要将 Gradle 构建工具的依赖项更新为 3.3.1 或更高版本。在 build.gradle 文件中,验证 buildscript 是否与以下示例匹配:
buildscript {
    repositories {
        mavenCentral()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.1'
    }
}

版本 1.8.1(2019 年 1 月 22 日)

稳定性和 bug 修复

  • 修复了某些相机模式下出租车模式崩溃的问题。
  • 各种稳定性改进。

版本 1.8(2018 年 12 月 21 日)

功能

  • 出租车模式 - Beta 版:您的应用可以使用专用于出租车的车道和街道,为被标识为出租车的车辆提供路线和预计到达时间 (ETA)。

    目前支持以下地理区域:

    • 巴西:里约热内卢
    • 英格兰:伯明翰、考文垂、伦敦都市圈、曼彻斯特
    • 以色列:特拉维夫
    • 爱尔兰:都柏林
    • 俄罗斯:莫斯科
    • 苏格兰:格拉斯哥、爱丁堡
    • 西班牙:马德里、巴塞罗那

稳定性和 bug 修复

  • 修复了内存泄漏的问题
  • 性能改进

版本 1.7.3(2018 年 9 月 18 日)

bug 修复

  • NavigationView 现在可以从 onStart 直接转换为 onStop,从而不会再生成 IllegalStateException

版本 1.7.2(2018 年 8 月 16 日)

功能

  • 您现在可以在导航期间显示路线列表,以显示行程即将转弯的转弯口。路线列表通过 DirectionsListView 提供。
  • 现在,您可以通过 getSeverity 方法使用 TimeAndDistance 类来检索流量状态。
  • 现在支持车牌限制。

bug 修复

  • 修复了《服务条款》对话框中(显示为 IllegalStateException)偶尔崩溃的问题。
  • 修复了显示消息“attempt to write to field ... on a null 对象引用”的 NullPointerException。
  • R.txt 中的资源标识符(以前都是 0x1)现在具有正确的值。

版本 1.6.2(2018 年 7 月 16 日)

bug 修复

  • 修复了 AccessibilityStateUtils.getAccessibilityState() 中的 NullPointerException。

版本 1.6.0(2018 年 5 月 10 日)

bug 修复

  • 修复了导致旅程路段和备选路线上预计到达时间宣传信息不正确的 bug。
  • 修复了当位置的纬度和/或经度值为 null 时的 NullPointerException。
  • 修复了以下 bug:如果在离线状态下接受服务条款对话框,就无法加载地图。
  • 针对会导致 Navigation SDK 中出现 NPE 的 Android OS 7.0 LocationManager bug 引入了解决方法。

版本 1.5.0(2018 年 3 月 26 日)

功能

  • 夜间模式:您现在可以将导航设为使用夜间模式主题。您可以通过编程方式启用或停用夜间模式,也可以让 Navigation SDK 根据时段自动切换主题。
  • 双轮机动车出行方式(Beta 版):您现在可以将出行方式设置为 TWO-WHEELER 以获取摩托车和踏板车路线。此功能目前仅在印度和印度尼西亚提供。
  • 速度限制:您现在可以以编程方式显示或隐藏速度限制图标(该图标仅在有可靠速度限制数据的位置显示)。
  • 自定义地图叠加层控件:您可以使用自定义地图叠加层控件在导航时动态定位界面元素。
  • getNavigator() 调用现在会接受应用上下文,以便从服务进行调用。

bug 修复

  • 我们解决了服务条款对话框中的一些文本布局问题,以改善从右到左语言的显示效果。

版本 1.3.4(2018 年 1 月 24 日)

  • 修复了导致 clearDestinations 有时无法清除上一个路由的 bug

版本 1.3.3(2017 年 12 月 18 日)

  • 使 CameraArbitrator 类同时用于界面和渲染线程,因此具有线程安全性;
  • 如果 CompassButtonController 的事件在调用 onDestroy() 后到达,则不抛出 NPE;
  • 为 NavigationApi 的公共方法添加了 null 检查。SDK 会抛出最接近开发者代码的 NPE。

版本 1.3.2(2017 年 11 月 30 日)

  • 修复了发生网络错误时发生崩溃的问题。

版本 1.3.1(2017 年 11 月 14 日)

  • 修复了 Android 8.0 Oreo(API 级别 26)及更高版本上的精细导航通知。
  • 修复了在创建 NavigationViewNavigationFragment 之前请求路线不可见的问题。

版本 1.3(2017 年 11 月 7 日)

  • NavigationView 添加了 onTrimMemory() 方法。此方法应由包含的 activity 调用。
  • 现在,如果在指定的超时时间内找不到位置修复程序,Navigator.setDestinations() 将返回 LOCATION_UNKNOWN 状态。您可以使用 RoutingOptions.locationTimeoutMs() 设置超时时间。
  • 现在可以使用 MarkerOptions.anchor() 设置自定义标记图像的定位点。
  • NavigationMap 现在公开了一个 Projection 对象,该对象可用于获取考虑了内边距的地图的可见纬度/经度边界。
  • 现在可以使用 Navigator.setHeadsUpNotificationEnabled() 停用弹出式精细导航通知。
  • 重新居中按钮现在提供点击监听器。这可以通过对 NavigationViewNavigationFragmentSupportNavigationFragment 使用 setOnRecenterButtonClickedListener() 方法进行设置。

版本 1.2.6(2017 年 10 月 25 日)

  • 修复了操作系统自动重新创建导航服务时可能发生的 NullPointerException。
  • 如果以错误顺序调用某些生命周期方法(例如连续调用 onStart()onResume()),NavigationView 不再抛出异常。系统会记录一则警告消息。

版本 1.2.5(2017 年 10 月 19 日)

  • 添加了更好的功能块缓存管理,以控制内存用量。
  • 修复了在创建 NavigationViewNavigationFragment 之前调用 Navigator.setDestinations() 时可能发生崩溃的问题。

版本 1.2.4(2017 年 10 月 11 日)

  • 修复了在没有导航器不存在的情况下创建多个 NavigationView 时可能发生的内存泄漏问题。

版本 1.2.3(2017 年 10 月 4 日)

  • 修复了有时会导致 my-location 标记消失的生命周期 bug。
  • 修复了上车和下车事件可能会丢失的另一个实例。

版本 1.2.2(2017 年 9 月 27 日)

  • 缩短了延迟时间,加快了 API 初始化和 Navigator.setDestinations 的调用速度。

版本 1.2.1(2017 年 9 月 20 日)

  • 向库清单添加了 android:largeHeap="true"。这样可以降低 OutOfMemoryError 的频率,并获得可靠的导航体验。
  • 提高了记录上车点和下车点事件的可靠性。

版本 1.2(2017 年 9 月 1 日)

  • 当设备方向未知时,地图现在会以正北朝上概览模式显示,并显示圆形“我的位置”标记。这在旅程开始时尤为有用,可通过传达设备信息,让自己清楚了解其朝向,从而帮助用户确定自己的方向。
  • 异常路况卡片采用全新设计,显示在地图底部,而不是之前的顶部位置。
  • 更新了位置信息监听功能,以确保其在 Android 8.0 Oreo(API 级别 26)中按预期运行。
  • 修复了在导航模式和非导航模式下目的地标记呈现方式不同的 bug。

版本 1.1.2(2017 年 9 月 16 日)

  • 提高了记录上车点和下车点事件的可靠性。

版本 1.1.1(2017 年 8 月 24 日)

  • 修复了在没有网络连接的情况下重新路由时有时会发生的 IllegalStateException 。
  • 修复了调用 Navigator.setDestinations() 前后地图样式设置不同的 bug。

版本 1.1(2017 年 7 月 31 日)

  • 修复了当应用被发送到后台时 RoadSnappedLocationListener 有时无法正常运行的 bug。
  • 修复了启动/停止导航时的相机 bug。
  • 修复了 Simulator.unsetUserLocation() 中位置未正确重置的 bug。

版本 1.0(2017 年 7 月 5 日)

  • 发布 Navigation SDK。