查看原文
其他

丰富多彩 | Android 14 Beta 2 发布

Android Android 开发者 2023-05-23
作者 / Dave Burke, VP of Engineering


Google I/O 的大幕已拉开,我们也为大家带来了 Android 14 的第二个 Beta 版。我们在 Google I/O 上为大家准备了许多精彩的演讲,包括对 Android 14 许多新功能的详细介绍。这次发布的 Beta 2 聚焦相机和媒体、隐私和安全、系统界面以及开发者生产力方面的改进。我们还在继续完善大屏设备上的体验,并首次在指定合作伙伴的手机、平板电脑和可折叠设备上提供 Android 14 Beta 版测试计划。 


  • Google I/O
    https://io.google/2023/

  • Android 精彩演讲
    https://io.google/2023/program/?q=android,mobile


每一年 Android 都会带来改进和新的功能,在这一路的进化过程中,大家在 Android Beta 版测试计划中提交的反馈至关重要。我们在 Android 14 开发者网站提供了更多关于本次 Beta 版的信息,包括如何使用 Pixel 设备获取 Beta 版以及发布时间表等。非常期待听到大家的想法,在这里我们提前感谢大家,是大家的持续支持,让 Android 能成为属于每一个人的平台!


  • 参与 Beta 版测试
    https://www.google.com/android/beta

  • Android 14 开发者网站
    https://developer.android.google.cn/about/versions/14

  • 获取 Google Pixel 系统映像
    https://developer.android.google.cn/about/versions/14/download

  • 发布时间表
    https://developer.android.google.cn/about/versions/14/overview#timeline

  • 提交反馈
    https://developer.android.google.cn/about/versions/14/feedback



现已支持更多设备



现在您可以在我们合作伙伴的设备上体验 Android 14 Beta 版,他们包括 iQOO、联想、Nothing、一加、OPPO、realme、TECNO、vivo 和小米


  • 合作伙伴的设备
    https://developer.android.google.cn/about/versions/14/devices



高质量相机和媒体体验



Android 设备以高品质的相机而闻名。去年的 Android 13 已经带来了诸多这方面的提升,比如支持录制生动的高动态范围 (HDR,能支持数十亿种颜色) 视频,通过相机扩展来帮助设备厂商们提供诸如夜间模式和散景 (bokeh) 等功能,以及为相机数据流用例提供优化,等等。Android 14 则在这些提升的基础上更进一步。

超强 HDR (Ultra HDR) 图片


Android 现在支持 10 位高动态范围 (HDR) 图像,从而得以更多地保留拍摄照片时传感器捕捉到的信息,带来更鲜艳的色彩和更高的对比度。而且 Android 使用的超强 HDR 格式完全向后兼容 JPEG,应用可以无缝使用 HDR 图像,根据需要使用标准动态范围来呈现它们。您只需在应用中指定其 Activity 窗口使用 HDR 界面功能,比如通过应用清单设置或在运行时调用 Window.setColorMode,框架便会自动将界面中的这些图像以 HDR 来呈现。


  • 超强 HDR 图像格式 v0.9.1
    https://developer.android.google.cn/guide/topics/media/hdr-image-format

  • 以广色域模式显示 Activity
    https://developer.android.google.cn/guide/topics/manifest/activity-element#colormode

  • Window.setColorMode
    https://developer.android.google.cn/reference/android/view/Window#setColorMode%28int%29


您还可以在支持的设备上拍摄 10 位压缩静态图像。由于从传感器中保留了更多的颜色,后期编辑时可以更加灵活。您还可以使用与超强 HDR 图像关联的 Gainmap 在 OpenGL 或 Vulkan 中渲染图像。


  • JPEG_R 格式
    https://developer.android.google.cn/reference/android/graphics/ImageFormat#JPEG_R

  • Gainmap
    https://developer.android.google.cn/reference/android/graphics/Gainmap



升级相机扩展的缩放、对焦、后视等功能



Android 14 升级和改进了相机扩展功能,让应用支持更长的处理时间,通过计算密集型算法改善成像品质,比如在支持的设备上使用微光拍摄。

  • 相机扩展
    https://developer.android.google.cn/training/camera/camera-extensions


通过这些改进,用户在使用相机扩展功能时会获得更强大的体验,包括:
  • 静态拍照处理延迟动态预估能基于当前场景和环境条件更准确地预估静态拍照的延迟。调用 CameraExtensionSession.getRealtimeStillCaptureLatency() 来获得 StillCaptureLatency 对象,该对象有两个延迟估计方法: getCaptureLatency() 方法会返回从 onCaptureStarted() 到 onCaptureProcessStarted() 之间的延迟预估,而 getProcessingLatency() 方法则返回从 onCaptureProcessStarted() 到生成最终处理帧之间的延迟预估。


  • CameraExtensionSession.getRealtimeStillCaptureLatency()
    https://developer.android.google.cn/reference/android/hardware/camera2/CameraExtensionSession#getRealtimeStillCaptureLatency%28%29

  • StillCaptureLatency
    https://developer.android.google.cn/reference/android/hardware/camera2/CameraExtensionSession.StillCaptureLatency

  • getCaptureLatency()
    https://developer.android.google.cn/reference/android/hardware/camera2/CameraExtensionSession.StillCaptureLatency#getCaptureLatency%28%29


  • 支持拍摄进度回调,这样应用可以显示长时间静态拍照处理的进度。您可以使用 CameraExtensionCharacteristics.isCaptureProcessProgressAvailable() 来查看此功能是否可用,如果可用的话,实现 onCaptureProcessProgressed() 回调后即可以参数传递的方式获得进度值 (0 到 100)。


  • CameraExtensionCharacteristics.isCaptureProcessProgressAvailable()
    https://developer.android.google.cn/reference/android/hardware/camera2/CameraExtensionCharacteristics#isCaptureProcessProgressAvailable%28int%29

  • onCaptureProcessProgressed()
    https://developer.android.google.cn/reference/android/hardware/camera2/CameraExtensionSession.ExtensionCaptureCallback#onCaptureProcessProgressed%28android.hardware.camera2.CameraExtensionSession,%20android.hardware.camera2.CaptureRequest,%20int%29


  • 支持扩展功能特定的元数据,如 CaptureRequest.EXTENSION_STRENGTH,用于调整扩展效果的取值,如使用 EXTENSION_BOKEH 时的背景模糊程度。


  • CaptureRequest.EXTENSION_STRENGTH
    https://developer.android.google.cn/reference/android/hardware/camera2/CaptureRequest#EXTENSION_STRENGTH

  • EXTENSION_BOKEH
    https://developer.android.google.cn/reference/android/hardware/camera2/CameraExtensionCharacteristics#EXTENSION_BOKEH


  • 支持相机扩展静态拍照的后视 (Postview) 功能,相比最终成像,该功能可以更快地提供一张少量处理过的图像。如果一个扩展的处理带来更多的延迟,可以先提供一张后视图像来占位,以改善用户体验,并在稍后替换成最终图像。您可以先用 CameraExtensionCharacteristics.isPostviewAvailable() 来查看这个功能是否可用,然后将一个 OutputConfiguration 传给 ExtensionSessionConfiguration.setPostviewOutputConfiguration()。


  • CameraExtensionCharacteristics.isPostviewAvailable()
    https://developer.android.google.cn/reference/android/hardware/camera2/CameraExtensionCharacteristics#isPostviewAvailable%28int%29

  • OutputConfiguration
    https://developer.android.google.cn/reference/android/hardware/camera2/params/OutputConfiguration

  • ExtensionSessionConfiguration.setPostviewOutputConfiguration()
    https://developer.android.google.cn/reference/android/hardware/camera2/params/ExtensionSessionConfiguration#setPostviewOutputConfiguration%28android.hardware.camera2.params.OutputConfiguration%29


  • 支持 SurfaceView,带来更优化、更节能的预览渲染路径:
    https://developer.android.google.cn/reference/android/view/SurfaceView

  • 在使用扩展功能时支持点击对焦和缩放。


传感器内缩放


如果 CameraCharacteristics 的 REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE 包含 SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW,则您的应用可以通过调用 CaptureRequest 并指定一个 RAW 目标对象,其数据流用例设为 CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW,来使用高级传感器功能为裁切过的 RAW 数据流提供和全视角相同的像素数。实现控件覆盖请求后,更新后的相机甚至能在其他相机控件就绪之前就为用户提供缩放控制功能。


  • CameraCharacteristics
    https://developer.android.google.cn/reference/android/hardware/camera2/CameraCharacteristics

  • REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE
    https://developer.android.google.cn/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE

  • SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
    https://developer.android.google.cn/reference/android/hardware/camera2/CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW

  • CaptureRequest
    https://developer.android.google.cn/reference/android/hardware/camera2/CaptureRequest

  • CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
    https://developer.android.google.cn/reference/android/hardware/camera2/CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW


无损 USB 音频


Android 14 现在支持无损音频格式,让您可以通过 USB 有线耳机获得发烧友级别的体验。您可以查询 USB 设备的首选混音器属性,为该属性的变化注册一个监听器,然后使用新的 AudioMixerAttributes 类来配置混音器属性。这个类提供了格式的详细信息,比如通道掩码、采样率和混音器行为,而且支持音频直传,即不提供混音、音量调节和后期效果。我们正在和 OEM 合作伙伴们一起努力,在今年晚些时候将这个功能实装到设备上。

  • AudioMixerAttributes
    https://developer.android.google.cn/reference/android/media/AudioMixerAttributes

  • 音频直传
    https://developer.android.google.cn/reference/android/media/AudioMixerAttributes#MIXER_BEHAVIOR_BIT_PERFECT



更多图像功能



Android 14 增加了先进的图形功能,可在 Canvas 层级活用复杂的 GPU 功能。


带有顶点和片段着色器的自定义网格


长期以来,Android 都支持绘制带有自定义着色的三角形网格,但支持的网格格式一直存在限制,仅限于一些预定义的属性组合。Android 14 增加了对自定义网格的支持,这些网格可以被定义为三角形或三角形带,如果您需要的话还能支持索引。这些网格是用 AGSL 编写的,包含自定义属性、顶点跨度、varying 变量和顶点/片段着色器。顶点着色器定义了 varying,如位置和颜色,片段着色器则可以选择性地定义像素的颜色,通常是使用顶点着色器创建的 varying 变量。如果颜色是由片段着色器提供的,那么在绘制网格时会使用选择好的混合模式与当前的 Paint 颜色进行混合。如果您需要更多的灵活性,可以将 uniform 变量传递给片段和顶点着色器。


  • 自定义网格
    https://developer.android.google.cn/reference/kotlin/android/graphics/Mesh

  • 三角形
    https://developer.android.google.cn/reference/kotlin/android/graphics/Mesh?#TRIANGLES:kotlin.Int

  • 三角形带
    https://developer.android.google.cn/reference/kotlin/android/graphics/Mesh?#triangle_strip

  • AGSL
    https://developer.android.google.cn/develop/ui/views/graphics/agsl

  • 网格定义
    https://developer.android.google.cn/reference/kotlin/android/graphics/MeshSpecification

  • 自定义属性
    https://developer.android.google.cn/reference/kotlin/android/graphics/MeshSpecification.Attribute

  • Varying
    https://developer.android.google.cn/reference/kotlin/android/graphics/MeshSpecification.Varying

  • 绘制网格
    https://developer.android.google.cn/reference/android/graphics/Canvas.html#drawMesh%28android.graphics.Mesh,%20android.graphics.BlendMode,%20android.graphics.Paint%29

  • 混合模式
    https://developer.android.google.cn/reference/kotlin/android/graphics/BlendMode

  • Paint
    https://developer.android.google.cn/reference/android/graphics/Paint

  • Uniform
    https://developer.android.google.cn/reference/android/graphics/Mesh#setFloatUniform%28java.lang.String,%20float[]%29


Canvas 硬件缓冲渲染器


Android 14 引入了 HardwareBufferRenderer,让 Android 的 Canvas API 在 HardwareBuffer 中绘制时得以使用硬件加速功能。当您的用例涉及到通过 SurfaceControl 与系统合成器通信以实现低延迟绘制时,此功能会特别有用。


  • HardwareBufferRenderer
    https://developer.android.google.cn/reference/android/graphics/HardwareBufferRenderer

  • Canvas
    https://developer.android.google.cn/reference/android/graphics/Canvas

  • HardwareBuffer
    https://developer.android.google.cn/reference/android/hardware/HardwareBuffer

  • SurfaceControl
    https://developer.android.google.cn/reference/android/view/SurfaceControl



隐私



Android 14 继续关注隐私保护,并推出全新功能让用户对自己的数据及其共享操作有更多的控制权和可见性。

Health Connect


Health Connect 是存放用户健康和健身数据的设备端内容库。用户可以通过这个库在他们喜爱的应用之间共享数据,而且提供了统一的入口来管理数据的分享范围。


Health Connect 目前在 Google Play 商店作为一个应用提供下载。从 Android 14 开始,Health Connect 成为了平台的一部分,可以通过 Google Play 系统更新进行升级,不再需要单独下载。如此一来,Health Connect 可以经常获得更新,您的应用也可以在 Android 14 及以上的设备上放心使用 Health Connect。用户可以通过设备的系统设置访问 Health Connect,其隐私控制集成在系统设置中。


Health Connect 现在支持运动路线,用户可以分享他们的运动路线,并在地图上查看。路线被定义为在一个时间窗口内记录的位置列表,您的应用可以将路线插入到健身计划中,将二者联系在一起。为了确保用户完全控制这些敏感数据,在与其他应用分享路线时需要用户按路线分别授权。


这次的发布可不止这些!请大家参阅观 "Android Health 最新进展" 博文了解 Health Connect 的详细信息:

https://android-developers.googleblog.com/2023/05/whats-new-in-android-health.html

数据分享更新


我们在位置信息的运行时授权对话框中新增了一块描述,来突出显示应用与第三方共享位置数据的情况。用户可以了解更多信息并控制应用对数据的访问。这些描述信息来自 Google Play 管理中心的数据安全表单。其他应用商店也将能够提供一个机制来呈现这些信息。我们鼓励开发者审查应用的位置数据共享政策,并对应用的数据安全信息进行更新以确保其符合实际情况。此变更将很快发布。


  • Google Play 管理中心
    https://developer.android.google.cn/distribute/console

  • 数据安全表单
    https://support.google.com/googleplay/android-developer/answer/10787469


此外,如果有位置权限的应用改变了其数据共享方案,开始与第三方共享这些数据,用户将定期得到通知。


新的位置数据共享变更页面将被添加进系统设置页面。


安全的全屏 Intent 通知


从 Android 11 (API 级别 30) 开始,任何应用都可以使用 Notification.Builder#sendFullScreenIntent 来在手机锁定时发送全屏 Intent。您可以通过在 Android 应用清单中声明 USE_FULL_SCREEN_INTENT 来在应用安装时自动获得该权限。


  • Notification.Builder#sendFullScreenIntent
    https://developer.android.google.cn/reference/android/app/Notification.Builder#setFullScreenIntent%28android.app.PendingIntent,%20boolean%29

  • USE_FULL_SCREEN_INTENT
    https://developer.android.google.cn/reference/android/Manifest.permission#USE_FULL_SCREEN_INTENT


全屏 Intent 通知是针对需要用户立即关注的极高优先级的通知而设计的,如来电或用户设置的闹钟等。从 Android 14 开始,我们将只允许提供通话和闹钟功能的应用在安装时获取该权限。


在用户更新到 Android 14 之前便已安装的应用,该权限会继续有效。用户可以自行开启或关闭这一权限。


您可以使用新的 NotificationManager.canUseScreenIntent API 来检查自己的应用是否有被授予这个权限。如果没有,则可以使用新的 ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT Intent 来启动设置页面以让用户授权。


  • NotificationManager.canUseScreenIntent
    https://developer.android.google.cn/reference/android/app/NotificationManager#canUseFullScreenIntent%28%29

  • ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT
    https://developer.android.google.cn/reference/android/provider/Settings#ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT



系统界面



预测性返回 (Predictive Back)


△ Material 组件搜索动画

随着 Android 14 Beta 2 的发布,我们带来了多项改进和新的规范,以帮助大家在应用的 Activity 之间导航时呈现更流畅的动画:
  • 您可以设置 android:enableOnBackInvokedCallback=true 来为每个 Activity (而不是整个应用) 来单独启用预测性返回系统动画。
  • 我们为底部表单、侧面表单和搜索添加了新的 Material 组件动画。
  • 我们为自定义应用内动画和转场准备了设计指南。
  • 我们提供了新 API 来支持自定义应用内转场动画:
    • OnBackPressedCallback 的 handleOnBackStarted, handleOnBackProgressed, handleOnBackCancelled
    • OnBackAnimationCallback 的 onBackStarted、onBackProgressed、onBackCancelled
    • 用 overrideActivityTransition 来替代 overridePendingTransition,用于处理用户滑动返回时的过场效果

  • android:enableOnBackInvokedCallback=true
    https://developer.android.google.cn/reference/android/R.attr.html#enableOnBackInvokedCallback

  • 底部表单
    https://m3.material.io/components/bottom-sheets/guidelines#3d7735e2-73ea-4f3e-bd42-e70161fc1085

  • 侧面表单
    https://m3.material.io/components/side-sheets/guidelines#d77245e3-1013-48f8-a9d7-76f484e1be13

  • 搜索
    https://m3.material.io/components/search/guidelines#3f2d4e47-2cf5-4c33-b6e1-5368ceaade55

  • 预测性返回动画设计指南
    http://developer.android.google.cn/design/ui/mobile/guides/patterns/predictive-back

  • OnBackPressedCallback
    https://developer.android.google.cn/reference/androidx/activity/OnBackPressedCallback#OnBackPressedCallback%28kotlin.Boolean%29

  • handleOnBackStarted
    https://developer.android.google.cn/reference/androidx/activity/OnBackPressedCallback#handleOnBackStarted%28android.window.BackEvent%29

  • handleOnBackProgressed
    https://developer.android.google.cn/reference/androidx/activity/OnBackPressedCallback#handleOnBackProgressed%28android.window.BackEvent%29

  • handleOnBackCancelled
    https://developer.android.google.cn/reference/androidx/activity/OnBackPressedCallback#handleOnBackCancelled%28%29

  • OnBackAnimationCallback
    https://developer.android.google.cn/reference/kotlin/android/window/OnBackAnimationCallback

  • onBackStarted
    https://developer.android.google.cn/reference/kotlin/android/window/OnBackAnimationCallback#onbackstarted

  • onBackProgressed
    https://developer.android.google.cn/reference/kotlin/android/window/OnBackAnimationCallback#onbackprogressed

  • onBackCancelled
    https://developer.android.google.cn/reference/kotlin/android/window/OnBackAnimationCallback#onbackcancelled

  • overrideActivityTransition
    https://developer.android.google.cn/reference/android/app/Activity#overrideActivityTransition%28int,%20int,%20int,%20int%29

  • overridePendingTransition
    https://developer.android.google.cn/reference/android/app/Activity#overridePendingTransition%28int,%20int%29


在 Android 14 Beta 2 中,所有预测性返回动画功能依然在开发者选项里。请参阅开发者指南了解如何让应用支持预测性返回,以及如何创建自定义应用内转场动画。


  • 添加对预测性返回手势的支持
    https://developer.android.google.cn/guide/navigation/predictive-back-gesture



应用兼容性



随着 Beta 2 的发布,我们距离 2023 年 6 月的平台稳定性里程碑只有一步之遥,届时我们将得到最终版本的 Android 14 SDK 和 NDK API,面向应用的系统行为也将最终确定。现在 Android 14 Beta 版已经可以在更多的设备上运行,您将在接下来的几周看到更多用户在 Android 14 上体验您的应用,并提交他们发现的问题。

要进行兼容性测试,请在运行 Android 14 Beta 版的设备或模拟器上安装您的正式版应用,并测试应用的所有流程。请通过行为变更清单来确定测试重点。在解决所有发现的问题后,请尽快发布应用的更新。


  • 行为变更 (针对所有应用)
    https://developer.android.google.cn/about/versions/14/behavior-changes-all


现在也可以开始准备将应用的目标平台升级至 Android 14 了,只需使用开发者选项中的应用兼容性开关进行测试即可。

△ 开发者选项中的应用兼容性开关



即刻体验 Android 14



不论您是想体验 Android 14 的功能、测试应用还是提交反馈,都可以从这次的 Beta 2 开始。您还可以使用我们合作伙伴的设备来测试应用在平板电脑和可折叠设备上的表现,不过最简单的方法还是使用 Android Studio SDK 管理器最新预览版中安装了 64 位系统映像的 Android 模拟器中的 Pixel Tablet 或 Pixel Fold 配置进行测试。您还可以直接使用支持的 Pixel 设备参与测试,并通过 OTA 方式获得本次以及将来的 Android 14 Beta 版 (包括功能更新)。


  • 反馈与需求

    https://developer.android.google.cn/about/versions/14/feedback

  • 安装 SDK

    https://developer.android.google.cn/about/versions/14/setup-sdk#install-sdk

  • 参与 Beta 版测试
    https://www.google.com/android/beta


为了获得最佳的 Android 14 开发体验,我们建议您使用 Android Studio Hedgehog 的最新版本。


  • Android Studio Hedgehog
    https://developer.android.google.cn/studio/preview


设置好 SDK 后,您可以:
  • 体验新功能和 API - 在我们打磨及确定 API 的过程中,您的反馈至关重要。您可以在我们的跟踪页报告问题。
  • 测试应用的兼容性 - 测试您的应用是否受到 Android 14 默认行为变更的影响。请将应用安装到运行 Android 14 的设备或模拟器上进行彻底的测试。
  • 使用可选变更项测试应用 - Android 14 提供了可选的行为变更,这些变更仅在您的应用以新平台为目标时才会造成影响。尽早了解和评估这些变更十分重要。为了便于测试,您可以单独启用或者禁用这些变更。

  • 设置 Android 14 SDK

    https://developer.android.google.cn/about/versions/14/setup-sdk

  • 兼容性框架变更 (Android 14)
    https://developer.android.google.cn/about/versions/14/reference/compat-framework-changes


我们将在整个 Android 14 的发布周期内定期更新预览版和 Beta 版系统映像和 SDK。

请访问 Android 14 开发者网站了解如何获取 Beta 版等详细信息:

https://developer.android.google.cn/about/versions/14


欢迎您点击文末 "发消息" 向我们提交关于 Android 14 的反馈,或分享您对 "Android 开发者" 公众号的意见、建议,以及您希望在此看到的内容。


我们将从发送消息的微信粉丝中随机选择 5 位送出开发者礼品一组。






*开发者礼品: Android 糖果笔、Google Play 糖果笔、Android 公仔盲盒、Android 贴纸。

*获奖者仅限给 "Android 开发者" 发送消息的微信粉丝。

*本次活动同一微信用户不可重复中奖。

*我们会通过私信联系获奖的朋友,请届时关注微信消息。



推荐阅读

如页面未加载,请刷新重试

 点击屏末 | 阅读原文 | 进一步了解 Android 14 详细更新




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存