侧边栏壁纸
  • 累计撰写 372 篇文章
  • 累计创建 60 个标签
  • 累计收到 109 条评论

目 录CONTENT

文章目录

Android 12 SDK更新内容

Z同学
2022-07-12 / 0 评论 / 1 点赞 / 83 阅读 / 8,666 字
温馨提示:
本文最后更新于 2022-09-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

本篇总结 Android 12 API 31的版本更新内容。让大家知道更新了一些什么。

其中还有一个API 32的版本.是针对大屏设备的一次功能更新。

1. Android 12 API 31

Android 12 是在2021年10月5日发布的。

汇总一下更新的内容,并进行了部分的解读。但是更多的资料信息来源于Android官网发布的介绍。

1.1 新功能和API

  1. Wifi感知(NAN)增强:Android 12 增强了 Wi-Fi 感知功能,可以使用 onServiceLost() 回调,以便在应用因服务停止或移出范围而失去已发现的服务时发出警报。可以调用 WifiAwareManager.getAvailableAwareResources(),通过此方法的返回值可以获得可用数据路径的数量、可用发布会话的数量以及可用的订阅会话数量。(一般开发也用不上)

  2. Quad bayer 相机传感器支持:支持超高分辨率相机传感器。许多 Android 设备都配备了超高分辨率摄像头传感器(通常采用 Quad 或 Nona Bayer 模式),这些传感器在图片质量和弱光性能方面提供了极大的灵活性。Android 12 引入了新的平台 API,可让第三方应用充分利用这些多功能传感器。(做相机app的小伙伴需要了解了)

  3. MediaDrm 更新:新的 API 方法可让您更轻松地确定是否需要安全的解码器组件。(MediaDrm 是数位版权管理,可以获取用户解密受保护的媒体流的秘钥)

  4. Camera2供应商扩展:可以直接使用各种厂商自定义的相机效果(例如焦外成像、HDR 模式和夜间模式等),厂商如果公开了,我们就可以通过API直接得到相应的功能,具体要参考CameraExtensionCharacteristics

  5. BiometricPrompt的可本地化字符串:用于检索本地化的用户可读按钮标签、提示以及生物识别身份验证的设置名称。使用这些标签可以创建更精确的面向用户且特定于所使用的生物识别身份验证方法的指令,例如“使用人脸解锁”或“使用指纹继续操作”。

  6. AVIF图片支持:支持对使用AV1图片文件格式(AVIF)的图片的支持。简单点从文件尺寸上来比较:AVIF<webP<jpeg。同时清晰度比webP更好。

  7. AppSearch:引入了高性能设备上搜索引擎作为系统服务。AppSearch可使应用对结构化数据建立索引,并使用内置的全文搜索功能对其进行搜索。此外,AppSearch 还支持原生搜索功能,例如高效的编入索引和检索、多语言支持和相关性排名。可以通过 AppSearch Jepack库使用。

  8. 自动更新应用:新的API方法提供,安装程序应用可以执行应用更新而无需用户确认。PackageInstallersetRequireUserAction() 方法。此方法可让安装程序应用执行应用更新而无需用户确认操作。(国内厂商的应用市场自动更新功能就是无需用户确认,就可以更新)。

  9. 允许按照来电重要性排名的新通话通知:就是新增了一个通知样式:Notification.CallStyle.可让您的应用指明正在进行的通话的重要性,方法是在状态栏中显示一个显眼的条状标签,在其中显示通话的时间;用户可以点按此条状标签以返回他们的通话。

  10. 圆角API:用于检索圆角的半径和中心点。引入了 RoundedCornerWindowInsets.getRoundedCorner(int position),它们可以提供圆角的半径和中心点。

  11. 原生动画图片解码:NDK 图片解码 ImageDecoder 的API 现在可以对使用GIF和WebP文件格式的图片的所有帧和时间数据进行解码。功能进行了扩展。

  12. 游戏模式:Android 12 引入了一个新的Game Mode API,可让用户优化游戏体验以提升性能或延长电池续航时间。(游戏开发可能就需要注意了。)

  13. 应用启动画面API:为Android 12的所有应用引入了新的应用启动动画,包括启动时的进入应用运动、显示应用图标的启动画面,以及向应用本身的过渡。(原先实现了自定义的启动动画的小伙伴们需要进行适配了。而没有的,那么Android官方给你弄了一个新的了。)

  14. 应用存储访问权限:可以创建自定义 activity,让用户可以管理设备上的应用数据,并将此 activity 提供给文件管理器。(简而言之就是 文件管理类的应用,可以获取手机上其他应用的存储空间,而该app也配置了应用存储空间的管理,那么就可以直接跳转并打开该页面)。

  15. 已知签名者权限保护标志:设备和应用可以向其他应用授予签名权限,而无需在设备制造时为其签名。签名级权限knownCerts 属性可让您在声明时引用已知签名证书的摘要。(可以直接应用给其他应用进行签名了)

  16. 性能等级:每个 Android 设备都会声明其支持的性能等级。开发者可以在运行时查看设备的性能等级,并提供充分利用设备功能的升级体验。(性能等级和 API等级可没有关系哦。系统升级了,但是性能等级可能还是不变的)

  17. 为NFC付款启用屏幕关闭:应用现在可以在不打开设备屏幕的情况下启用 NFC 付款功能。(省电哦)。实现也比较简单:将 requireDeviceScreenOn 设置为 false就可以开启了。

  18. 通知的丰富图片支持:现在可以通过在 MessagingStyle()BigPictureStyle() 通知中提供动画图片来丰富应用的通知体验。还可以让用户在从通知栏回复消息时发送图片消息。(通知栏的功能又得膨胀了,一大批产品已经在路上了。)

  19. 视频编码改进:定义了一组标准键来控制视频编码的量化参数 (QP) 值,这样可让开发者避免供应商专用代码。MediaFormat API 以及 NDK 媒体库中提供了这些新键。(视频开发者,要注意了)

  20. 使配套应用保持唤醒状态:新的 API,当配套设备处于范围内时,让您可以唤醒某个应用。保证该过程在设备处于范围内时将继续运行。(例如手表唤起app等)

  21. 配套设备管理器配置文件:对于以 Android 12(API 级别 31)及更高版本为目标平台的合作伙伴应用,可以在连接到手表时使用配套设备配置文件。使用配置文件可将一组设备类型专用权限的授予操作捆绑在一个步骤中,从而简化注册过程。

  22. 设备属性认证:任何以 Android 12 或更高版本为目标平台的应用都可以验证认证证书中的设备属性。

  23. 让应用直接访问Tombstone轨迹:可以通过 ApplicationExitInfo.getTraceInputStream() 方法以协议缓冲区的形式访问应用的原生代码崩溃 Tombstone。协议缓冲区使用此架构进行序列化。以前,只有通过 adb命令工具 才能访问此信息。

  24. 权限组查找:可以查询系统将平台提供的权限组织到权限组中的方式。

  25. 媒体管理访问权限:可以请求用户授予您的应用媒体管理特殊权限。此权限允许您的应用执行以下各项操作,而无需针对每项文件操作提示用户:

  26. 蓝牙新权限:使应用扫描附近的蓝牙设备,而无需请求位置信息权限。

  27. 扩展的文件访问权限支持:MediaStore 现在支持面向媒体 URI 的扩展 API。getMediaUri() 方法可提供与给定文档提供程序 URI 等效的媒体 URI。这两个 URI 指的是同一个基础项。使用媒体库 URI,您可以更轻松地访问共享存储空间中的媒体文件

  28. 画中画(PIP改进):改变了触摸行为,添加了一些新的API并调整了退出时的动画效果等。

  29. 核心Java API更新: 部分java核心类发生了变化,新增了一些API,具体的可以变动表格,在文档下面有介绍。

  30. 更简单的模糊处理,颜色滤镜和其他效果:新增了RenderEffect类,可将常见的图片效果(如模糊处理、颜色滤镜、Android 着色器效果及更多效果)应用于 View 和渲染层次结构。效果可以组合为连锁效果(构成一种内外效果)或混合效果。由于处理能力有限,不同的 Android 设备可能支持该功能,也可能不支持。(也就是不保证所有设备都可以生效,适配性不高哦)也可以通过调用 View.setRenderEffect(RenderEffect) 将效果应用于 View 的底层 RenderNode

  31. 富媒体内容插入:新增了一个OnReceiveContentListener接口,可以用来接受其他应用例如剪贴板粘贴,键盘输入,或者拖放操作等传递的内容,原先都是接收文本,现在可以接收图片,视频,或其他富媒体格式。将内容插到你想显示的地方来。官方实现实例

  32. 带宽估测改进:由 getLinkDownstreamBandwidthKbps()getLinkUpstreamBandwidthKbps() 提供的带宽估测功能针对 Wi-Fi 和移动网络连接都得到了改进。现在,返回的值表示用户在设备上的所有应用中的每个运营商或 WiFi SSID、网络类型和信号电平的全时加权平均吞吐量。这样可返回对预期吞吐量的更准确且更实际的估测数据,提供对应用冷启动的估测数据,并且与使用其他吞吐量估测方法相比需要更少的周期。

  33. 沉浸模式下的手势导航改进:简化了沉浸模式,使手势导航与其他 activity 中的用户体验更加一致。(如果针对全屏模式下,各种手势操作有需求的app,可以注意下相关的改进)。

  34. 并发点对点+互联网连接:在具有硬件支持的设备上运行时,使用点对点连接不会在建立与对等设备的连接时断开现有的 Wi-Fi 连接。如需检查是否支持此功能,请使用 WifiManager.isMultiStaConcurrencySupported()

  35. 安全锁定屏幕通知操作Notification.Action.Builder 类支持 setAuthenticationRequired() 方法,这使您的应用可以在调用指定的通知操作前要求必须解锁设备。此方法有助于为锁定设备上的通知添加一道额外的安全保障。(也就是锁屏模式下 如果要操作,那么我们可以要求收集必须解锁)

1.2 变更

相较于新增的功能,我们可能更注意变更的功能。因为新增功能一般并不会影响我们,而变更可能会造成适配问题,甚至崩溃异常。

  1. WebView 中的现代SameSite Cookit:WebView 控件是基于Chromium的。而Chromium变更了对第三方Cookit的处理方式,所以新版API中也包含了这些变更。主要是SameSite属性的变化。

    • 没有 SameSite 属性的 Cookie 被视为 SameSite=Lax
    • 带有 SameSite=None 的 Cookie 还必须指定 Secure 属性,这意味着它们需要安全的上下文,并应通过 HTTPS 发送。
    • 站点的 HTTP 版本和 HTTPS 版本之间的链接现在被视为跨站点请求,因此除非将 Cookie 正确标记为 SameSite=None; Secure,否则 Cookie 不会被发送。
  2. mDNSResponder Api变更:更改了应用可以使用 mDNSResponseser 原生 API 与 mDNSReplyer 守护程序进行交互的时间。以前,当应用在网络中注册服务并调用 getSystemService() 方法时,系统的 NSD 服务会启动 mDNSReplyer 守护程序,即使应用尚未调用任何 NsdManager 方法也是如此。然后,守护程序将设备订阅到包含所有节点的多播组,这导致系统更频繁地唤醒并消耗额外的电量。为了最大限度地降低电池用量,在 Android 12 及更高版本中,现在系统仅在 NSD 事件需要时才会启动 mDNSReplyer 守护程序,并在之后停止该守护程序。

  3. Android App Links 验证的变更:提高了链接的可靠性,同时可以让开发者和用户更好的进行控制。(我们如果使用了这个验证,那么要确保intent过滤器中包含了BROWSAELE类别,并支持https方案)。

  4. 自定义通知样式统一:以前的Notification的UI可以自定义,每个app样式太多了。现在Android12进行了适度统一,确保外观一致。

  5. 通知trampline限制:当用户点按通知或通知中的操作按钮时,您的应用无法在服务或广播接收器内调用 startActivity()。如果你的应用还是需求通过点击Notifiaction唤起Activity,那么建议通过PendingIntent操作。不能通过广播或者服务进行了。(影响就比较大了,估计又一波app要进行修改了)

  6. 数据访问审核中的归因声明:这个归因标记是在Android 11引入的,到Android 12就变成了必须进行声明了。

  7. 前后服务启动限制:如果应用在后头运行时,不运行启动前台服务。如果启动会引发异常。如果有必须启动的,建议使用WorkManager来计划和启动加急工作。

  8. 更安全的组件导出:现在,应用必须明确声明是否允许其他应用启动其使用 intent 过滤器的组件。也就是使用了inten过滤器的Activity,Service,BroadcastReceiver必须明确标注android:exported否则将无法在Android12及以上版本设备上安装。(影响可是很大的)

  9. PendingIntent指定可变性:必须为应用创建的每个 PendingIntent 对象指定可变性。这项额外的要求可提高应用的安全性。

  10. 大致位置:,当应用请求确切位置信息权限时,用户可以选择仅授予大致位置信息权限。

  11. Passpoint 更新:添加了两个新API:isPasspointTermsAndConditionsSupported()isDecoratedIdentitySupported()

  12. Display 中的getRealSize 和getRealMetrics 废弃和限制:建议使用WindowMetrics进行屏幕尺寸检查。

  13. 应用无法关闭系统对话框:现在,应用无法再调用用于关闭系统对话框的 intent。在Android12开始,调用ACTION_CLOSE_SYSTEM_DIALOGS进行关闭系统对话框时,会触发SecurityException。在低版本不会有任何响应。

  14. 应用启动画面SplashScreen :在 Android 11 或更低版本中实现了自定义启动画面,则需要将您的应用迁移到 SplashScreen API,以确保它从 Android 12 开始正确显示。如果不迁移您的应用,则可能会导致应用启动体验变差或出乎预期。(系统默认启动画面由应用的启动器图标元素和主题的 windowBackground(如果是单色)构成。)

  15. 移除了BouncyCastle 实现: 移除了之前弃用的加密算法的许多 BouncyCastle 实现。包括所有 AES 算法。系统改用这些算法的 Conscrypt 实现。

  16. 网络Intent解析:可让您的网站网址直接在您的 Android 应用中打开相应内容(无需用户选择应用)。

    如需向应用添加 Android 应用链接,请定义使用 HTTP 网址打开应用内容的 intent 过滤器(如创建指向应用内容的深层链接中所述),并验证您是否为相关应用和网站网址的所有者(如本指南中所述)。如果系统成功验证您是网址所有者,则会自动将这些网址 intent 路由到您的应用。

  17. 受限应用待机模式存储分区:针对不太负责任地使用系统资源的应用,引入了一个新的更严格的应用待机模式存储分区。如果用户直接与您的应用互动,系统会将其放在一个限制较少的存储分区中。存储分区为:活跃,工作集,常用,极少使用,受限。如需检查系统是否已将您的应用放在受限存储分区中,请调用 getAppStandbyBucket()。如果此方法的返回值为 STANDBY_BUCKET_RESTRICTED,则您的应用在受限存储分区中。

  18. 权限软件包可见性:根据应用对其他应用的软件包可见性,以 Android 11(API 级别 30)或更高版本为目标平台且调用以下某种方法的应用会收到一组过滤后的结果:

  19. 前台服务通知的用户体验延迟:为了简化短期任务,某些前台服务的前台服务通知会延迟 10 秒。(可配置项)

  20. 拉伸滚动效果:Android 12 为滚动事件引入了全新的视觉行为。在 Android 11 及更低版本中,滚动事件会使视觉元素发光。在 Android 12 及更高版本中,发生拖动事件时,视觉元素会拉伸和反弹;发生快速滑动事件时,它们会快速滑动和反弹。(现在有官方库了,不用自己造轮子了)

  21. 多窗口模式下的所有应用:将多窗口模式作为标准行为。在大屏设备 (sw >= 600dp) 中,所有应用都将在多窗口模式下运行,无论应用配置为何。如果 resizeableActivity="false",应用会在必要时进入兼容模式,以适应显示屏尺寸。

  22. 按返回按钮时,不再完成根启动器Activity:更改了在按下“返回”按钮时系统对为其任务根的启动器 activity 的默认处理方式。在以前的版本中,系统会在按下“返回”按钮时完成这些 activity。在 Android 12 中,现在系统会将 activity 及其任务移到后台,而不是完成 activity。当使用主屏幕按钮或手势从应用中导航出应用时,新行为与当前行为一致。

    注意:系统仅会将新行为应用于为其任务根的启动器 activity,即使用 ACTION_MAINCATEGORY_LAUNCHER 声明 intent 过滤器的 activity。对于其他 activity,在按下“返回”按钮时,系统会像以前一样完成 activity。

    对于大多数应用而言,此变更意味着使用“返回”按钮退出应用的用户可以更快地从温状态恢复应用,而不必从冷状态完全重启应用。

1.3 其他

  1. 设备芯片组信息:SoC 芯片组供应商和型号信息通过 SDK 公开。Build.SOC_MANUFACTURERBuild.SOC_MODEL 可以看到 SoC 芯片组供应商和型号信息

  2. 音频焦点:当播放音频的应用失去音频焦点时,Android 会强制执行淡出。如果某个应用请求获得音频焦点,而另一个应用具有焦点并正在播放,则系统会淡出正在播放的应用。(系统直接在底层干了,我们应用上层不用管)。

  3. 录音的新目录:引入了一个新的目录(Recordings),用户存储和识别录音。(例如:Pictures是截图文件夹,Music是音频文件夹等。系统将Recordings文件夹判定为录音文件。)

  4. 近期网址共享:应用可使 Pixel 用户直接通过“近期使用”屏幕共享网页内容。(仅适用Pixel 和国内开发者关系不大)。

  5. 兼容的媒体转码:当视频由不支持HEVC的应用程序打开时,系统可以自动将HEVC(H.265)转换为AVC(H.264)格式,(默认情况下这个功能是关闭的,除了HEVC,还有HDR10,HDR10+)

  6. 隐藏应用叠加窗口:可使应用隐藏其他应用绘制的叠加窗口。隐藏由具有 SYSTEM_ALERT_WINDOW 权限的应用绘制的叠加窗口的功能。

  7. 隐私信息中心:系统设置界面中会新增一个隐私信息中心,显示了手机应用何时访问位置信息、相机和麦克风信息。每个屏幕都会显示一个时间轴,指明不同的应用何时访问过特定类型的数据。(数据汇总,可以让我们了解这些隐私数据被如何调用了。主要针对手机厂商OEM开发,普通app开发用不上)

  8. 微件改进:改进了现有的Widgets API,以改善平台和启动器中的用户和开发者体验。(改成了圆角了)

  9. 更新了兼容性测试的切换开关:可以开启或者关闭个别行为变更,以进行更精细的兼容性测试。这个兼容性测试时一个框架工具:

    • 在不实际更改应用的 targetSdkVersion 的情况下测试有针对性的变更:可以使用切换开关强制启用特定的针对性行为变更,以评估对现有应用的影响。
    • 仅针对特定变更进行测试:您可以使用切换开关停用除要测试的变更之外的所有针对性变更,而不必一次处理所有针对性变更。
    • 通过 adb 管理切换开关:您可以使用 adb 命令在自动测试环境中启用和停用可切换的变更。
    • 使用标准变更 ID 更快地进行调试:每个可切换的变更都具有唯一 ID 和名称,可用于在日志输出中快速调试根本原因。

    更多的可以通过官网了解,兼容性框架 Android 12

  10. 富触感反馈体验:引入了全新的触感反馈效果和更加精细的致动器控制。以期为界面事件创建信息触感反馈,为游戏打造令人愉悦的沉浸式效果,以及为提高工作效率提供注意力触感反馈。

  11. 即时通讯应用中的钓鱼式攻击检测功能:(仅适用Pixel 和国内开发者关系不大)。

  12. ADB备份限制:使用adb backup 命令时,默认会排除应用数据。(如果我们在mainfast文件中标注了android:debuggable= false。那么就不会被备份指令将应用数据也进行备份了,如果是true那么就还是支持的)。

  13. 应用休眠:如果应用几个月没有被打开使用过,系统会自动重置授予的所有权限(也就是权限全部回收了),然后将该应用设置为休眠状态。(如果想用,可以点击继续唤起app,只是权限会需要用户再重新赋予一遍)

  14. 移动传感器采样率限制:为了保护用户的潜在敏感信息,系统会对来自某些移动传感器和位置传感器的数据刷新率进行限制。(具体限制到多少,我没有找到。但是应该不影响导航等坐标刷新率)

  15. 精确的闹钟权限:为了鼓励应用节省系统资源,以 Android 12 及更高版本为目标平台且设置了精确的闹钟的应用必须能够访问“闹钟和提醒”功能,该功能显示在系统设置的特殊应用访问权限屏幕中。如需获取这种特殊应用访问权限,请在清单中请求 SCHEDULE_EXACT_ALARM 权限。精确的闹钟只能用于面向用户的功能。

  16. 供应商提供的原生共享库:默认情况下无法访问由芯片供应商或设备制造商提供的非 NDK 原生共享库。只有在使用 <uses-native-library>标记明确请求时,才能访问这些库。

  17. 更新了非SDK限制:在Android 11中不受支持的非SDK接口,将会在Android 12中被屏蔽。还有部分被添加到Android SDK中的非SDK接口(一般常用API肯定不会受影响了。)

  18. 麦克风和摄像头指示灯:每当应用访问摄像头或麦克风时,系统都会显示状态图标

  19. 麦克风和摄像头切换开关:用户只需通过一个切换开关即可为所有应用启用或停用麦克风和摄像头。(OEM厂商的活)

  20. 剪贴板访问通知:当某个应用从另一个应用访问剪贴板数据时,会向用户发送通知。但是当本应用调用 getPrimaryClipDescription() 以接收有关剪贴板上当前数据的信息。当您的应用调用此方法时,系统不会显示消息框消息。

  21. 改进了刷新率切换:无论显示屏是否支持无缝过渡到新的刷新率,都会发生使用 setFrameRate() 实现的刷新率变化;无缝过渡是指没有任何视觉中断,比如一两秒钟的黑屏。以前,如果显示屏不支持无缝过渡,它在调用 setFrameRate() 后通常会继续使用同一刷新率。您可以调用 getAlternativeRefreshRates() 来提前确定向新刷新率的过渡是否有可能是无缝过渡。通常,会在刷新率切换完成后调用回调 onDisplayChanged(),但对于某些外接显示屏,会在非无缝过渡期间调用该回调。

  22. 大屏设备上的相机预览:请求特定屏幕方向且不可调整大小 (resizeableActivity="false") 的相机应用会自动进入边衬区人像模式,从而确保相机预览的屏幕方向和宽高比正确。

  23. 不受信任的触摸事件被屏蔽:在叠加层以不安全的方式屏蔽应用的情况下,Android 12 会阻止应用使用触摸事件。换言之,系统会屏蔽穿透某些窗口的触摸操作,但也有一些情况下例外:

    • 应用中的互动。您的应用会显示叠加层,并且只有当用户与您的应用进行互动时才会显示叠加层。

    • 可信窗口。包括但不限于以下窗口:

      注意:类型为 TYPE_APPLICATION_OVERLAY 的窗口不受信任。

    • 不可见窗口。窗口的根视图是 GONEINVISIBLE

    • 全透明窗口。窗口的 alpha 属性为 0.0。

    • 足够半透明的系统警报窗口。当组合后的不透明度小于或等于系统针对触摸的最大遮掩不透明度时,系统会将一组系统警报窗口视为足够半透明。在 Android 12 中,默认最大不透明度为 0.8。

1、4 核心 JAVA API的变动:

API
java.lang.Deprecated forRemoval()since()
java.lang.Byte 构造函数已弃用,compareUnsigned())
java.lang.Short 构造函数已弃用,compareUnsigned()
java.lang.Math floorDiv()floorMod()multiplyExact()multiplyFull()multiplyHigh()
java.lang.StrictMath floorDiv()floorMod()multiplyExact()multiplyFull()multiplyHigh()
java.util.Set copyOf()
java.util.Map copyOf()
java.util.List copyOf()
java.time.Duration dividedBy()toDaysPart()toHoursPart()toMillisPart()toMinutesPart()toNanosPart()toSecondsPart()truncatedTo()
java.time.LocalTime ofInstant()toEpochSecond()

2. Android 12 API 32

Android 12L 是在2021年12月发布的。主要是针对大屏的一个特殊版本更新。

  1. 优化了系统界面:使通知、快捷设置、锁屏、概览、主屏幕等元素在大屏设备上看起来更美观,使用起来更便捷。

  2. 优化了媒体投影效果:从 12L 开始,当在 Surface 上呈现虚拟屏幕时,系统会根据 Surface 的大小缩放虚拟屏幕,其过程类似于使用 ImageViewcenterInside 选项。这种新的缩放方法可最大限度地增加 Surface 图像的大小,同时确保适当的宽高比,提升了将屏幕投射到电视和其他大屏幕上的效果。

  3. 强大直观的多任务处理能力:添加了新的任务栏,让您可以更轻松地即时启动和切换应用。手势更是提升了任务栏的使用速度,您可以通过拖放进入分屏模式,向上滑动进入主屏幕。在手势导航中,快速切换手势可让用户浏览最近使用的应用。用户可以通过长按随时显示或隐藏任务栏。

  4. 分屏模式下测试应用:由于分屏模式的使用越来越普遍,以及 Android 12 中引入的变更允许用户将所有应用启动到分屏模式,我们强烈建议您在分屏模式下测试应用。

  5. 处理边衬区大小的动态变化:与手势导航搭配使用时,任务栏可以动态地隐藏和显示。如果您的应用本就使用边衬区信息来绘制界面,则需要考虑当应用处于恢复状态时,边衬区大小可能会发生变化。在这些情况下,您的应用需要调用 setOnApplyWindowInsetsListener 并处理边衬区的尺寸变化,如系统栏边衬区中所述。

  6. 改善了兼容性体验:现在可通过自适应布局、多窗口模式支持、跨屏幕尺寸的连贯性和设备折叠状态变化等功能提供出色的体验。对于尚未优化的应用,我们对兼容模式进行了视觉和稳定性方面的改进,以便为用户提供更好的体验,同时使这些应用在默认情况下看起来更美观。

  7. 大屏设备上Gppley Play的变化:Google Play 中进行了一些更改,以突出显示针对用户设备进行了优化的应用。Play 还引入了大屏设备专用的应用评分机制(于 2021 年 8 月发布),让用户能够对您的应用在其大屏设备上的表现进行评分。

  8. 使用 Jetpack WindowManager 嵌入 activity:利用 activity 嵌入功能,您可以一次显示多个 activity(例如,在列表-详情模式下),以便充分利用大屏设备的额外显示区域,并且只需对应用进行少量重构,甚至无需重构。

  9. 设备屏幕方向请求:与标准手机不同,可折叠设备和平板电脑经常在横屏和竖屏模式下切换使用。平板电脑通常横向放置,而可折叠设备可根据其折叠状态确定放置方向。有些应用会请求固定的屏幕方向(横屏或竖屏),并且希望无论设备的屏幕方向如何,都保持首选屏幕方向。尽管在 Android 12L 中仍支持此功能,但设备制造商可以选择覆盖应用的首选屏幕方向请求。为了提供最佳用户体验,请在设计应用时采用自适应布局。在尺寸大于 600dp 的屏幕上,无论是竖屏模式还是横屏模式,这种布局都能充分利用可用的屏幕空间。

到这里介绍就结束了,官网介绍的比我要详细的多。我主要通过自己的再次记录,加深印象。在后面开发过程中碰见了问题好明白问题所在而已。

以上全部内容都可以通过下面的参考链接进行查询。

参考来源官网地址:

https://developer.android.google.cn/about/versions/12/summary?hl=zh-cn

1

评论区