在 I/O 看未来 | 丰富多彩,Android 14 Beta 2 发布
The following article is from Android 开发者 Author Android
Google I/O 的大幕已经
Google I/O
https://io.google/2023/
Android 精彩演讲
https://io.google/2023/program/?q=android,mobile
参与 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
现已支持更多设备
合作伙伴的设备
https://developer.android.google.cn/about/versions/14/devices
高质量相机和媒体体验
超强 HDR (Ultra 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
JPEG_R 格式
https://developer.android.google.cn/reference/android/graphics/ImageFormat#JPEG_R
Gainmap
https://developer.android.google.cn/reference/android/graphics/Gainmap
升级相机扩展的缩放、对焦、后视等功能
相机扩展
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_CASEhttps://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 音频
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 功能。
带有顶点和片段着色器的自定义网格
自定义网格
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 硬件缓冲渲染器
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
隐私
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 的详细信息:
数据分享更新
我们在位置信息的运行时授权对话框中新增了一块描述,来突出显示应用与第三方共享位置数据的情况。用户可以了解更多信息并控制应用对数据的访问。这些描述信息来自 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: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
应用兼容性
行为变更 (针对所有应用)
https://developer.android.google.cn/about/versions/14/behavior-changes-all
现在也可以开始准备将应用的目标平台升级至 Android 14 了,只需使用开发者选项中的应用兼容性开关进行测试即可。
△ 开发者选项中的应用兼容性开关
即刻体验 Android 14
反馈与需求
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
体验新功能和 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
https://developer.android.google.cn/about/versions/14
在微信和微博平台搜索 "谷歌开发者"
关注官方账号