Consumer SDK for Android 版本说明

本部分包含适用于 Android 的 Consumer SDK 的版本说明。

2.99.0(2024 年 11 月 19 日)

问题修复

  • 修复了 ConsumerApi.cleanUp() 执行时间过长时发生的 ANR 错误。
  • 修复了以下问题:驱动程序收到代码为“INTERNAL”且消息为“Panic! 这是个 bug!”该功能将在该版本集成后逐步推出(从 0% 开始)。

2.3.0(2024 年 8 月 2 日)

API 变更

  • 添加了云端地图样式设置支持,让您可以为用户打造自定义路线图体验,而无需在每次更改地图样式时更新应用的代码。如需了解详情,请参阅使用云端地图样式设置地图样式

  • VehicleLocation 添加了 getServerTimeMillis() 方法,用于确定车队引擎收到位置信息更新的时间。

2.2.0(2024 年 5 月 7 日)

API 变更

  • 添加了针对 Jetpack Compose 集成的支持 API。这是一项实验性功能。如需详细了解如何与 Jetpack Compose 集成,请与您的代表联系。

2.1.0(2024 年 1 月 17 日)

问题修复

  • 修复了在应用生命周期内多次初始化 SDK 时发生的崩溃问题。

API 变更

  • 引入了用于检索 SDK 创建的 GoogleMap 实例的方法 (ConsumerGoogleMap.getGoogleMap())。
  • 引入了用于检索 SDK 创建的 Marker 实例以表示车辆 (ConsumerController.getConsumerMarker()) 的 API。
  • 引入了 API,用于在行程分享期间接收客户端预测的时间和距离更新 (ProjectedRouteEta)。

1.99.2(2023 年 11 月 3 日)

  • 修复了从与应用分离的远程进程初始化 SDK 时发生的崩溃问题。

  • 修复了执行相机动画时发生的崩溃问题,并为内边距提供了足够的垂直或水平空间。这种情况仅在最新的地图渲染程序中会发生。

  • 修复了以下 bug:当第二段行程经过同一道路时,会导致接连行程的第一段行程被剪裁。

问题

  • 如果在 API 实例已存在时调用 ConsumerApi.initialize(),则会抛出异常。如需解决此问题,请先调用 ConsumerApi.getInstance() 并评估返回的 Task,以确定 API 实例是否已存在。

2.0.0(2023 年 9 月 15 日)

公告:重大变更

  • 最低 API 级别要求已从 21 更新为 23。

  • 将 Maps SDK 版本要求从 v17.0.0 更新为 v18.1.0

  • 最低 Kotlin 标准库版本要求已从 v1.6.10 更新为 v1.9.0

  • 更新 Google Play 服务依赖项版本

    • 最低 play-services-base 库版本要求已从 v18.0.1 更新为 v18.2.0

    • 将 play-services-basement 库的最低版本要求从 v18.0.0 更新为 v18.2.0

    • 将 play-services-location 库的最低版本要求从 v17.0.0 更新为 v21.0.1

    • 将 play-services-tasks 库的最低版本要求从 v18.0.1 更新为 v18.0.2

  • 添加了 androidx.room:room-runtime 库,并将最低版本要求设为 v2.5.2

  • 更新以下依赖项版本

    • 最低 android-maps-utils 库版本要求已从 v0.4.2 更新为 v3.5.2

    • 最低 com.google.android.datatransport:transport-backend-cct 版本要求已从 v3.0.0 更新为 v3.1.9

    • 最低 com.google.android.datatransport:transport-runtime 版本要求已从 v3.0.1 更新为 v3.1.9

    • androidx.lifecycle:lifecycle-extensions 的最低版本要求已从 v2.0.0 更新为 v2.2.0

    • androidx.lifecycle:lifecycle-common-java8 的最低版本要求已从 v2.0.0 更新为 v2.6.1

    • androidx.appcompat:appcompat 的最低版本要求已从 v1.0.0 更新为 v1.6.1

    • androidx.fragment:fragment 的最低版本要求已从 v1.0.0 更新为 v1.6.1

  • 移除了以下之前已废弃的 API:ConsumerTripConsumerTripCallbackConsumerTripManagerConsumerTripOptions。它们已被 TripModelTripModelCallbackTripModelManagerTripModelOptions 取代。

  • 现在,使用 Consumer SDK 的应用必须具有 API 31 或更高级别的 targetSdkVersion,以及 API 33 或更高级别的 compileSdkVersion

  • 使用 Consumer SDK 的应用现在必须启用 Java 8 库支持。如需了解更新说明,请参阅 https://developer.android.com/studio/write/java8-support。

  • 使用 Proguard 或 Dexguard 的应用必须迁移到 R8。如需了解详情,请参阅 https://developer.android.com/build/shrink-code。

  • 使用 Consumer SDK 的应用必须启用脱糖功能。如需了解相关说明,请参阅 https://developer.android.com/studio/write/java8-support#library-desugaring。

  • 现在,如果在已创建 API 实例时调用 ConsumerApi.initialize() 方法,该方法会抛出异常。必须使用 ConsumerApi.getInstance() 返回的 Task 来确定是否有预先创建的 API 实例。

通知:API 弃用

  • 弃用了 Trip.TripStatusTrip.TripType 注解类,添加了 TripInfo.TripStatusTripInfo.TripType 注解类来替换它们。

    • 在进行这项更改的过程中,我们弃用了 TripModelCallback#onTripStatusUpdated(TripInfo tripInfo, @Trip.TripStatus int status),并添加了 TripModelCallback#onTripStatusUpdate(TripInfo tripInfo, @TripInfo.TripStatus int status) 来替代它。

    • 在进行这项更改的过程中,我们弃用了 TripInfo#getTripStatus(),并添加了 TripInfo#getCurrentTripStatus() 来替代它。

    • 在进行这项更改的过程中,我们弃用了 TripInfo#getTripType(),并添加了 TripInfo#getCurrentTripType() 来替代它。

  • 废弃了 Trip 类。

其他变更和 bug 修复

  • 支持请求最新的 Maps SDK 渲染程序。如需了解详情,请参阅新版地图渲染程序

  • 提供 Maps SDK 范围支持,涵盖 v18.1.0(包括)到 v19.0.0(不包括)版本。

  • 修复了 SDK 与 Google 后端之间的内部通信出现的“超出截止期限”错误。

  • 修复了小屏幕和画中画模式的渲染问题。

迁移指南

1.99.1(2023 年 8 月 31 日)

问题修复

  • 修复了销毁 SDK 宿主 activity 或 fragment 时发生的崩溃问题。

  • 修复了当 MapView 的尺寸为 0(高度或宽度)时发生的崩溃问题。

  • 修复了在路线多段线上投影车辆位置信息时发生的崩溃问题。

改进

  • 防止在旁加载主机应用且不存在默认视觉资源时 SDK 崩溃。

1.99.0(2023 年 6 月 22 日)

问题修复

  • 修复了小屏幕和画中画模式的渲染问题。

  • 修复了行程分享期间车辆闪烁的问题。

1.2.1(2023 年 6 月 7 日)

问题修复

  • 修复了导致行程分享期间车辆闪烁的 bug。

1.2.0(2022 年 11 月 21 日)

问题修复

  • 修复了导致 onTripActiveRouteTrafficUpdated 回调中报告空流量的 bug。

新功能

  • “感知交通状况的多段线”现已正式发布。

1.1.2(2022 年 10 月 27 日)

问题修复

  • 修复了以下 bug:如果为 TripModel 启动 JourneySharingSession 多次,路线多段线会消失。

公告:停止支持 Android 5(2022 年 7 月 25 日)

对于 v1.1.1 SDK 版本,我们将额外为在 Android 5(API 级别 21 和 22)上运行的应用提供一年的支持。

这意味着:

  • 在 2023 年 6 月 30 日之前,在 Android 应用中运行的消费者 SDK 将支持最低 Android 5(API 级别 21)。

  • 2023 年 6 月 30 日之后,我们将仅支持 Android API 级别 23 及更高版本。 换句话说,我们将在该日期之后停止支持所有 SDK 版本的 Android API 级别 21 和 22。这意味着,任何 SDK 版本(包括 4.x)中与 Android 21 或 22 相关的 bug 都不会得到修复,并且我们不保证这些 SDK 的行为会正确无误。

v1.1.1(2022 年 7 月 25 日)

依赖项变更

  • 将支持的最低 Android API 级别降级为 21。

v1.1.0(2022 年 4 月 28 日)

  • 内部改进。

v1.0.19(2022 年 3 月 17 日)

问题修复

  • 修复了 ConsumerApi 类中的内存泄漏问题。

v1.0.14(2021 年 11 月 30 日)

现在支持的最低 Android API 级别为 23。

API 变更

  • ConsumerTripConsumerTripManager 类所做的更改。

    • 清理了一些方法名称,使其含义更清晰,并与 iOS 平台保持一致。
  • ConsumerTripCallbackConsumerTripTripInfo 进行了更改。

    • 更改了一些类名称,使其与 iOS 保持一致。引入了 TripModelTirpModelManagerTripModelOptions,以废弃 ConsumerTripConsumerTripManagerConsumerTripOptions

    • 清理了一些方法名称。修改或添加了方法的 JavaDoc 注释,以便更清晰地传达含义。

    • 改进了错误处理。

样式自定义

  • 已废弃的旧版封装容器

    • MarkerStyleOptionsPolylineStyleOptions 已废弃,取而代之的是 MarkerOptionsPolylineOptions,这两个 API 都与 Maps SDK 共享。

崩溃监控

  • 添加了崩溃检测和日志记录。

    • 我们添加了一项功能,让您可以停用此功能。这是我们在全球范围内进行的更大规模崩溃监控计划的一部分。

身份验证更改

  • 从身份验证接口中移除了不必要的方法。
    • 移除了 ServiceType 参数。

v0.9.28(2021 年 5 月 18 日)

API 变更

  • 更新了所有 ConsumerTripCallback 方法,以使用 TripInfo 作为形参。
  • 添加了 ConsumerTrip.isRefreshing(),用于指示 ConsumerTrip 是否正在使用来自车队引擎的新行程信息主动更新自身。
  • 添加了 ConsumerTripCallback.onTripRemainingRouteDistanceUpdated()
  • 添加了 ConsumerTripCallback.onTripRemainingRouteUpdated()
  • 将 Guava 返回值类型 (ImmutableSetImmutableList) 替换为 java.util 等效类。
  • 软件包名称变更:

    • com.google.android.libraries.ridesharing.common.AuthTokenContext -> com.google.android.libraries.ridesharing.consumer.auth.AuthTokenContext
    • com.google.android.libraries.ridesharing.common.AuthTokenFactory -> com.google.android.libraries.ridesharing.consumer.auth.AuthTokenFactory
    • com.google.android.libraries.ridesharing.common.FleetEngineServiceType -> com.google.android.libraries.ridesharing.consumer.auth.FleetEngineServiceType - com.google.android.libraries.ridesharing.common.model.Trip

                                  ->
                                                                  com.google.android.libraries.ridesharing.consumer.model.Trip
      
                                  -   com.google.android.libraries.ridesharing.common.model.Vehicle
      
                                                          ->
                                      com.google.android.libraries.ridesharing.consumer.model.Vehicle
      

实现变更

  • 修复了以下竞态条件:SDK 可能会在地图准备就绪之前与地图交互而崩溃。
  • SDK 不再包含未混淆的 io.grpc 副本。
  • 修复了某些设备上交通多段线闪烁的 bug。流量细分现在将采用圆角。

v0.9.15(2020 年 10 月 7 日)

API 变更

  • 此版本引入了感知交通状况的多段线。 - 添加了 TripInfo.getActiveRouteTraffic()TripInfo.getRemainingRouteTraffic()
    • 添加了 ConsumerTripCallback.onTripActiveRouteTrafficUpdated()ConsumerTripCallback.onTripRemainingRouteTrafficUpdated(),用于指示流量何时发生变化。
    • 添加了用于流量自定义的 PolylineStyleOptionssetTrafficEnabled()setTrafficColorNoData()setTrafficColorNormal()setTrafficColorSlow()setTrafficColorTrafficJam())。
    • 公开了 PolylineStyleOptions.TRAFFIC_Z_INDEX_ADDITION
    • 添加了 TripWaypoint.getTrafficData()
    • 添加了 TrafficData 数据类型。
    • 添加了 ConsumerController.hideAllSessions()ConsumerController.showSession() 不再接受 null 作为参数。

v0.9.9(2020 年 7 月 15 日)

API 变更

  • 这是一项重大变更,引入了模块化架构,使仅限数据层(例如 ConsumerTripManager)与界面层(例如 JourneySharingSession)之间的关系更加清晰。如需了解如何迁移到新架构,请参阅模块化迁移指南。 - ConsumerTrip 对象现在从 ConsumerTripManager.getTrip() 获取。
    • ConsumerTrip.unregisterCallback 已重命名为 ConsumerTrip.unregisterTripCallback
    • ConsumerTrip.isCallbackRegistered 已重命名为 ConsumerTrip.isTripCallbackRegistered
    • 添加了 ConsumerTrip.setConsumerTripOptions()ConsumerTrip.getConsumerTripOptions()
    • 移除了 ConsumerTrip.setAutoRefreshInterval()
  • 移除了非行程分享 API。
    • 移除了车辆密度地图。
    • 移除了行程预览状态。
    • 移除了自提选项状态。
    • 移除了下车点选择状态。
    • 移除了以下标记类型:SELECTED_PICKUP_POINTSUGGESTED_PICKUP_POINTHIGHLIGHTED_PICKUP_POINTSELECTED_DROPOFF_POINT
  • OnConsumerMarkerClickCallbackConsumerMapReadyCallback 从接口更改为抽象类。
  • 添加了 ConsumerController.getCameraUpdate()ConsumerController.isAutoCameraEnabled()ConsumerController.enableAutoCamera()
  • 移除了自定义 FAB 及其关联的方法 (ConsumerController.isMyLocationFabEnabledConsumerController.setMyLocationFabEnabled)。

实现变更

  • 无论是否使用 LifecycleOwner 注册,ConsumerTripCallback 都不会再自动在 TripStatus.COMPLETETripStatus.CANCELED 上取消注册。
  • AutoCamera 现在默认处于启用状态,并且不会自行重新启用或停用。 以前,AutoCamera 会在 TripStatus.ARRIVED_AT_PICKUP 上自动重新启用,并在用户在行程分享期间与地图互动时自行停用。
  • 对行程分享车辆动画进行了以下改进:
    • 行程分享动画现在可以处理车辆可能合法地沿已行驶路线返回的情况。
    • 现在,当算法确定合适时,车辆将以直线动画效果显示,而不是在点之间插值路线。
  • 不再需要 FINE_LOCATION 权限。

其他变更

  • 更新了以下依赖项版本:
    • com.google.android.datatransport:transport-api:2.2.0
    • com.google.android.datatransport:transport-backend-cct:2.2.0
    • com.google.android.datatransport:transport-runtime:2.2.0

v0.9.1(2020 年 3 月 23 日)

API 变更

  • 添加了 TripInfo.getVehicleId()TripInfo.getNumberOfPassengers()TripInfo.getIntermediateDestinationIndex()TripInfo.getTripActiveRoute()TripInfo.getTripRemainingRoute()
  • 添加了在 ConsumerApi 初始化期间使用的 options 类,以便动态设置 FleetEngine 地址。如果未使用 FleetEngine 值调用该 API,它会尝试从 Android 清单中提取该值,否则会回退到默认值。

改进

  • 当行程状态为 ARRIVED_AT_PICKUP 时,系统不会显示路线多段线。
  • 改进了超出路线的车辆跟踪功能(需要 DriverSDK 1.15):
    • 当车辆驶过上车点时,车辆跟踪功能不会将车辆贴靠到相应路线。
    • 借助车辆跟踪功能,您可以显示车辆在道路以外的位置(例如未绘制的停车场)的位置。
  • 现在,当驾驶员的目的地与车队引擎中的目的地不匹配时,车辆图标会更新。

v0.8.6(2019 年 12 月 16 日)

API 变更

  • 添加了 TripInfo.getVehicleLocation()

  • ConsumerMapView 不再是最终版本。

实现变更

  • 现在,系统使用服务器距离(驾驶员报告的距离 + 适用的静态路线)而非本地贴靠来计算有效路段的剩余距离。此更改可生成更准确的剩余距离值。

其他变更

  • 需要添加新的依赖项。如需了解详情,请参阅 .pom 文件。

    • com.google.android.datatransport:transport-api:2.0.0
    • com.google.android.datatransport:transport-backend-cct:2.0.2
    • com.google.android.datatransport:transport-runtime:2.0.0
  • 添加了行程请求延迟时间的日志。

  • 添加了行程响应错误的日志。

备注

  • 从 0.8.1 版开始,Consumer SDK for Android 以 Jetified ZIP 归档文件的形式提供。如需了解如何取消 Jetify,请参阅 Jetifier:反向模式

v0.8.1(2019 年 9 月 13 日)

新功能

API 变更

  • 添加了 ConsumerController.disableAutoCamera() 作为 centerMapForState() 的反函数。

  • VehicleLocation.getUpdateTime() 现在会返回一个 Long 值,表示时间戳(以毫秒为单位)。

  • 简化了 AuthTokenFactory 接口,以公开用于生成令牌的单一方法。将 AuthTokenFactory 从接口更改为抽象类,以在 Java7 中实现向后兼容性。此更改向后兼容,但用于生成单个服务令牌的旧方法已废弃,最终会被移除。

实现变更

  • 资源现在居中于图标中心,从而消除了阴影偏移。

  • setState 更改为 JOURNEY_SHARING onStartTripMonitoring(),而不是等待所监控行程的状态。

  • 始终返回首次更新的行程数据的数据,即使行程数据未同步也是如此。

  • 将 Android Map Utils 添加为提供的依赖项。

问题修复

  • 修复了 grpc keep 的 ProGuard 导出语法错误。

v0.7.0(2019 年 8 月 7 日)

新功能

  • 对行程共享功能的多目的地支持。

API 变更

  • 新增了 ConsumerTripCallback 方法。

    • onTripIntermediateDestinationsUpdated()
    • onTripETAToNextTripWaypointUpdated()
  • 新增了 ConsumerController 方法。

    • getIntermediateDestinations()
    • setIntermediateDestinations(List<TerminalLocation> intermediateDestinations)
  • 新增了 TripStatuses

    • TripStatus.ENROUTE_TO_INTERMEDIATE_DESTINATION
    • TripStatus.ARRIVED_AT_INTERMEDIATE_DESTINATION
  • 新增了 TripWaypoint Getter。

    • getETAMillis()
    • getDistanceMeters()
  • 添加了 TripInfo 类。

    • 您可以使用 ConsumerTripManager.getActiveTripInfo() 获取有效行程的 TripInfo
  • 添加了 WaypointType.INTERMEDIATE_DESTINATION

  • 添加了 MarkerType.TRIP_INTERMEDIATE_DESTINATION

  • 从合并的 ConsumerMapStates ENROUTE_TO_PICKUPARRIVED_AT_PICKUPENROUTE_TO_DROPOFFCOMPLETE 创建了 ConsumerMapState.JOURNEY_SHARING

    • StateChangeCallbacks”已更新。

    • 添加了 onStateJourneySharing()

    • 移除了 onStateWaitingForPickup()onStateDriverArrived()onStateEnroute()onStateEndofTrip()

问题修复

  • 修复了以下 bug:当行程监控在有效行程的中间(而不是行程开头)开始时,路线不会修剪到车辆位置。

  • 修复了以下 bug:在 TripManager 已提取行程数据后,系统不会为在 TripManager 上注册的监听器调用行程回调。

  • 相机缩放功能现在仅包含当前路线和下一个行程航点(属于行程的航点)。即使剩余路段可见,缩放后也绝不会包含该路段。以前,当车辆在前往上车点途中或已到达上车点时,下车点会包含在缩放范围内。现在,情况不再如此。

改进

  • 使用 Driver 数据填充第 0 个剩余航点(剩余航点列表由 ConsumerTripCallback.onTripRemainingWaypointsUpdatedTripInfo.getRemainingWaypoints() 返回)。

  • 当列表中第一个航点的预计到达时间发生变化时,更新所有其余航点的预计到达时间。

  • 仅在司机到达上车点时强制重新启用自动摄像头。以前,每当行程状态发生变化时,autocamera 都会重置为启用。自动相机功能默认仍处于启用状态。如果未调用新的 startTripMonitoring() 调用,则设置新的有效行程后,Autocamera 不会重新启用。

v0.6.1(2019 年 6 月 26 日)

新功能

  • 支持拼车功能的行程分享。

API 变更

  • ConsumerController.getConsumerMapStyle() 现在返回 ConsumerMapStyle,而不是 Task<ConsumerMapStyle>

  • 添加了 PolylineStyle.setZIndex()

问题修复

  • 现在,只有在路线片段同步时才会发生路线动画,从而改善用户体验。

  • 修复了当驾驶员位置更新时间间隔较短时,动画插值期间车辆“闪烁”的问题。

  • 修复了以下 bug:当行程监控在有效行程的中间开始时,车辆会从路线起点开始,而不是从最新位置开始。

  • 当有效路线与其余路线重叠时,将有效路线多段线显示在其余路线上方。

改进

  • 现在,使用未混淆的方法公开 gRPC Status 类。

v0.5.1.01(2019 年 5 月 17 日)

新功能

  • 支持连续分享行程。

API 变更

  • 新增了 ConsumerController 类。

PolylineType

旧值 新值
TRIP_PREVIEW_AUTO_ROUTE PREVIEW_AUTO_ROUTE
TRIP_PREVIEW_TAXI_ROUTE PREVIEW_TAXI_ROUTE
TRIP_PREVIEW_TRUCK_ROUTE PREVIEW_TRUCK_ROUTE
TRIP_PREVIEW_TWO_WHEELER_ROUTE PREVIEW_TWO_WHEELER_ROUTE
TRIP_ROUTE ACTIVE_ROUTE
REMAINING_ROUTE

ConsumerTripCallback

旧值 新值
onTripRouteUpdated onTripActiveRouteUpdated
onTripRemainingDistanceUpdated onTripActiveRouteRemainingDistanceUpdated
onTripRemainingWaypointsUpdated()

ConsumerController

  • 现在,您无需进入状态即可为状态设置回调。
方法 回拨电话
startPickupSelection setPickupSelectionCallback
startDropoffSelection setDropoffSelectionCallback
startTripPreview setTripPreviewSelectionCallback
  • 借助 ConsumerController.setLanguage(String languageCode),您可以设置 FleetEngine 调用中使用的语言(例如上车点说明)。

改进

  • 下车点选择状态现在带有可拖动的图钉。
  • 移除了 INITIALIZE 状态下的相机动画。
  • ManagedChannelBuilder 替换为 AndroidChannelBuilder