作者 / 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/betaAndroid 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#colormodeWindow.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_RGainmap
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%29StillCaptureLatency
https://developer.android.google.cn/reference/android/hardware/camera2/CameraExtensionSession.StillCaptureLatencygetCaptureLatency()
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%29onCaptureProcessProgressed()
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_STRENGTHEXTENSION_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%29OutputConfiguration
https://developer.android.google.cn/reference/android/hardware/camera2/params/OutputConfigurationExtensionSessionConfiguration.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/CameraCharacteristicsREQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE
https://developer.android.google.cn/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASESCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
https://developer.android.google.cn/reference/android/hardware/camera2/CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAWCaptureRequest
https://developer.android.google.cn/reference/android/hardware/camera2/CaptureRequestCameraMetadata.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_stripAGSL
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.AttributeVarying
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/BlendModePaint
https://developer.android.google.cn/reference/android/graphics/PaintUniform
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/HardwareBufferRendererCanvas
https://developer.android.google.cn/reference/android/graphics/CanvasHardwareBuffer
https://developer.android.google.cn/reference/android/hardware/HardwareBufferSurfaceControl
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%29USE_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%29ACTION_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-backOnBackPressedCallback
https://developer.android.google.cn/reference/androidx/activity/OnBackPressedCallback#OnBackPressedCallback%28kotlin.Boolean%29handleOnBackStarted
https://developer.android.google.cn/reference/androidx/activity/OnBackPressedCallback#handleOnBackStarted%28android.window.BackEvent%29handleOnBackProgressed
https://developer.android.google.cn/reference/androidx/activity/OnBackPressedCallback#handleOnBackProgressed%28android.window.BackEvent%29handleOnBackCancelled
https://developer.android.google.cn/reference/androidx/activity/OnBackPressedCallback#handleOnBackCancelled%28%29OnBackAnimationCallback
https://developer.android.google.cn/reference/kotlin/android/window/OnBackAnimationCallbackonBackStarted
https://developer.android.google.cn/reference/kotlin/android/window/OnBackAnimationCallback#onbackstartedonBackProgressed
https://developer.android.google.cn/reference/kotlin/android/window/OnBackAnimationCallback#onbackprogressedonBackCancelled
https://developer.android.google.cn/reference/kotlin/android/window/OnBackAnimationCallback#onbackcancelledoverrideActivityTransition
https://developer.android.google.cn/reference/android/app/Activity#overrideActivityTransition%28int,%20int,%20int,%20int%29overridePendingTransition
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 详细更新