汽车应用

构建 Android Auto 和 Android Automotive OS 的模板化应用。
最新更新 稳定版 候选版本 Beta 版 Alpha 版
2024 年 11 月 13 日 1.4.0 - 1.7.0-beta03 -

声明依赖项

要添加对汽车应用库的依赖项,您必须将 Google Maven 存储库添加到您的项目中。阅读Google 的 Maven 存储库以了解更多信息。

在应用或模块的build.gradle文件中添加所需工件的依赖项

Groovy

dependencies {
    implementation "androidx.car.app:app:1.4.0"

    // For Android Auto specific functionality
    implementation "androidx.car.app:app-projected:1.4.0"

    // For Android Automotive specific functionality
    implementation "androidx.car.app:app-automotive:1.4.0"

    // For testing
    testImplementation "androidx.car.app:app-testing:1.4.0"
}

Kotlin

dependencies {
    implementation("androidx.car.app:app:1.4.0")

    // For Android Auto specific functionality
    implementation("androidx.car.app:app-projected:1.4.0")

    // For Android Automotive specific functionality
    implementation("androidx.car.app:app-automotive:1.4.0")

    // For testing
    testImplementation("androidx.car.app:app-testing:1.4.0")
}

有关依赖项的更多信息,请参阅添加构建依赖项

反馈

您的反馈有助于改进 Jetpack。如果您发现新问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库中现有的问题。您可以通过点击星形按钮为现有问题添加您的投票。

创建新问题

有关更多信息,请参阅问题跟踪文档

版本 1.7

版本 1.7.0-beta03

2024 年 11 月 13 日

修复了一个安全漏洞和其他一些常规错误。如果您正在使用较低版本,请务必**更新到此版本**。

androidx.car.app:app-*:1.7.0-beta03 已发布。版本 1.7.0-beta03 包含这些提交

API 更改

  • 更新 CAL 序列化/反序列化代码,使其仅处理在其中声明了@CarProtocol 注解的对象。(Ic730e
  • CarAppExtender 现在可用于扩展框架 Notification.Builder,而不仅仅是 NotificationCompat.Builder。(Id3ad7
  • 添加 KEY_EXCLUDE_MEDIA_ITEM_FROM_MIXED_APP_LIST 附加信息。(I201f9
  • 弃用 ConversationItem 上的空构造函数,并将其替换为一个带必需参数的构造函数。还添加了一个检查以防止空消息。(Ic8221

错误修复

  • 确保 PlaceList 映射使用字符串(仅文本)标题。(Ic992f
  • 此库现在使用JSpecify 空值注解,它们是类型使用。Kotlin 开发人员应使用以下编译器参数来强制执行正确的用法:-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode。(Ib5367b/326456246

版本 1.7.0-beta02

2024 年 9 月 18 日

androidx.car.app:app-*:1.7.0-beta02 已发布。版本 1.7.0-beta02 包含这些提交

API 更改

  • 添加 KEY_ROOT_HINT_MEDIA_HOST_VERSION 附加信息(I8796b
  • TabContents.Builder 类中的 @ExperimentalCarApi 构造函数替换 TabContents.Api8Builder 类(I26fbe
  • CarMediaApp 添加意图操作和附加信息(I50782
  • 将消息传递 API 标记为非实验性(I0b070
  • 将远程项目加载添加到 SectionedItemTemplate(允许长列表加载而不会崩溃)(I0d122
  • 在 API 8 中将 SectionedItemTemplate 添加到 TabTemplate 中受支持的模板列表中。(Idc5d6

错误修复

  • 删除了对新平台 API 的手动访问概述,因为在使用 R8 与 AGP 7.3 或更高版本(例如 R8 版本 3.3)时,以及在使用 AGP 8.1 或更高版本(例如 D8 版本 8.1)时,所有构建都会通过 API 建模自动执行此操作。建议未使用 AGP 的客户端更新到 D8 版本 8.1 或更高版本。有关更多详细信息,请参阅这篇文章。(I9496cb/345472586

版本 1.7.0-beta01

2024 年 6 月 26 日

androidx.car.app:app-*:1.7.0-beta01 已发布。版本 1.7.0-beta01 包含这些提交。功能与 alpha01 中发布的功能相同,如下所述

新功能

  • 带内容的 Map:新的模板,一个地图画布加上一个内容模板,目前可以是列表/网格/窗格/消息。
    • RoutePreviewPlaceListNavigationMapTemplate 现已弃用。模板将按原样继续工作。
    • 示例应用已更新,以显示 MapWithContent 的用法,而不是弃用的模板
  • 对话项目:用于在汽车中显示对话(IM、SMS)和助手朗读的新 API。
  • 车辆尺寸:用于检索车辆尺寸(目前在 AAOS 上的数据)的新 API。

API 更改

  • @ExperimentalCarApi 标记添加到 MediaPlaybackTemplate.Builder。(Ic1957
  • 在实验中添加了一个新的 SectionedItemTemplate。(I5958a
  • 引入 CarAppApiLevel 8I3fa22
  • 在汽车应用库中添加了 MediaPlaybackTemplate 以在媒体播放期间显示内容。(I3c10d
  • 添加了新的 API,供应用检测系统是否支持在驾驶时播放背景音频(I0f868

错误修复

  • 修复了 CAL 客户端代码和 CAL 导航示例应用中某些内存泄漏和崩溃的实例。(I55e04
  • 用 if-null 检查替换 BaseCarAppActivityonDestroy 方法中的 requireNotNull 实例,以避免崩溃。(Iec676

版本 1.7.0-alpha02

2024 年 4 月 17 日

androidx.car.app:app-*:1.7.0-alpha02 已发布。版本 1.7.0-alpha02 包含这些提交

新功能

  • 添加了基于地图的模板的已弃用标志,MapWithContent 模板将向前发展。

API 更改

  • 弃用旧的 MapTemplateRoutePreviewNavigationTemplatePlaceListNavigationTemplate 并鼓励使用新的 MapWithContentTemplateIb0a08

版本 1.7.0-alpha01

2024 年 4 月 3 日

androidx.car.app:app-*:1.7.0-alpha01 已发布。我们已将库版本控制方案更改为与活动的 CarApi 版本匹配。这是为了根据开发人员的反馈减少命名方案的混淆。因此,我们将跳过版本 1.5/1.6,直接进入 1.7 版本 1.7.0-alpha01 包含这些提交

新功能

  • 带内容的 Map:名为 MapWithContent 的新模板,它支持列表/网格/窗格/消息作为地图中的内容。
    • RoutePreviewPlaceListNavigation、Map 模板现已弃用。
    • 示例应用已更新,以显示使用 MapWithContent 的已弃用模板的功能。
  • 对话项目:用于在汽车中显示对话(IM、SMS)和助手朗读的新 API。
  • 车辆尺寸:用于检索车辆尺寸(目前在 AAOS 上的数据)的新 API。

API 更改

  • 将额外的小行图像类型标记为实验性(I5184b
  • 添加了 CarInfo#fetchExteriorDimensions API,它允许访问车辆外部尺寸信息,例如高度、宽度等(Ia40c5
  • MapWithContentTemplate 中删除了 ExperimentalAPI 标记(I66db8
  • 更新 GridItem#setTitle 参数使其可为空。(I3d610
  • GetHeader API 不需要 API 7,因为它向后兼容(I8c812
  • ListTemplate 中添加对 Header 的支持,弃用 headerActionheaderTitleactionStripI7ae01
  • 弃用 titleheaderActionactionStripGridTemplate 中并添加对 Header 的支持(I41a9c
  • 删除实验性 API 的 7 级要求:徽章、GridTemplate 项目大小和图像形状 getter/setter、GridItem 获取/设置徽章的方法。(Id71eb
  • 弃用 titleheaderActionactionStripPaneTemplate 中,添加新的 Header 支持(I23154
  • 将媒体中心遥测从 BroadcastReceiver 更改为浏览自定义操作。(I4185f
  • MessageTemplate 中添加了 Header 属性支持。弃用对 ActionStripheaderActiontitle 的支持。(Ie2de8
  • 修改警报常量可见性(Icf8a8
  • 从父模板中删除 isLoading 属性(I651e6

  • 添加额外信息以告知媒体应用主要 UI 参数(I85ca2)。
  • MediaExtensions 添加媒体中心分析功能(I7ce28)。
  • 添加了在行中使用额外小图像的选项。(I72c03)。

错误修复

  • 更新 ConversationItem 的 javadoc,说明消息应按从旧到新的顺序排序。(I77a2a)。
  • 更新 ListTemplate 截断逻辑,从 ConversationItem 中删除最旧的消息。(Ie0a61)。

版本 1.4

版本 1.4.0

2024 年 5 月 29 日

androidx.car.app:app-*:1.4.0 已发布。版本 1.4.0 是 1.4.0-rc02 的升级版本。

自 1.3.0 以来的重要更改

  • 导航应用的仪表盘地图渲染
  • 新的 Tab 模板,用于改进应用布局/可用性
  • 支持自适应任务限制
  • 列表元素上的辅助操作

版本 1.4.0-rc02

2023 年 12 月 13 日

androidx.car.app:app-*:1.4.0-rc02 已发布。版本 1.4.0-rc02 包含以下提交。仅包含少量修复。

错误修复

  • 更新 ConversationItem 的 javadoc,说明消息应按从旧到新的顺序排序(I77a2a)。
  • 更新 ListTemplate 截断逻辑,从 ConversationItem 中删除最旧的消息。(Ie0a61)。

版本 1.4.0-rc01

2023 年 11 月 1 日

androidx.car.app:app-*:1.4.0-rc01 已发布,没有显著更改。版本 1.4.0-rc01 包含以下提交。

版本 1.4.0-beta02

2023 年 9 月 20 日

androidx.car.app:app-*:1.4.0-beta02 已发布。版本 1.4.0-beta02 包含以下提交。这与 beta01 几乎相同,但将 compileSdk 要求降低到 33。

错误修复

  • 修复了 Tab 上加载屏幕无法正确显示的错误。(cae860)。

版本 1.4.0-beta01

2023 年 8 月 9 日

androidx.car.app:app-*:1.4.0-beta01 已发布。版本 1.4.0-beta01 包含以下提交。

注意:1.4-beta01 要求 compileSdk34,该版本仍处于开发状态。1.4-beta02 将解决此问题。或者,您可以将 android.suppressUnsupportedCompileSdk=34 添加到项目的 settings.gradle 文件中,以安全地暂时抑制警告。

新功能

API 更改

  • 请参阅 alpha02

版本 1.4.0-alpha02

2023 年 7 月 26 日

androidx.car.app:app-*:1.4.0-alpha02 已发布。版本 1.4.0-alpha02 包含以下提交。

  • 发布 Alpha02 的目的是为即将发布的 beta01 做准备。

新功能

  • 导航应用的仪表盘集群地图渲染支持
  • 为应用添加了 Tab 以改进布局体验
  • 添加了列表/网格模板渲染选项
  • 为天气和通信添加了新类别
  • 将多个 API 移至下一个 CarApi 7 版本

API 更改

  • CarMessage 添加多媒体字段(I5aaf6)。
  • 在汽车应用库中向 ConversationItem 添加自定义操作(Ie5ed6)。
  • 添加额外信息以指示媒体项目是否以沉浸式音频格式播放,并展示其内容格式徽标(Icb5bb)。
  • 添加新的 Action 类型,ActionsConstraints API 以支持组合按钮。(I31661)。
  • set/getTemplate 改为 set/getContentTemplateIca036)。
  • 模板参数现在将为 @NonNull。更新了 MapWithContentTemplate API 文档(I0f8ed)。
  • 删除 ListTemplate 中 Actions 的 @ExperimentalCarApi 标记,以便在 CAL 1.4 中启动(I2cfcb)。
  • 删除 TabTemplate@ExperimentalCarApi 标记(Ifcb82)。
  • 删除行辅助操作和装饰的 @ExperimentalCarApi 注释(I8487e)。
  • TabTemplate 添加活动 Tab 内容 ID,并弃用 Tab 上的活动状态(I96932)。
  • GridTemplate 添加 ItemImageShape 属性(Ibf431)。
  • GridTemplate 添加 ItemSize 属性,该属性根据相对较小、中等、较大的存储区控制网格项目大小。(Icdb3b)。
  • 开放 API 访问权限,使开发人员能够获取当前屏幕堆栈的副本。(I48107)。
  • 向汽车应用库添加天气应用类别(I2be44)。
  • 向汽车应用库添加呼叫应用类别(Icab33)。
  • 用重载的 setImage() 方法替换了 GridItem.Builder#setBadge()Id2000)。
  • 向徽章添加图标属性(I629b2)。
  • 添加设置点徽章背景颜色的方法(I6411c)。
  • GridItem 添加徽章属性,允许在 GridItem 图像顶部显示徽章。(I95de7)。
  • 添加了一个实验性徽章对象,该对象将表示要显示在图像上的徽章。(I9878d)。

版本 1.4.0-alpha01

2023 年 2 月 22 日

androidx.car.app:app-*:1.4.0-alpha01 已发布。版本 1.4.0-alpha01 包含以下提交。

API 更改

  • 在汽车应用库中向 GridTemplate 添加顶级操作(Id0191)。
  • 在汽车应用库中向 ListTemplate 添加顶级操作(I9efab)。
  • 添加额外信息以将媒体项目的副标题或其描述链接到其他媒体项目(Ic84bf)。
  • 将行操作的 api 级别更新为 6。(Ie0a69)。
  • 向 A4C 添加消息回调(Ie3986)。

错误修复

  • 添加 CarMessage 缺少的 java doc 引用。(I5db1c)。
  • 覆盖 ConversationItemCarMessageequals()hashCode()I6fd10)。
  • 改进 ConversationItem.mMessages 验证(要求非空且非空(Iafc51)。
  • ConversationItem 字段添加 @Keep 注释(I5d250)。
  • 更新行装饰和辅助操作的 java 文档。(I000b6)。

版本 1.3

版本 1.3.0-rc01

2022 年 12 月 7 日

androidx.car.app:app-*:1.3.0-rc01 已发布。版本 1.3.0-rc01 包含以下提交。

  • 对 beta01 进行了一些小错误修复。没有重大更改。

版本 1.3.0-beta01

2022 年 9 月 7 日

androidx.car.app:app:1.3.0-beta01androidx.car.app:app-projected:1.3.0-beta01androidx.car.app:app-automotive:1.3.0-beta01androidx.car.app:app-testing:1.3.0-beta01 已发布。版本 1.3.0-beta01 包含以下提交。

新功能

除了在汽车应用库 1.3.0-alpha01 中添加的功能外,以下功能已作为 beta01 的一部分添加(此处所有功能仅涉及主机端更改,没有任何 API 更改)

  • 即使用户在PlaceListNavigationTemplateRoutePreviewNavigationTemplateMapTemplate中基于地图的选择屏幕中,浮动导航栏也将继续显示。这可以通过NavigationManager.updateTrip()更新导航信息来实现。
  • 使用FLAG_DEFAULT启用操作按钮以获得超时动画。此按钮将在超时后默认被点击。([API 5 - 所有模板]
  • 当汽车停放时,Row的副文本不会被截断,但在驾驶过程中会被截断为两行。([API 5 - 所有模板]
  • 支持ActionToggleRow的禁用状态([API 5 - 所有模板]

API 更改

  • 放宽MapTemplate列表中的约束,以支持可选择列表(I961ed
  • 删除标题操作的约束,以允许自定义图标。(Iad28f
  • ActionsConstraints中添加一个约束setOnClickListenerAllowed()。它允许Action为除标准图标类型之外的操作设置OnClickDelegate()。(TYPE_APP_ICONTYPE_BACKTYPE_PAN)(I3c745

错误修复

版本 1.3.0-alpha01

2022年7月27日

androidx.car.app:app:1.3.0-alpha01androidx.car.app:app-projected:1.3.0-alpha01androidx.car.app:app-automotive:1.3.0-alpha01androidx.car.app:app-testing:1.3.0-alpha01已发布。版本 1.3.0-alpha01 包含这些提交。

使用 API 级别 5 注释的功能与 Android Auto 7.9 及更高版本兼容。

新功能

  • API 级别 5:新的MapTemplate,导航应用可以使用它在旁边地图显示窗格或列表内容(If5826If44b8
  • API 级别 5:新的CarAudioRecord API,允许通过主机车辆的麦克风录制音频输入(I5e71a
  • API 级别 5:新的SuggestionManager API,允许应用向主机提供建议(I5c103
  • API 级别 5:新的Alert API,在NavigationTemplate上显示上下文通知(I163a7I5ad70
  • API 级别 5:新的HeaderMapController组件,以方便跨模板重用(If5826
  • 添加了androidx.car.app.category.POI作为启用 POI 应用的类别(并弃用了androidx.car.app.category.PARKINGandroidx.car.app.category.CHARGING)(I59da1

API 更改

  • API 级别 5:在SurfaceCallback接口中添加了新的onClick方法,以允许地图交互的点击操作(Ia9777
  • API 级别 5:新的标志Action.FLAG_IS_PERSISTENTAction.FLAG_DEFAULT来描述ActionI96318I5ad70
  • API 级别 5:ActionRowToggle组件的新启用/禁用状态(主机支持将在库的 1.3.0-beta01 版本左右推出)(Id8a09
  • API 级别 5:通过PlaceListNavigationTemplate.BuilderRoutePreviewNavigationTemplate.Builder上的setHeader优先使用新的Header组件,弃用现有的setTitlesetHeaderAction方法(I30e6a
  • API 级别 5:在PlaceListMapTemplate.BuilderPlaceListNavigationTemplate.Builder上添加了setOnContentRefreshListner方法,用于实现新的OnContentRefreshListner接口。
  • API 级别 5:新的setTripTextsetTripIconTravelEstimate.Builder上自定义行程估算卡(Idcc6dIc620d
  • PaneTemplate的标题中添加了对CarIconSpan的支持(Ia1ee0
  • Row的标题和文本中添加了对CarIconSpan的支持(Ic1e3c
  • 地图ActionStrip现在最多可以有四个操作(If3522
  • 将汽车应用 API 级别更新为 5(I26b8e
  • 标题/标题现在对于PlaceListMapTemplatePlaceListNavigationTemplateRoutePreviewNavigationTemplateGridTemplateListTemplateLongMessageTemplateMessageTemplatePaneTemplateSignInTemplate是可选的(I2078dIcadde

错误修复

  • 更新了PaneTemplate图像大小规则,使其成为正方形边界框(Idd72e
  • 修复了在State.DESTROYED之后修改屏幕堆栈时发生的异常。(I3c8eb
  • 为检索应用图标添加了空检查(I3f710
  • 更新汽车硬件 API,默认使用STATUS_UNKNOWN而不是STATUS_UNAVAILABLEIc9444
  • 在创建表面之前检查显示是否存在(Ice027a
  • 修复了CarValue.equals()错误,涉及STATUS_UNIMPLEMENTEDI24451

版本 1.2

版本 1.2.0

2022年11月9日

androidx.car.app:app-*:1.2.0已发布。版本 1.2.0 包含这些提交。

  • 这是一个稳定版本,与 v1.2.0-rc01 相比没有变化。

版本 1.2.0-rc01

2022年3月23日

androidx.car.app:app-*:1.2.0-rc01已发布。版本 1.2.0-rc01 包含这些提交。

  • 这是一个稳定版本,与v1.2.0-beta02相比没有 API 更改。已添加新的实验性功能(API 级别 5),这些功能适用于未来的 Android Auto 和 Android Automotive 版本。

错误修复

  • 修复了在State.DESTROYED之后修改屏幕堆栈时发生的异常。(I3c8eb
  • 更新了CarSensors API,以指示它们未在 AAOS 中实现(Idd57b
  • 更新了PlaceListMapTempalte.Builder#setCurrentLocationEnabled,以指示 ACCESS_COARSE_LOCATION 对该功能就足够了(I510c2
  • 使环岛带角度转向类型的出口编号可选(Ife7d1

版本 1.2.0-beta02

2022年1月26日

androidx.car.app:app-*:1.2.0-beta02已发布。版本 1.2.0-beta02 包含这些提交。

使用此库版本构建并面向Android Automotive OS平台的汽车应用现在可以发布到 Play 商店开放测试渠道。有关更多详细信息,请参阅开发指南

使用 API 级别 4 及以下注释的功能与Android Auto 7.2+ 和新的Android Automotive OS平台兼容。有关注意事项,请参阅下面的已知问题部分。

API 更改

  • 在 POI 模板中添加了实验性的setOnContentRefreshListener API(I6bf22

错误修复

  • 修复了当汽车主机取消绑定时CarAppService中的内存泄漏。(I5c9cab/203594731
  • 更新了CarAppActivity javadoc,以包含对 singleTask 启动模式的要求(Id2f95
  • 减少了恢复时的视觉故障。(Iff7e0

已知问题

  • PlaceListNavigationTemplateRoutePreviewNavigateTemplate中的地图ActionStrip将在下一个Android AutoAndroid Automotive OS版本中开始可用。

版本 1.2.0-alpha02

2021年12月15日

androidx.car.app:app-*:1.2.0-alpha02已发布。版本 1.2.0-alpha02 包含这些提交。

使用 API 级别 4 注释的功能已从实验性升级为稳定版,包括PlaceListNavigationTemplateRoutePreviewNavigateTemplate中的地图ActionStripPane中的CarIcon图像、QRCodeSignInMethod以及在Action中设置渲染提示(例如标志)的能力。

新功能

  • 在 Android Auto 7.1+ 中,Pane的项目限制已从 2 增加到 4。

API 更改

  • CarUnit添加了一个实验性的toString()方法(I36a3b

错误修复

  • 修复了如果回调已失效,则在CarAppPermissionActivity中发生的崩溃(If9823
  • Pane的默认列表限制更改为 4(I0068b

版本 1.2.0-alpha01

2021年11月3日

androidx.car.app:app-*:1.2.0-alpha01已发布。版本 1.2.0-alpha01 包含这些提交。

所有新的v1.2.0功能(API 4+)目前是实验性的,面向未来的 Android Auto 和 Android Automotive OS 版本。有关更多详细信息,请参阅开发指南

API 更改

  • 使AutomotiveCarInfo API 成为实验性。(Ia13e5
  • 添加了汽车应用库 API 级别 4(I2a2e7

  • API 级别 4:添加了在 Pane 中设置 CarIcon 的支持(Ifcc12
  • API 级别 4:添加了二维码登录方法(Ib623e
  • API 级别 4:添加了 Action 的 set/getFlags 方法(Ic03ab
  • API 级别 4:添加了对 PlaceListNavigationTemplateRoutePreviewNavigationTemplate 中平移和缩放的支持(I9d8a3

错误修复

  • API 级别 4:添加机制允许应用向汽车主机发送位置更新(I3bad3
  • 修复了主机验证逻辑无法正确找到 TEMPLATE_RENDERER 权限的问题(I62618

版本 1.1.0

版本 1.1.0

2021年12月15日

androidx.car.app:app-*:1.1.0 已发布。版本 1.1.0 包含这些提交。

这是一个稳定版本,与 v1.1.0-rc01 相比没有变化。有关汽车应用库的新功能的更多详细信息,另请参阅 v1.2.0-alpha02 的发行说明。

自 1.0.0 以来的重要更改

  • API 级别 2:SignInTemplateLongMessageTemplate 可用于车辆停放时的登录流程
  • API 级别 2:NavigationTemplate 内的地图交互支持
  • API 级别 2:多长度文本支持,允许应用根据汽车屏幕尺寸提供多个版本的字符串以供显示。
  • API 级别 3:CarHardwareManager 可用于查询车辆的硬件数据,例如型号和制造商、油量水平和其他传感器。

版本 1.1.0-rc01

2021年11月3日

androidx.car.app:app-*:1.1.0-rc01 已发布。版本 1.1.0-rc01 包含这些提交。

这是一个稳定版本,与 v1.1.0-beta01 相比没有 API 更改。已添加新的实验性功能(API 级别 4),这些功能旨在用于未来的 Android Auto 版本。有关实验性 API 的更多详细信息,请参阅 v1.2.0-alpha01 的发行说明。

版本 1.1.0-beta01

2021 年 9 月 1 日

androidx.car.app:app-*:1.1.0-beta01 已发布。版本 1.1.0-beta01 包含这些提交。

所有 v1.1.0 功能(API 2+)与 Android Auto 6.7 及更高版本完全兼容。有关更多详细信息,请参阅 开发指南

API 更改

  • 删除了 Manager 作为公共接口(Ie381b
  • 添加了为权限请求设置自定义品牌背景的功能(I74b76
  • 添加了 ScreenManager.getStackSizeI0b16a
  • 删除了显式使用 TestCarContextScreenController 构造函数(Iefebc

错误修复

  • 创建 CarHardwareManager 时添加了 API 级别检查(I48f9b
  • 添加了对 API 中无效 CarSpan 用法的检查(I65ae6
  • 修复了在创建过程中如果 Screen 被标记为已完成,则会使堆栈处于损坏状态的问题(I81b13
  • 修复了如果 CarAppExtender 中的动作包含图标,则 CarNotificationManager.notify 会为 AutomotiveOS 记录错误的问题(I3633d
  • 添加了一种握手方法,供应用和主机建立 API 版本(I7d6f8

版本 1.1.0-alpha02

2021 年 7 月 21 日

androidx.car.app:app-*:1.1.0-alpha02 已发布。版本 1.1.0-alpha02 包含这些提交。

新功能

  • API 级别 3:添加了 CarHardwareManager,可用于查询车辆的硬件数据,例如型号和制造商、油量水平和其他传感器。目前,此功能仅适用于开放测试渠道中的 Android Auto 6.7+。在桌面环境中测试此功能需要一个新版本的 Desktop Head Unit,该版本将单独发布。请继续关注 测试汽车应用页面,了解新版本何时可用。
  • 请遵循 开发指南 和库参考,以获取有关如何在与 API 级别 3 兼容的汽车主机中使用这些功能的更多详细信息和设计指南。

API 更改

  • SessionControllerScreenController 的生命周期方法合并到单个 moveToState 方法中(I1ed00
  • 添加了 CarContext#getHostInfo()I8977e
  • 删除了已弃用的字段。(I67168
  • 更新了 SessionControllerScreenController 以直接公开构造函数(Iabf22
  • 删除了 PinSignInMethod.BuilderProviderSignInMethod.BuilderI9f0cb
  • 添加了 'setCarAppResult()' 以启用在 AAOS 中使用模板化应用的“结果”(I37741
  • 使用 @MainThreadCarHardware 接口进行了注释。(Ib2f85
  • OnCarDataListener 重命名为 OnCarDataAvailableListenerI518ca
  • 更新了 CarInfoSpeedMileage 的方法名称和 javadoc。(I86672
  • Toll 重命名为 TollCard。(I3e7c8
  • 删除了已弃用的 PinSignInMethod.getPin,该方法已被 PinSignInMethod.getPinCode 替换(I996ce
  • 删除了 OnInputCompletedListener(已替换为 InputCallback)。(Ib5be1
  • 更改了 PinSignInMethod 以使用 CharSequence 而不是 StringI275d5

错误修复

  • 汽车硬件的 Javadoc 修复。(I2abbc

外部贡献

已知问题

  • SignInTemplate 中,使用 InputSignInMethod 可能会导致汽车主机出现 NullPointerException。这将在库的下一个版本中得到解决。要解决此问题,请在应用的 Proguard 配置文件中包含以下行:-keep class androidx.car.app.model.signin.InputSignInMethod { *; }

版本 1.1.0-alpha01

2021 年 6 月 16 日

androidx.car.app:app:1.1.0-alpha01androidx.car.app:app-automotive:1.1.0-alpha01androidx.car.app:app-testing:1.1.0-alpha01 已发布。版本 1.1.0-alpha01 包含这些提交。

新功能

  • API 级别 2:新的 SignInTemplateLongMessageTemplate 可用于车辆停放时的登录流程。
  • API 级别 2:NavigationTemplate 内的新地图交互支持
  • API 级别 2:新的多长度文本支持,允许应用根据汽车屏幕尺寸提供多个版本的字符串以供显示。
  • 请遵循 开发指南 和库 Javadoc,以获取有关如何在与 API 级别 2 兼容的汽车主机中使用这些功能的更多详细信息和设计指南。

API 更改

  • 使所有 *Callback 接口方法默认为,并将 OnRequestPermissionsCallback 重命名为 OnRequestPermissionsListenerIb3ec9
  • 更新了 androidx.car.app.hardware 类以删除不必要的构建器和参数类。(I67beb
  • 添加了 androidx.car.app.hardware 类以访问特定于汽车的数据,例如燃油、电池和速度。(Iff3c9
  • MessageTemplate 上添加了 ActionStrip 支持(Ida657
  • MessageTemplate 添加了 setLoading。(I2a4b5
  • ConnectionToCar 重命名为 CarConnectionIfe9bd
  • 更改了 NavigationTemplate 以返回显式的 PanModeDelegateI13877
  • 更新了 CarContext.requestPermissions 的参数顺序(Ib890a
  • 更新了元数据键以将最小汽车 API 级别定义为 androidx.car.api.minCarApiLevelIb0d41
  • 创建了一个 API,允许观察汽车连接状态(Ifc935
  • 添加了对 Action 设置切换的支持,并添加了平移模式 Action 类型(Ica6af
  • 创建了 CarNotificationManager 以支持在汽车中发送通知(I10d7a
  • 添加了 ConstraintManager 以提供主机提供的列表限制(I8690e

  • NavigationTemplate 中添加了平移模式和地图操作条 API (I77aa6)
  • SurfaceCallback 中为导航应用添加了平移和缩放 API (Id5e9d)
  • CarAppApiLevel 更新为 2 (Ic1540)
  • 添加了从 CarAppService 请求权限的功能 (I5421e)
  • 在多文本 API 中添加了 RequiresCarApi(2) 注解 (Iacb62)
  • 允许在半列表模板标题中使用多个文本变体 (Ib8df7)
  • 添加了新的 LongMessageTemplate(需要 Car API 级别 2)(Ic5cee)

错误修复

  • 更新了图像尺寸要求,以适应更大的汽车屏幕 (I116dc)
  • 不允许在模板主体中添加超过 2 个操作 (I32157)
  • 确保汽车应用库中所有 PendingIntent 的创建都设置了标志。(If84feb/186394900)
  • 更新了 javadoc,允许 Row 的文本更改作为刷新 (If3f9c)
  • androidx.activity:activity:1.2.0 现在是 API 依赖项 (Id1cb9)
  • 使 SignInTemplateLongMessageTemplate 要求其主体中仅在停车时执行操作,并更新文档以指示它们仅在汽车停放时显示 (Iddaa9)
  • 修复了在启动期间弹出 Screen 时发生的异常 (Ifcf40b/184664896)
  • 允许在 ForegroundCarColorSpan 中使用自定义文本颜色 (I69e59)
  • 修复了在 ScreenON_DESTROY 之后观察到 Session 上的 ON_DESTROY 的问题 (I52e01b/183696617)
  • 更新了有关何时允许将 TravelEstimate 的剩余时间设置为未知时间的 javadoc。(I99610b/183632456)
  • 更新了 Action 以支持在标题中使用 ForegroundColorSpan 和任何自定义背景颜色 (I578e4)
  • 如果在执行器执行之前清除回调,则不要执行 NavigationManagerCallback#onStopNavigation (I7fc5eb/181143772)
  • 修复了一个问题,该问题要求应用程序显式地依赖于 lifecycle-common-java8 (I8b8c8)

已知问题

  • SignInTemplate 中,当用户想要确认输入时,屏幕键盘会显示“搜索”图标而不是“输入”图标。作为解决方法,用户可以访问在输入字段获得焦点时激活的手机键盘。
  • 在 Android Auto 6.5 版中,SurfaceCallback 中的平移和缩放回调可能会错误地为某些触摸手势调用。

汽车应用测试版 1.0.0

版本 1.0.0-alpha01

2021 年 3 月 24 日

androidx.car.app:app-testing:1.0.0-alpha01 已发布。版本 1.0.0-alpha01 包含这些提交。

这是之前闭源测试库的第一个 Jetpack 版本。有关如何在测试中使用此库,请参阅我们的 示例

新功能

  • 模型类的控制器已被删除。模型 getter 现在是公共 API 表面的部分,允许验证在构建器中设置的值。
  • 之前的 CarAppServiceController 已被新的 SessionController 替换,用于测试与主机连接生命周期相关的逻辑。

版本 1.0.0

版本 1.0.0

2021 年 4 月 21 日

androidx.car.app:app:1.0.0 已发布。版本 1.0.0 包含这些提交。

1.0.0 的主要功能

  • 4 月初,我们 宣布 应用程序可以使用 androidx.car.app:app:1.0.0-rc01 开始发布到生产渠道。汽车应用库 v1.0.0 现在已稳定,并与 Android Auto 6.1 及更高版本完全兼容。
  • 请遵循 开发指南,了解如何使用库构建适用于 Android Auto 的导航、停车和充电应用。

错误修复

  • 修复了在启动期间弹出 Screen 时发生的异常 (70aae1b/184664896)
  • 修复了在 ScreenON_DESTROY 之后观察到 Session 上的 ON_DESTROY 的问题 (0ceecbb/183696617)

版本 1.0.0-rc01

2021 年 3 月 24 日

androidx.car.app:app:1.0.0-rc01 已发布。版本 1.0.0-rc01 包含这些提交。

错误修复

  • 修复了一个竞争条件错误,其中 NavigationManagerCallback#onStopNavigation 在回调被清除后被调用。如果在回调执行器实际运行之前清除了回调,则会发生这种情况 (I7fc5eb/181143772)
  • 修复了一个问题,该问题要求应用程序显式地依赖于 lifecycle-common-java8 (I8b8c8)
  • 修复了当应用程序在已删除回调时收到 stopNavigation 调用时抛出的 NullPointerException (Ib8b89b/181143772)
  • 改进:如果应用程序的生命周期至少不处于 CREATED 状态,则不会向其分派调用 (I86965b/179800224b/177921120)
  • 修复了一个问题,该问题会导致应用程序清单中指定的无效最小 API 抛出异常,从而导致主机上的 ANR。(Iffeddb/174231592)

版本 1.0.0-beta01

2021 年 2 月 24 日

androidx.car.app:app:1.0.0-beta01 已发布。版本 1.0.0-beta01 包含这些提交。

这是之前闭源库的第一个 Jetpack 版本,与 Android Auto 6.1 或更高版本兼容。请遵循 开发指南,了解如何使用库构建汽车应用。

新功能

错误修复

  • 修复了按顺序弹出屏幕时恢复错误 Screen 的问题。(b/177590791)