# What's new in Android

https://www.youtube.com/watch?v=8PxuWdjESfg
Translation: zh-CN

[00:06] Hello and welcome to what's new in Android, your guided tour of the latest and greatest changes in Android development.
  大家好，欢迎收看Android新动态，这是您了解Android开发最新、最棒变化的导览。

[00:14] We're going to highlight some of the ways we're helping you build delightful, performant, and intelligent apps all while keeping users safe.
  我们将重点介绍一些帮助您构建令人愉悦、高性能、智能的应用程序的方法，同时确保用户安全。

[00:22] We're going to cover how Android is evolving from an operating system into an intelligent system and how your app can leverage this shift to deliver more proactive and helpful and context-aware experiences.
  我们将介绍Android如何从一个操作系统演变成一个智能系统，以及您的应用程序如何利用这一转变来提供更主动、更有帮助、更具情境感知能力的体验。

[00:37] We need that.
  我们需要这个。

[00:39] We'll dive into performance.
  我们将深入探讨性能。

[00:41] It's no secret we're seeing a shift where device memory is more important than ever.
  众所周知，我们正经历一个设备内存比以往任何时候都更重要的转变。

[00:46] Not only have we made strides in memory optimizations in Android 17, we're providing the tooling and API support to help you stay ahead of stricter memory requirements later this year.
  我们不仅在Android 17的内存优化方面取得了长足的进步，还提供了工具和API支持，帮助您在今年晚些时候满足更严格的内存要求。

[00:56] We'll also cover cover improvements in media, camera, and GPU capabilities and how to build adaptive
  我们还将涵盖媒体、相机和GPU功能方面的改进，以及如何构建自适应的

[01:03] apps for the expanding ecosystem from XR to cars to premium laptops.
  适用于不断扩展的生态系统的应用，从XR到汽车再到高端笔记本电脑。

[01:10] But we'll start with the latest updates to our recommended native stack of Kotlin, Jetpack, and my favorite, Jetpack Compose.
  但我们将从我们推荐的原生技术栈的最新更新开始，包括Kotlin、Jetpack，以及我最喜欢的Jetpack Compose。

[01:21] NOW, THIS STACK delivers you the most performant and device optimized experience whether you're developing in Android Studio or developing through Android CLI.
  现在，这个技术栈无论您是在Android Studio中开发还是通过Android CLI开发，都能为您提供性能最优、设备最优的体验。

[01:28] It gives you direct access to the latest updates straight from us like new platform APIs and we support it with great tools.
  它让您可以直接从我们这里获取最新更新，例如新的平台API，并且我们用强大的工具支持它。

[01:36] So, this stack makes sure that you are ready for any new opportunities such as new form factors or for new platform APIs.
  因此，这个技术栈确保您已准备好应对任何新的机遇，例如新的外形尺寸或新的平台API。

[01:46] In the five years that we've been developing Jetpack Compose, we've been working hard to give you all of the features, performance, and tools that you need to build beautiful UIs that run across the variety of Android devices.
  在过去五年我们开发Jetpack Compose的过程中，我们一直在努力为您提供构建可在各种Android设备上运行的美观UI所需的所有功能、性能和工具。

[01:58] And you've told us that you're far more productive when working with Compose.
  您告诉我们，在使用Compose时，您的工作效率大大提高。

[02:02] Compose has matured into the standard
  Compose已经成熟为标准

[02:04] For building Android UI.
  用于构建 Android UI。

[02:08] And we believe that all Android UI should now be built with Jetpack Compose.
  我们相信所有 Android UI 现在都应该使用 Jetpack Compose 构建。

[02:11] We call this going Compose first.
  我们称之为 Compose 优先。

[02:16] So, from now on, we're going to be providing all APIs, libraries, tools, and guidance in Compose.
  因此，从现在开始，我们将提供 Compose 中的所有 API、库、工具和指南。

[02:21] And we consider the view components that Compose replaces to now be in maintenance mode.
  我们认为 Compose 取代的视图组件现在处于维护模式。

[02:32] But But don't worry.
  但是，但是请不要担心。

[02:32] Like, we'd have no plans to deprecate or remove view components just yet.
  比如，我们目前还没有计划弃用或删除视图组件。

[02:42] You're not supposed to laugh at that.
  你不应该对此发笑。

[02:44] But they will receive no new features and will only be shipping critical bug fixes to them from now on.
  但它们将不会收到新功能，并且从现在起只会收到关键的错误修复。

[02:50] The same goes for view-based libraries like fragments, RecyclerView, and material view components.
  对于像 fragments、RecyclerView 和 material view components 这样的基于视图的库也是如此。

[02:54] We consider them to be complete, and they too will only receive critical features uh critical bug fixes, sorry, um as we focus all of our efforts on Jetpack Compose.
  我们认为它们已经完成，并且它们也将只收到关键功能，呃，关键错误修复，抱歉，嗯，因为我们将所有精力都集中在 Jetpack Compose 上。

[03:05] We believe that all Android UI should now be built with Compose, and that you should consider converting existing UI to Compose as you touch it to receive the many benefits of Compose.
  我们相信所有 Android UI 都应该用 Compose 构建，并且您在接触现有 UI 时应考虑将其转换为 Compose，以获得 Compose 的诸多好处。

[03:15] To help you to convert, and in addition to the skill that we've already launched to help you convert XML to Compose, we're also working on some new tools in Android Studio.
  为了帮助您转换，除了我们已经推出的帮助您将 XML 转换为 Compose 的技能之外，我们还在 Android Studio 中开发一些新工具。

[03:25] Now, these tools use the knowledge of your um Android project in order to augment the agent to help it to convert your UI.
  现在，这些工具利用您 Android 项目的知识来增强代理，以帮助它转换您的 UI。

[03:31] Things like deterministically understanding the styles and the resources that your layouts reference, or creating screenshot tests to help you to compare the before and after and ensure that you're getting a good conversion.
  例如，确定性地理解您的布局引用的样式和资源，或者创建屏幕截图测试以帮助您比较转换前后的差异并确保您获得良好的转换。

[03:44] These will be coming to Android Studio soon.
  这些将很快在 Android Studio 中推出。

[03:46] And to learn more, check out the what's new in DevTools talk coming up later.
  要了解更多信息，请查看稍后举行的 DevTools 新功能讲座。

[03:53] The recent The recent Compose 1.10 and 1.11 releases added a whole raft of new features.
  最近的 Compose 1.10 和 1.11 版本增加了一系列新功能。

[03:57] From the retain API to more deterministic testing APIs, improvements to shared element transitions, and new text field
  从保留 API 到更确定的测试 API，再到共享元素转换的改进，以及新的文本字段

[04:05] Features.
  功能。

[04:07] One of the larger changes that I'm really excited about is a new styles API, which is experimental in Compose 1.11.
  我非常期待的一个重大变化是新的样式API，它在Compose 1.11中是实验性的。

[04:12] Now, we've heard your feedback that you want more customization of components.
  现在，我们听到了您的反馈，您希望对组件进行更多自定义。

[04:18] The styles API defines a standardized set of styleable attributes, which help you to separate the anatomy of a component's behavior from its appearance.
  样式API定义了一套标准化的可样式化属性，帮助您将组件行为的解剖结构与其外观分离开来。

[04:28] So, we think you can use this to make much more easier customization of the components.
  所以，我们认为您可以使用它来更轻松地自定义组件。

[04:33] Styles has built-in support for different states, even letting you animate state changes, so you can build much more responsive components.
  样式内置了对不同状态的支持，甚至允许您为状态更改设置动画，因此您可以构建更具响应性的组件。

[04:41] And it's performant out of the box, automatically minimizing recompositions for you.
  而且它开箱即用，性能优越，为您自动最小化重组。

[04:47] So, we're working on styles, and we'd love your feedback as we continue to build this out.
  所以，我们正在开发样式，并希望在继续构建此功能的过程中获得您的反馈。

[04:50] And we plan to add style support to our material components in a future release.
  我们计划在未来的版本中为我们的材质组件添加样式支持。

[05:01] Uh for more details, I highly encourage you to check out this talk on the style
  有关更多详细信息，我强烈建议您查看有关样式的本次讲座

[05:05] System.
  系统。

[05:07] So, Compose not only helps you to build a more stylish app, but it also can help it be performant.
  因此，Compose不仅能帮助您构建更具风格的应用程序，还能帮助它提高性能。

[05:12] In our latest release, Compose 1.11, we're seeing even better performance across key CUJs, like scroll jank, startup speed, and even on in hybrid UIs where you interleave views and Compose.
  在我们最新的Compose 1.11版本中，我们看到关键用户旅程的性能得到了进一步提升，例如滚动卡顿、启动速度，甚至在混合UI中，当您交错使用视图和Compose时。

[05:24] To back this up, we're releasing a new suite of benchmarks, which compare real-world app performance between views and Compose.
  为了支持这一点，我们发布了一套新的基准测试，用于比较视图和Compose之间的真实应用性能。

[05:30] These are open source, so you can check them out and verify the results for yourself.
  这些是开源的，所以您可以自行查看并验证结果。

[05:35] And best of all, you get most of these benefits just by upgrading the Compose version.
  最棒的是，您只需升级Compose版本即可获得大部分这些好处。

[05:39] So, make sure that you're using the latest release.
  所以，请确保您使用的是最新版本。

[05:43] And it's not just benchmarks.
  这不仅仅是基准测试。

[05:44] We see this in production, too.
  我们在生产环境中也看到了这一点。

[05:46] In fact, TikTok told us that they that they expressive compose APIs help them to rewrite a number of their screens into compose.
  事实上，TikTok告诉我们，他们富有表现力的Compose API帮助他们将许多屏幕重写为Compose。

[05:54] And this not only made their code more maintainable, but they also saw performance improvements, seeing a reduction in page load time of up to 20 to 30% and in one case they saw a huge 78%
  这不仅使他们的代码更易于维护，而且他们还看到了性能的提升，页面加载时间减少了高达20%到30%，在一种情况下，他们看到了高达78%的提升。

[06:05] Speed up.
  加快速度。

[06:07] And speaking of performance, R8 is a critical tool for streamlining your app.
  说到性能，R8 是一个用于简化应用程序的关键工具。

[06:12] It helps to remove unused code and resources and can rewrite code to optimize startup and runtime performance.
  它有助于删除未使用的代码和资源，并可以重写代码以优化启动和运行时性能。

[06:19] But we've heard from you that it can be hard to know if you're getting the most out of R8.
  但我们从您那里得知，可能很难知道您是否充分利用了 R8。

[06:24] Um, wait, let me go back.
  嗯，等等，让我回去。

[06:26] Um, so for example, Grab um had huge impact by enabling R8 on their 9 million line code base.
  嗯，所以举个例子，Grab 通过在其 900 万行代码库上启用 R8 产生了巨大影响。

[06:32] Doing so, they saw a 25% reduction in ANRs and a 16% um reduction in APK size.
  这样做，他们看到了 ANR 减少了 25%，APK 尺寸减少了 16%。

[06:41] And in conjunction with reworking their baseline and startup profile, they also saw a 27% reduction in startup time.
  并且结合他们重构的基线和启动配置文件，他们还看到了启动时间减少了 27%。

[06:49] So, you know, R8 is pretty great, but we have heard from you that it can be hard to know if you're getting the most out of it.
  所以，你知道，R8 非常棒，但我们从您那里得知，可能很难知道您是否充分利用了它。

[06:54] And to that end, we're bringing new R8 insights into the Play Console to help you to identify opportunities to improve.
  为此，我们将新的 R8 洞察引入 Play Console，以帮助您识别改进的机会。

[07:01] These are going to start rolling out from today and more widely later this year.
  这些将从今天开始推出，并在今年晚些时候更广泛地推出。

[07:06] And to help you to act on these insights, we also have launched the R8 configuration analyzer.
  为了帮助您根据这些见解采取行动，我们还推出了 R8 配置分析器。

[07:12] So, this is a tool that runs a report and will give you a score for how effective your optimization obfuscation and resource shrinking is and it helps you to spot opportunities to further shrink your app.
  所以，这是一个运行报告的工具，它会给您一个关于您的优化混淆和资源收缩的有效性得分，并帮助您发现进一步缩小应用程序的机会。

[07:25] Um for example, it might help you to find some keep rules which are overly broad which might be thwarting some of R8's optimizations.
  嗯，例如，它可能有助于您找到一些过于宽泛的保留规则，这些规则可能会阻碍 R8 的一些优化。

[07:34] For example, Tinder had already invested in using R8 and see many benefits.
  例如，Tinder 已经投入使用 R8 并看到了许多好处。

[07:38] But by using the configuration analyzer, they were able to find a problematic keep rule.
  但通过使用配置分析器，他们能够找到一个存在问题的保留规则。

[07:41] Now, removing this one single keep rule, they saw a reduction in their APK size of 28% and they reduced their ANR and cold start rates as well.
  现在，移除这一个保留规则，他们的 APK 大小减少了 28%，并且他们还降低了 ANR 和冷启动率。

[07:52] And we're also publishing a new skill to help AI agents to work with R8.
  我们还将发布一项新技能，以帮助 AI 代理与 R8 协同工作。

[07:58] Um so, this skill works with the configuration analyzer and it helps you to get the most out of R8.
  嗯，所以，这项技能与配置分析器协同工作，并帮助您充分利用 R8。

[08:04] But, R8 is just a start.
  但是，R8 仅仅是一个开始。

[08:06] Hardware costs and RAM supply constraints are forcing a shift in the device ecosystem where memory management is more important than ever.
  硬件成本和内存供应限制正迫使设备生态系统发生转变，在这种生态系统中，内存管理比以往任何时候都更加重要。

[08:14] Optimizing your app's memory footprint ensures that your app can deliver the best performance across all form factors.
  优化应用的内存占用量可确保您的应用在所有外形规格上都能提供最佳性能。

[08:21] And to ensure that the next generation of devices delivers the premium experience that Android users expect, we'll be partnering with you to optimize how Android manages memory.
  为了确保下一代设备能够提供 Android 用户所期望的高端体验，我们将与您合作，优化 Android 管理内存的方式。

[08:32] Over the coming year, we'll be rolling out new tools to help making building memory efficient apps much simpler.
  在未来一年，我们将推出新的工具，帮助更轻松地构建内存效率高的应用。

[08:39] You can look out for um memory if uh you can look out for actual memory telemetry right in the Play Console alongside smarter debugging tools right in Android Studio.
  您可以在 Play Console 中查看实际内存遥测数据，并在 Android Studio 中查看更智能的调试工具。

[08:49] These updates will help you to stay ahead of the platform shifts to stricter and memory management that are coming later this year.
  这些更新将帮助您领先于今年晚些时候将实施的更严格的内存管理平台转变。

[08:57] With the mission to prevent a bad acting app from significantly degrading user experience, Android 17 introduces memory limits.
  为了防止不良行为的应用严重降低用户体验，Android 17 引入了内存限制。

[09:04] Now, these limits are designed to largely impact apps with runaway
  现在，这些限制旨在对失控的应用产生重大影响

[09:08] Resource problems such as memory leaks.
  诸如内存泄漏之类的资源问题。

[09:12] And if your app's session is actually impacted by these app memory limits, get description and application exit info will contain the string memory limiter.
  如果您的应用会话实际上受到这些应用内存限制的影响，则获取的描述和应用程序退出信息将包含字符串“memory limiter”。

[09:22] And to help you to debug excessive memory usage, Android 17 has a profiling trigger of type anomaly or out of memory to the profiling manager API, which you can use to get app-specific heap dumps to help you to diagnose and to fix memory issues.
  为了帮助您调试过度的内存使用，Android 17 向 profiling manager API 提供了一种异常或内存不足类型的分析触发器，您可以使用它来获取特定于应用的堆转储，以帮助您诊断和修复内存问题。

[09:36] Android 17 also introduces new profiling triggers for type, cold start, and excessive CPU.
  Android 17 还为类型、冷启动和过量 CPU 引入了新的分析触发器。

[09:42] And Leak Canary integration into the Android Studio Profiler can help you to track down memory leaks faster, and you can ask Gemini to help explain the leak and suggest a fix.
  Leak Canary 集成到 Android Studio Profiler 中可以帮助您更快地跟踪内存泄漏，您可以要求 Gemini 帮助解释泄漏并建议修复方法。

[09:53] So, that's a high-level overview of some of the ways that we're helping you to optimize the memory management of your app.
  因此，这是我们帮助您优化应用内存管理的一些方法的概述。

[09:58] You should check out this talk for more details.
  您应该查看本次讲座以获取更多详细信息。

[10:02] So, the platform is also working to reduce memory usage.
  因此，平台也在努力减少内存使用。

[10:04] Uh for example, Android 17 restricts the size of images
  呃，例如，Android 17 限制了图像的大小

[10:09] and notifications with custom views, stripping them out if they exceed certain thresholds.
  以及带有自定义视图的通知，如果它们超过特定阈值，则将其剔除。

[10:15] Now, let me nerd out for a moment.
  现在，让我来深入探讨一下。

[10:17] I could do a whole talk on garbage.
  我可以就垃圾回收做一个完整的演讲。

[10:19] Uh but ART is introducing more frequent, less resource-intensive young generation collections in its GC, and this both improves memory management and performance.
  呃，但是ART在其GC中引入了更频繁、资源消耗更少的年轻代收集，这既改善了内存管理，也提高了性能。

[10:30] And best of all, it's not just available on Android 17, it's also available to over a billion devices through Google Play system updates.
  最棒的是，它不仅在Android 17上可用，还通过Google Play系统更新提供给超过十亿台设备。

[10:37] And so, like, I didn't even know you could modify static final fields on Android using reflection, and now, once you target Android 17, you won't be able to do it anymore.
  所以，就像，我甚至不知道你可以使用反射在Android上修改静态final字段，而现在，一旦你以Android 17为目标，你就不能再这样做了。

[10:47] Uh and this is this is cool because it actually allows ART to more aggressively apply more of those sweet performance optimizations.
  呃，这很酷，因为它实际上允许ART更积极地应用那些出色的性能优化。

[10:53] Just make sure to test your app just in case your app or one of its dependencies relies on this.
  请确保测试您的应用程序，以防您的应用程序或其依赖项之一依赖于此。

[11:01] And believe it or not, I am psyched that Android 17 introduces a new lock-free implementation of the Android message queue.
  信不信由你，我很高兴Android 17引入了Android消息队列的新无锁实现。

[11:09] And I mean, this is awesome.
  我的意思是，这太棒了。

[11:11] reduces UI jank while massively speeding up high contention scenarios, and there is some cool computer science that makes this possible.
  减少了UI卡顿，同时极大地加快了高争用场景的速度，并且有一些很棒的计算机科学使这成为可能。

[11:17] And who doesn't like numbers like up to 5,000 times faster in particularly contentious cases?
  谁不喜欢在特别有争议的情况下快5000倍这样的数字呢？

[11:26] With goals of improved GPU performance and system power efficiency, Android is supporting the Vulcan API as its native GPU API.
  为了提高GPU性能和系统电源效率，Android正在支持Vulcan API作为其本地GPU API。

[11:34] Now, Vulcan is already used directly by high-performance middleware and game engines that want maximum control.
  现在，Vulcan已经被想要最大化控制权的高性能中间件和游戏引擎直接使用。

[11:40] And other APIs like OpenGL and WebGPU are then layered on top of Vulcan.
  像OpenGL和WebGPU这样的其他API则构建在Vulcan之上。

[11:48] I know there's another one.
  我知道还有另一个。

[11:50] There we go.
  好了。

[11:52] With Android 17, many more devices will prosper by using Vulcan to process all graphics commands.
  随着Android 17的发布，将有更多设备通过使用Vulcan处理所有图形命令而受益。

[12:01] If your app or game is still using OpenGL, Angle will translate its OpenGL to Vulcan, and we recommend testing on Angle today to ensure you're ready for the Vulcan transition.
  如果您的应用程序或游戏仍在使用OpenGL，Angle会将您的OpenGL转换为Vulcan，我们建议您今天就在Angle上进行测试，以确保您已为Vulcan过渡做好准备。

[12:11] enabling more ways to access Vulcan.
  使访问 Vulcan 的方式更加多样化。

[12:14] So, for apps to leverage GPU performance, we've built an idiomatic Kotlin API for WebGPU, the modern GPU API designed for managed code environments like ART in the web.
  因此，为了让应用能够利用 GPU 性能，我们为 WebGPU 构建了一个符合习惯的 Kotlin API，WebGPU 是专为 Web 中的 ART 等托管代码环境设计的现代 GPU API。

[12:27] And it's more capable, portable, and concise than older standards.
  它比旧标准更强大、更便携、更简洁。

[12:30] And to get started, just add the Jetpack WebGPU dependency to your project.
  要开始使用，只需将 Jetpack WebGPU 依赖项添加到您的项目中即可。

[12:36] And and for example, the upcoming Adobe Premiere app.
  例如，即将推出的 Adobe Premiere 应用。

[12:40] Yeah. Awesome.
  是的。太棒了。

[12:42] Uses WebGPU along with Jetpack Media3 Transformer for creating and posting things like YouTube Shorts with cool templates and effects.
  使用 WebGPU 和 Jetpack Media3 Transformer 来创建和发布类似 YouTube Shorts 的内容，并带有炫酷的模板和效果。

[12:52] To help you get the most of GPU, CPU, memory, and battery, and more, the new Android Performance Analyzer unifies our system-wide insights into a single cohesive tool chain, which can drastically drastically simplify performance debugging.
  为了帮助您充分利用 GPU、CPU、内存、电池等资源，新的 Android Performance Analyzer 将我们全系统的洞察力统一到一个连贯的工具链中，这可以极大地简化性能调试。

[13:05] Engineered for speed, the analyzer is up to 26 times faster at loading and rendering traces than the original GPU
  该分析器专为速度而设计，在加载和渲染跟踪方面比原始 GPU 快 26 倍。

[13:11] Inspector, while maintaining broad GPU compatibility.
  检查器，同时保持广泛的GPU兼容性。

[13:13] And it runs either as a standalone utility or within the Studio Profiler.
  它可以作为独立实用程序运行，也可以在Studio Profiler中运行。

[13:20] And some of our partners are seeing great success with these new performance analyzer.
  我们的一些合作伙伴在使用这些新的性能分析器方面取得了巨大成功。

[13:23] Netmarble reduced the GPU usage by up to 90% in The Seven Deadly Sins: Origins and The Forge reduced per frame CPU usage in key Vulcan APIs by up to 50%.
  Netmarble在《七大罪：起源》中将GPU使用率降低了高达90%，而The Forge在关键的Vulcan API中将每帧CPU使用率降低了高达50%。

[13:36] Now, performance is just one way we're helping you delight your Android users.
  现在，性能只是我们帮助您取悦Android用户的一种方式。

[13:38] We're creating a platform that delivers a new helpful AI-powered experience that actually anticipate users' needs.
  我们正在创建一个平台，该平台提供了一种新的、有用的、由AI驱动的体验，该体验能够真正预测用户的需求。

[13:47] Now, for you, this means not only new discovery surfaces for more and deeper app engagement, but users are actually getting better and safer app experiences.
  现在，对您而言，这意味着不仅可以获得新的发现界面以实现更深入的应用互动，而且用户实际上还能获得更好、更安全的应用体验。

[13:56] And we're doing this at every level of the stack.
  我们正在堆栈的每个级别上执行此操作。

[13:58] This is what we mean when we say that Android is evolving from an operating system to an intelligence system.
  这就是我们所说的Android正从操作系统演变为智能系统的意思。

[14:06] Now, your apps will be at the center of these changes in different ways.
  现在，您的应用程序将以不同的方式处于这些变化的中心。

[14:08] First, let's talk about how AI can enhance the
  首先，让我们谈谈AI如何增强

[14:13] ways users interact with your app with proactive help, leveraging the platform's deep understanding of native UI built with Kotlin and Compose.
  用户与您的应用互动的方式，通过主动帮助，利用平台对用 Kotlin 和 Compose 构建的原生 UI 的深入理解。

[14:22] An example of this is our next-generation autofill, which works to get your app higher form completion rates, all using the same hints you're currently providing autofill.
  这方面的一个例子是我们的下一代自动填充功能，它可以提高您应用的表单填写完成率，所有这些都使用您当前为自动填充提供的相同提示。

[14:31] We can also help protect your users today on Pixel with using AI to identify scan patterns in notifications from popular messaging apps, warning users before they respond to a potential threat.
  我们还可以通过使用人工智能识别来自流行消息应用的通知中的扫描模式来帮助保护您今天的 Pixel 用户，在用户回复潜在威胁之前向他们发出警告。

[14:44] Now, Magic Compose was introduced last year on Pixel 10, and it surfaces helpful information and actions within apps.
  现在，Magic Compose 于去年在 Pixel 10 上推出，它可以显示应用内的有用信息和操作。

[14:48] And this is a new place for users to engage with and discover app content.
  这是用户参与和发现应用内容的一个新地方。

[14:53] And as you can see here, it's expanding to more apps, such as Snapchat.
  正如您在这里看到的，它正在扩展到更多应用，例如 Snapchat。

[14:58] Now, improving your apps with proactive AI features is awesome, but we're entering the agentic era, where agents and assistants complete tasks on behalf of users, and your app can participate.
  现在，通过主动的人工智能功能改进您的应用很棒，但我们正进入代理时代，代理和助手代表用户完成任务，您的应用也可以参与其中。

[15:11] I mean, after all, like, Android has always been designed to have multiple
  我的意思是，毕竟，就像，Android 一直被设计成拥有多个

[15:14] apps work together to share a task, such as composing an email or with a photo.
  应用程序可以协同工作来共享任务，例如撰写电子邮件或处理照片。

[15:18] But now, agents, such as Gemini, can act as an orchestrator across multiple apps.
  但现在，像 Gemini 这样的代理可以在多个应用程序之间充当协调者。

[15:24] Now, to this end, Gemini can analyze app screens and navigate through tasks, stopping for user input when it needs clarification at sensitive areas like transactions with no code needed from you in almost all cases.
  现在，为此，Gemini 可以分析应用程序屏幕并通过任务进行导航，在需要澄清敏感区域（如交易）时停止以获取用户输入，而您几乎在所有情况下都不需要编写代码。

[15:38] The user can do other tasks while Android actually runs the app in the background on a virtual display.
  用户可以执行其他任务，而 Android 实际上会在虚拟显示器上在后台运行该应用程序。

[15:42] And we'll be rolling this experience out more widely in the future.
  我们将在未来更广泛地推出这种体验。

[15:48] But, you can take control of the capabilities your app exposes by integrating with a new API, app functions.
  但是，您可以通过与新的 API（应用程序函数）集成来控制您的应用程序公开的功能。

[15:57] Now, app functions is an Android platform API and a Jetpack library that simplifies building Android MCP integrations.
  现在，应用程序函数是一个 Android 平台 API 和一个 Jetpack 库，它简化了 Android MCP 集成的构建。

[16:01] It empowers your app to behave like on-device MCP servers, contributing functions that act as tools for use by client agents and assistants like Gemini.
  它使您的应用程序能够像设备上的 MCP 服务器一样运行，提供充当客户端代理和像 Gemini 这样的助手工具的函数。

[16:13] Now, app functions integration
  现在，应用程序函数集成

[16:15] with Gemini is currently in a private preview with trusted testers, but you can begin preparing your apps now using app functions.
  Gemini目前正处于私有预览版，供受信任的测试人员使用，但您现在就可以开始使用应用函数准备您的应用。

[16:23] Now, if you built your app with, you know, clearly separated data and presentation layers following our recommendations, adding adding app functions can be really, really straightforward.
  现在，如果您遵循我们的建议，使用清晰分离的数据和表示层构建了您的应用，那么添加应用函数将非常非常直接。

[16:30] So, let me show you what that looks like.
  所以，让我向您展示一下它的样子。

[16:35] All right.
  好的。

[16:36] So, here we are in on our laptop.
  所以，我们现在在笔记本电脑上。

[16:40] Let me actually show you a little bit of what we've done.
  让我实际向您展示一下我们所做的一些工作。

[16:42] Uh we've actually got a skill that can actually add app functions automatically to your project.
  呃，我们实际上有一个技能，可以自动为您的项目添加应用函数。

[16:50] And it it works even better if you actually have architected your app well, but it can work in all cases, really.
  如果您确实很好地构建了您的应用，它的效果会更好，但实际上它在所有情况下都有效。

[16:56] And the key thing is that we're going to do this today with the with the Now in Android news aggregation app.
  关键是我们今天将使用“Android新闻聚合”应用来完成这项工作。

[17:00] So, let me quickly just show you you haven't seen this.
  所以，让我快速向您展示一下您还没有见过的东西。

[17:04] Um this is what that looks like.
  嗯，它看起来是这样的。

[17:05] Very nice, you see?
  很棒，您看？

[17:06] We've got Compose first um as part of the news that we're aggregating.
  我们首先使用了Compose，作为我们聚合的新闻的一部分。

[17:11] Now, what the agent has actually done though is pretty cool.
  现在，代理实际上所做的事情相当酷。

[17:13] Um so, you can see we've
  嗯，所以，您可以看到我们已经

[17:18] just given it a very, very simple prompt.
  只是给了一个非常非常简单的提示。

[17:19] Create app functions to provide access to topics and news articles, enable users to follow and things like that.
  创建应用函数以提供对主题和新闻文章的访问，使用户能够关注以及类似的功能。

[17:24] It activates the skill.
  它激活了该技能。

[17:26] We've installed that in the project and it's going to do a lot of things for you.
  我们已将该项目安装在项目中，它将为您做很多事情。

[17:30] It's going to upgrade things.
  它将升级事物。

[17:31] Let's scroll to the bottom and look at all that it's done.
  让我们滚动到底部，看看它所做的一切。

[17:34] So again, we've got We've updated the SDK, we've added dependencies, we've created metadata, and more importantly, we've actually implemented four useful app functions to list topics, list news articles, follow topics and and bookmark things.
  所以再说一遍，我们已经更新了SDK，添加了依赖项，创建了元数据，更重要的是，我们实际上实现了四个有用的应用函数来列出主题、列出新闻文章、关注主题和书签。

[17:47] And this is the actual code that was generated.
  这是生成的实际代码。

[17:48] Like as you can see here, we're really literally running all this from Android Studio and I have not made any changes to the project.
  就像您在这里看到的，我们真的只是从Android Studio运行所有这些，并且我没有对项目进行任何更改。

[17:53] This This actually worked the first time, which is always nice.
  这实际上是第一次奏效，这总是很好。

[17:56] Um, so you can see it's created this app function for list topics.
  嗯，所以您可以看到它为列表主题创建了这个应用函数。

[17:59] And what's really great about the way that Jetpack library works is that you can see that this is pretty normal.
  Jetpack库的工作方式真正出色之处在于，您可以看到这非常正常。

[18:06] We've just We've just annotated it with app functions.
  我们只是用应用函数对其进行了注释。

[18:07] Um, it's a normal suspend function that runs with a context.
  嗯，这是一个在上下文中运行的普通挂起函数。

[18:11] You can see here that it's actually returning a fairly reasonable data model.
  您可以在此处看到它实际上返回了一个相当合理的数据模型。

[18:15] And uh, hold on, let me do that one more
  嗯，等等，让我再做一次

[18:18] Time.
  时间。

[18:20] There, a very reasonable data model.
  那里，一个非常合理的数据模型。

[18:23] And uh, and also we're documenting it using KDoc.
  而且，我们也正在使用KDoc记录它。

[18:25] And the library is just going to make sure that that gets all the way to the agent that's using it.
  而该库将确保它能一路传递到使用它的代理。

[18:30] And that's the same thing that makes me understand it also makes our agents understand it.
  而这是让我理解它，也让我们的代理理解它的相同之处。

[18:34] And you can And you can see we can list topics and news articles, we can follow topics, and we can create bookmarks.
  你可以看到我们可以列出主题和新闻文章，我们可以关注主题，我们可以创建书签。

[18:40] Now, let's But how do you test this?
  现在，让我们但是你如何测试这个？

[18:42] Well, we've actually gone and created an agent that can do that for you.
  嗯，我们实际上已经为你创建了一个可以做到这一点的代理。

[18:46] So let's go to our running device and let's switch over to our test agent.
  所以让我们去我们的运行设备，然后切换到我们的测试代理。

[18:52] Mhm.
  嗯。

[18:54] All right.
  好的。

[18:56] So first of all, we want to do things deterministically.
  所以首先，我们想确定性地做事。

[18:57] So let's take a look at what functions we're exporting inside of Now in Android.
  所以让我们看看我们在Android的Now中导出了哪些函数。

[19:01] So we've got list topics, we can run those functions, and you see we get some lovely JSON.
  所以我们有列出主题，我们可以运行那些函数，你看到我们得到了一些漂亮的JSON。

[19:04] And you notice ID number three is compose.
  你注意到ID号三是Compose。

[19:08] All right.
  好的。

[19:09] We'll use that when we go to list news articles.
  当我们去列出新闻文章时，我们将使用它。

[19:11] We can also add parameters here right in the test agent, and run them.
  我们也可以在这里的测试代理中添加参数，并运行它们。

[19:15] And again, beautifully, this is actually happening, by the way.
  而且再次，美妙地，这实际上正在发生，顺便说一句。

[19:16] This is not like canned or
  这不像罐头或者

[19:19] Anything like that.
  诸如此类。

[19:20] All right, let's let's talk about what the next step next thing we want to be able to do is actually run against a live instance of Gemini.
  好的，让我们来谈谈下一步，我们想做的下一件事是实际运行一个 Gemini 的实时实例。

[19:27] So, we've hooked it up to a regular cloud instance of Gemini.
  所以，我们已经把它连接到一个常规的 Gemini 云实例。

[19:29] We can do things like, "Hey, show me the article on Compose UI UI first."
  我们可以做一些事情，比如，“嘿，给我看关于 Compose UI 的文章，先看 UI。”

[19:36] See, as you know, I just tell you know it's not really canned cuz I would never make a typo on a canned demo.
  你看，你知道的，我只是告诉你，它不是真的预设的，因为我绝不会在预设的演示中犯错。

[19:42] All right, let's demo gods, let's let's do this.
  好的，演示神啊，我们开始吧。

[19:46] All right, so it's connecting to the now on Android app.
  好的，所以它正在连接到现在的 Android 应用。

[19:49] And Gemini actually has to do a bit of work here because we don't You notice we didn't have a great API for actually searching this.
  Gemini 其实需要在这里做一些工作，因为我们没有，你注意到我们没有一个很好的 API 来实际搜索这个。

[19:53] So, it's actually pulling the topics, pulling all the articles, and then giving you the article that you selected.
  所以，它实际上正在拉取主题，拉取所有文章，然后给你你选择的文章。

[19:59] And And Gemini's doing all that work.
  而 Gemini 正在做所有这些工作。

[20:00] But, we can take it one further.
  但是，我们可以更进一步。

[20:01] Let's
  让我们

[20:03] Thank you.
  谢谢。

[20:05] We can also say, "Send the Compose UI first article to Nick Butcher."
  我们还可以说，“将 Compose UI 的第一篇文章发送给 Nick Butcher。”

[20:14] No, actually just to Nick.
  不，实际上只是发送给 Nick。

[20:17] All right, so, now what we've done is we actually have a second app that uses app
  好的，所以，现在我们所做的是，我们实际上有一个第二个应用，它使用应用

[20:20] functions that actually is a chat app.

[20:21] We can connect to that. We're going to

[20:22] find out who Nick is, first of all.

[20:25] Uh and then we're going to go and send

[20:26] that article to him. It's actually

[20:28] recalled our app. And so, now if we go

[20:30] over to our

[20:32] chat application,

[20:34] eventually, [snorts] come on. I can I

[20:35] can use this in an emulator, I promise.

[20:37] All right.

[20:38] There we go. This is the article,

[20:40] Android development is Compose first.

[20:43] So, that is, again, the agent working

[20:46] together to with with two different apps

[20:48] using app functions. You can imagine all

[20:49] the cool things this can do. All right,

[20:51] back to our slides.

[20:53] So, check out our tools and you can

[20:55] experiment with app functions today. You

[20:56] can join our early access program for

[20:58] the chance to be among the first apps to

[21:00] deploy app functions to production.

[21:02] Now, proactive functionality and

[21:04] automation is a good start. But, we want

[21:06] to bring the power of AI into every part

[21:09] of the Android experience. And that

[21:11] means helping your apps make direct use

[21:13] of AI with both on-device and

[21:15] server-side implementations.

[21:18] Now, using on-device models such as

[21:20] Gemini Nano keeps sensitive user data

[21:22] local, works without connectivity, and

[21:24] also has no per transaction costs.

[21:27] Nano is now available on over 140

[21:29] million devices.

[21:31] And it's based on our open Gemma models.

[21:34] So, you can look for Gemma 4 based on

[21:36] the Apache license Gemma 4 on flagship

[21:38] devices later this year.

[21:40] It features better multilingual support,

[21:42] more battery efficiency, and new

[21:44] advanced capabilities. And you can test

[21:47] out some of those new capabilities today

[21:48] using the AI Core developer preview and

[21:51] start building with the ML Kit prompt

[21:52] API.

[21:54] Now, popular apps are already using the

[21:56] prompt API with existing Nano models.

[21:58] For example, Webex uses it to translate

[22:01] short chat messages.

[22:03] And Photoshop is testing it to

[22:05] automatically rename layers and images

[22:07] using imports and exports, which is

[22:09] something I've always wanted it to do.

[22:10] So, I'm excited about that.

[22:12] So, check out this talk to learn more

[22:14] about using on-device models.

[22:17] And of course, there are times when you

[22:18] want to leverage a cloud-based solution.

[22:21] So, ABC Mouse used Gemini with Google

[22:24] Cloud to build a closed-loop feature,

[22:27] which offers personalized support when

[22:29] it detects that a child needs help. And

[22:31] because it's implemented in the cloud,

[22:33] it even works on entry-level kids

[22:34] tablets.

[22:36] Now, Gemini cloud models have advanced

[22:38] capabilities, and you can use them

[22:39] directly in production Android apps via

[22:41] Firebase AI Logic.

[22:43] If you want to build cloud-based agents,

[22:46] the ATUI protocol allows them to display

[22:48] UI on the client. And on Android, a new

[22:51] Jetpack Compose lender is coming soon to

[22:54] help you display ATUI.

[22:56] Now, to learn more about all of these

[22:57] cloud options and more, you can check

[22:59] out this talk.

[23:05] So those experiences include everyone

[23:08] and so your app reaches the most users,

[23:10] you'll want to make your app accessible.

[23:12] Here are three things to help.

[23:14] First, we've published new guidance on

[23:16] scaling your app's content with gestures

[23:18] in Compose. My ancient eyes thank you

[23:21] all in advance for implementing this

[23:23] everywhere.

[23:24] >> [laughter]

[23:25] >> Second, TalkBack can now automatically

[23:27] generate image descriptions for image

[23:30] composables. Now, we still recommend as

[23:33] a best practice to define your own

[23:34] content descriptions, but this comes in

[23:36] handy when you can't, like with

[23:38] user-generated content.

[23:39] >> It's great to see AI being used for some

[23:41] cool accessibility wins. Yeah.

[23:44] Finally, the new accessibility scanner

[23:46] is better than ever at catching common

[23:48] issues in your apps, like low contrast

[23:50] and small touch targets.

[23:52] Just just use it, please. Please.

[23:55] I agree. Thank you, Dan.

[23:57] >> [laughter]

[23:58] >> See this talk for more updates.

[24:00] Now, privacy and security are essential

[24:02] foundations of a great Android

[24:04] experience and this help fosters the

[24:06] trust that users need to store their

[24:08] most personal data. Now, to that end,

[24:10] Android 17's adds many new privacy and

[24:13] security features that you want to make

[24:14] sure your app is ready for, such as

[24:16] making sure that native libraries are

[24:18] read-only when your app dynamically

[24:20] loads them, as well as SMS one-time

[24:23] password or OTP protection, which delays

[24:25] most apps from getting access to

[24:28] messages that contain OTPs for 3 hours.

[24:31] But, and this is the cool part, you may

[24:33] be able to avoid using OTPs altogether

[24:36] because credential manager now provides

[24:39] verified email address and phone number

[24:42] verification.

[24:44] And the credential creation feature in

[24:46] credential manager lets apps

[24:47] automatically create passkeys for their

[24:49] existing password users. And the

[24:51] passkeys are stored in the user's

[24:53] credential provider, as long as the user

[24:55] opts in.

[24:56] Health Connect allows users control over

[24:58] their private health data, but this year

[25:01] apps can actually request that the user

[25:03] sync helpful data from another app to

[25:05] simplify cross-app setup.

[25:08] The companion device manager offers a

[25:10] unified dialogue for device association

[25:12] and nearby permission requests, enabling

[25:15] these multiple Sorry, removing multiple

[25:17] pop-ups. And this contains new profiles

[25:19] for medical devices and fitness trackers

[25:21] that also help efficiently request

[25:23] permissions.

[25:24] Cuz in general, we're trying to simplify

[25:26] security user experiences while actually

[25:29] making everything more secure. As an

[25:31] example, apps targeting Android 17 now

[25:34] require the access local network

[25:35] permission to discover and connect to

[25:37] devices on the local area network such

[25:39] as smart home devices or casting

[25:40] receivers.

[25:42] But what if you just need access to a

[25:43] little bit of data and you don't want to

[25:45] have to request broad sensitive

[25:47] permissions? Worried enough,

[25:49] programmers? You can use

[25:50] privacy-preserving pickers.

[25:52] For example, apps supporting Google Cast

[25:55] can use output switcher to get access to

[25:57] specific streaming devices rather than

[25:59] having to request access local network.

[26:03] With the new eyedropper API, apps with

[26:05] color pickers can get any pixel's color

[26:08] on the screen without having to request

[26:10] broad screen capture permissions.

[26:12] And if you use the contacts picker, you

[26:14] can get access to specific fields in

[26:16] specific contacts without having to

[26:18] request the broad read contacts

[26:20] permission, which grants you access to

[26:22] the entire contacts list.

[26:25] And finally, photo picker has long been

[26:27] around to reduce broad media access, and

[26:29] now it's useful in more places because

[26:32] it supports portrait grid view.

[26:34] Those pickers are one way we're

[26:36] improving the core experience. Here's

[26:38] another way we're making it more

[26:39] integrated.

[26:40] Last year, we unveiled live update

[26:42] notifications for a few select styles.

[26:46] This year, we've added the metric style

[26:48] template for health and fitness apps,

[26:50] timers, and travel apps. And you can use

[26:53] the semantic color API to convey state

[26:55] in your live update.

[26:57] We're also planning for a more unified

[26:59] call history by bringing call logs from

[27:01] apps like WhatsApp and Meet together in

[27:04] the same native phone app.

[27:06] And later this year, we're updating

[27:08] thousands of our cute but flat emoji to

[27:11] be delightfully richer. All you need to

[27:14] do to get this in your app is use a

[27:16] system emoji.

[27:18] And finally, picture-in-picture has a

[27:20] new Jetpack library for video playback,

[27:22] call, and navigation. If you use it with

[27:25] camera X, your users can read a script

[27:27] while recording their social media

[27:29] content.

[27:30] Speaking of cameras, we've built

[27:33] on-device APIs for AI-powered effects,

[27:35] so you can give users the advanced tools

[27:37] that they need to tell the stories they

[27:39] want to share.

[27:41] For example, Instagram's Add It's app

[27:43] improved video quality

[27:46] using the on-device image and video

[27:48] enhancement library.

[27:50] Let's see a demo of this library working

[27:52] in our sample app with images.

[27:55] All right.

[28:08] I adore this photo of my mom taken

[28:11] during her rebellious teenage years. But

[28:14] being an old photograph, it's grainy and

[28:16] blurry. So, I'm going to press AI

[28:18] enhance and the on-device library will

[28:21] return a clearer image where details

[28:23] like her eyes are more well defined.

[28:27] At a high level, to get this working,

[28:29] we're going to tell the API to use

[28:32] certain effects like upscaling. We could

[28:35] have also selected deblur and denoise,

[28:38] tone mapping, and then our mode is

[28:41] enhancement mode bitmap. Or we could

[28:43] have also provided a surface view.

[28:45] And then, after the user has made their

[28:47] selection, we will call process bitmap

[28:51] async to actually apply those effects on

[28:54] the given bitmap or, in this case, the

[28:55] image of my mom.

[28:57] So, let's select another image. This one

[29:00] in color.

[29:03] Since all of this is run on device, it

[29:06] won't cost you a cent in server costs.

[29:09] And users can even use this while in

[29:12] airplane mode.

[29:14] Which you can see here.

[29:18] >> [applause]

[29:22] >> So, what you can see from this image,

[29:24] the resulting image is brighter due to

[29:26] the tone mapping, and then the letters

[29:28] PB here are sharper because of the

[29:31] upscaling.

[29:32] >> [clears throat]

[29:33] >> Let's take a look at that.

[29:36] And there we go.

[29:37] Back to the slides.

[29:40] Ah. Wait. Wait. Wait.

[29:43] Unexpected background to audio.

[29:47] I don't like it. Users don't like it.

[29:50] And one of the many improvements in

[29:52] Android 17 helps reduce those

[29:55] embarrassing audio moments

[29:57] by restricting the use of audio APIs to

[29:59] foreground apps and foreground services

[30:02] with while-in-use capabilities. Using

[30:04] media session service to manage

[30:06] background audio playback actually can

[30:07] help mitigate impact. And, because

[30:10] you've asked, exact alarms are exempted.

[30:16] Now, other Android 17 media improvements

[30:18] include support for new pro image and

[30:20] video formats, improved audio streaming

[30:22] and voice quality with HEAAC,

[30:25] and camera enhancements including

[30:27] vendor-defined extensions.

[30:30] Next-generation Eclipsa video is

[30:33] officially launching on Android 17 with

[30:35] high-quality HDR playback that addresses

[30:38] things like unpredictable light levels

[30:40] and rendering issues. And ExoPlayer

[30:41] provides out of the box support.

[30:44] And to learn how to take advantage of

[30:45] these and many other improvements

[30:47] through our Jetpack Media 3 and Camera X

[30:49] APIs, check out this talk.

[30:54] Thank you.

[30:56] So, Android is a multi-device ecosystem.

[30:59] Users moving between their phones, their

[31:01] foldables, their tablets, their watches,

[31:03] their headsets, their cars, and their

[31:05] TVs.

[31:06] And they expect their apps to move with

[31:08] them.

[31:09] And your app should.

[31:11] There are now over 580 million large

[31:14] screen users, and they spend more and

[31:16] engage more with their apps.

[31:18] And they also expect more, such as

[31:20] making use of the full screen,

[31:22] regardless of the orientation or aspect

[31:23] ratio.

[31:25] Which is why in Android 17, we now

[31:27] ignore these attributes on large screen

[31:29] devices, and you can no longer opt out.

[31:33] So, use the navigation free or compose

[31:35] adaptive libraries in order to build a

[31:36] rich adaptive app.

[31:38] They handle the heavy lifting for you,

[31:40] covering common scenarios out of the

[31:41] box.

[31:42] So, for example, version 1.1 of the

[31:44] navigation free library recently added

[31:46] scene decorators, which helps you to add

[31:48] UI elements, such as navigation rails

[31:50] and bars, at the scene level, rather

[31:52] than at the nav entry level, which can

[31:54] be extremely handy for adding for

[31:55] controlling things like the visibility

[31:57] of global navigation UI.

[31:59] Oh, and speaking of navigation free,

[32:00] we've heard you. You want support for

[32:02] deep links, and we're pleased to say

[32:04] it's just landed in version 1.2 alphas.

[32:08] We're also working on a trio of new

[32:10] compose APIs to help you to build

[32:11] adaptively.

[32:13] Firstly, media query greatly simplifies

[32:15] querying a device's capabilities, such

[32:18] as um screen size, or pointer precision,

[32:21] or keyboard presence, so that you can

[32:22] use these signals to adapt your UI.

[32:26] Next up, we're launching a new flexbox

[32:28] implementation to help which is a very

[32:30] flexible layout to help you to grow,

[32:32] shrink, or wrap elements depending on

[32:34] the available size, again helping you to

[32:36] build components which will resize uh

[32:38] for different devices.

[32:40] And finally, Grid is a new layout which

[32:43] you can use to divide up and place your

[32:44] content into a regular grid grid

[32:46] structure. Now, this can be extremely

[32:48] useful as a like root level layout if

[32:50] you want to rearrange your content based

[32:52] on different screen sizes.

[32:55] Flexbox, media query, and Grid are all

[32:57] experimental APIs in Compose 1.11. So,

[33:00] please try them out and give us your

[33:01] feedback.

[33:03] And speaking of large screens, don't

[33:05] forget about the largest screen in your

[33:06] house, your TV.

[33:08] Pointer remotes are coming to Google TVs

[33:10] to help you to quickly navigate around

[33:12] the interface.

[33:14] Check out our documentation and ensure

[33:15] you're using the latest TV libraries to

[33:18] make sure your app is ready for this

[33:19] change.

[33:23] In a multi-device ecosystem, users move

[33:26] between their devices picking the best

[33:28] one for their task at hand. Continue on

[33:30] lets a user start a task on one device

[33:33] and transition it to another.

[33:36] Bubbles? Haven't we had bubbles since

[33:38] Android 11? Well, now we have more

[33:39] bubbles. Any app can be bubbled and

[33:41] they're not just for chat apps anymore.

[33:43] And on large screen devices, users have

[33:45] a new bubble bar to help manage their

[33:48] bubbles.

[33:50] Widgets are another way users multitask

[33:52] and because users see them a lot, they

[33:54] may help improve user loyalty. For

[33:57] example, Gratitude found 25% higher

[34:00] retention among widget users.

[34:03] And widgets aren't just for tiny phone

[34:05] home screens anymore. They show up on

[34:07] foldables, tablets, and more.

[34:10] Especially since this year we're gearing

[34:12] up to bring widgets to the millions of

[34:15] compatible cars and tiles is evolving

[34:18] into wear widgets under Jetpack Glance.

[34:21] So, as a developer, your key takeaway

[34:23] here is to use Jetpack Glance to build

[34:26] widgets for the adaptive ecosystem.

[34:29] When you're building with Glance, you

[34:30] may directly or indirectly come across a

[34:33] new library called Remote Compose. This

[34:36] library enables expressive widget

[34:38] animations like the snap scrolling one

[34:40] you see here.

[34:42] Okay, see these talks to learn more

[34:44] about building adaptive widgets and

[34:46] apps.

[34:49] Let's talk more about Wear.

[34:53] >> [snorts]

[34:54] >> This year, we're releasing Wear OS 7,

[34:57] and thanks to platform improvements, you

[34:59] can expect up to 10% better battery

[35:01] life, so users can do more with your

[35:04] apps.

[35:05] Let's first look at features that

[35:07] automatically extend from the phone to

[35:09] the watch.

[35:11] When a user starts a media session on

[35:13] your app from the phone, they can

[35:15] automatically choose to have system

[35:17] playback controls show up on their

[35:19] watches.

[35:21] And their watches can control their

[35:22] paired phones media output, for example,

[35:25] to switch from speakers to headphones.

[35:28] Watch manufacturers may bridge live

[35:31] update notifications from the phone to

[35:33] the watch, and again, this doesn't

[35:35] require any work on your end.

[35:38] But, if you do have a Wear OS app, you

[35:40] can choose to create local live update

[35:42] notifications, which comes in handy when

[35:44] the user is walking around without their

[35:46] phone.

[35:48] And finally, with zero effort on your

[35:50] end, mobile UI automation handles

[35:53] complex tasks hands-free, like ordering

[35:55] from DoorDash.

[35:58] If you do have a Wear OS app, you could

[36:00] also create app functions with agents

[36:02] like Gemini to invoke in-app flows, like

[36:05] starting a workout with Samsung Health.

[36:09] Okay, here are three more features if

[36:11] you do have a Wear OS app.

[36:15] We just went over Wear widgets. We're

[36:17] also launching Wear workout tracker in

[36:19] Google Play Services later this year, so

[36:22] apps like Runkeeper can use this for

[36:24] metrics and media controls.

[36:27] Compose for Wear OS 1.6 supports

[36:29] navigation 3 and a new local ambient

[36:32] mode manager helps you manage content

[36:34] while your device is in a power saving

[36:36] state.

[36:37] The Wear OS 7 Canary emulator is

[36:39] available in Android Studio now, so you

[36:41] can get hands-on with all our new

[36:43] features. See our blog and docs to learn

[36:46] more.

[36:47] Let's talk about the other wearable form

[36:49] factor.

[36:51] If you are already building adaptively

[36:53] for Android, you are already building

[36:54] for XR headsets.

[36:57] And your existing app extends to wired

[36:59] XR glasses. With these devices, you can

[37:02] create immersive experiences like

[37:04] transporting the user to a virtual

[37:06] world.

[37:07] But, if you prefer designing everyday

[37:10] interactions instead, you can create

[37:12] augmented experiences with audio glasses

[37:15] and display glasses.

[37:17] Here the user's focus stays grounded in

[37:19] the real world, but their experience is

[37:21] enhanced with visual and audio overlays.

[37:25] We've made improvements to both

[37:26] immersive and augmented experiences with

[37:29] the Android XR SDK and fundamental

[37:32] Jetpack XR SDK libraries will be in beta

[37:35] soon.

[37:36] So, let's look at just four new

[37:38] improvements. First, you can soon build

[37:41] immersive worlds while keeping your app

[37:43] size small by creating geometry in real

[37:46] time rather than shipping large 3D

[37:49] models in your app's binary.

[37:52] Second, are you lost? Not anymore

[37:56] because we're introducing navigating

[37:58] with the geospatial API for wired XR

[38:00] glasses.

[38:02] Third, we've expanded support with Godot

[38:05] and Unreal Engine. We support Android XR

[38:08] vendor extensions like scene

[38:09] understanding, light estimation, face

[38:11] tracking, and more.

[38:14] Fourth, we've improved Jetpack Compose

[38:16] Glimmer, which are the composables

[38:18] you'll use to design for the visual and

[38:20] interaction constraints of display

[38:22] glasses.

[38:24] We've added new interactive components

[38:26] like vertical lists and stacks, and

[38:28] there's a new skill so you can add

[38:30] glimmer to your app easily.

[38:33] We've just scratched the surface, so see

[38:35] these talks to learn more.

[38:37] And apply to the XR developer catalyst

[38:39] program to get access to hardware,

[38:41] resources, grant funding for wired XR

[38:44] glasses and display glasses.

[38:47] Okay, we're shifting gears from the

[38:49] glasses you wear to the car that gets

[38:51] you there. We've simplified building

[38:53] apps for cars by increasing parity

[38:55] between the two systems, between both

[38:58] Android Auto and cars with Google

[39:00] built-in. So, here are the ways you can

[39:02] build for both platforms at once.

[39:05] First, use latest car app library

[39:07] templates for driving optimized UI. This

[39:11] year, you can use both the media app

[39:13] templates on Android Auto and cars with

[39:15] Google built-in, and you can use the

[39:17] Google Maps SDK with the maps with

[39:20] content template on both platforms, too.

[39:24] In car app library 1.9, we're adding 10

[39:26] new flexible components and layouts for

[39:29] both platforms. You'll see enhanced

[39:32] chips,

[39:33] expandable headers, progress bars, and

[39:36] more.

[39:38] With these components, apps like Amazon

[39:39] Music and Spotify can express their

[39:41] brand

[39:43] and add features from other form factors

[39:46] into cars.

[39:48] Many media app developers are building

[39:50] with car app library 1.9, and you can

[39:52] too by signing up for early access.

[39:55] Finally, in the Android show, we shared

[39:58] our plan to release the new car app

[39:59] library APIs to transition from parked

[40:02] to driving on both systems later this

[40:05] year,

[40:06] and how you can build equivalent video

[40:08] experiences on both platforms. So, for

[40:10] example, users can watch HD videos while

[40:13] parked.

[40:15] See the docs to learn more.

[40:18] Thanks so much.

[40:20] So, we're almost at the end, but we're

[40:21] going to leave you with one last

[40:23] takeaway.

[40:24] The next iteration of Chrome OS, built

[40:26] with parts of the Android stack, is

[40:28] here, and it's called Google Book, and

[40:30] it will run your Android apps better

[40:31] than ever.

[40:32] So, consider also supporting desktop

[40:34] experiences in your adaptive app.

[40:36] For example, Brand Lab, PowerDirector,

[40:38] and Notability, they added things such

[40:41] as keyboard shortcuts, drag and drop, or

[40:43] custom pointers to their adaptive

[40:44] layouts to to improve their desktop

[40:46] experience.

[40:48] See these talks to learn about adaptive

[40:50] development and how to create

[40:51] desktop-class apps.

[40:53] So, we've covered a lot of ways to help

[40:56] you build incredible apps.

[40:58] And starting with how Android is

[41:00] evolving from an operating system to an

[41:02] intelligence system with your apps at

[41:04] the center of this transformation.

[41:06] We're also preparing for the future with

[41:08] Android 17, with support for the latest

[41:11] media and GPU standards, and a focus on

[41:13] memory optimization and system-wide

[41:15] performance, so that apps are fast and

[41:18] responsive on every device.

[41:21] We're helping you foster user trust with

[41:23] features like SMS one-time password

[41:25] protection and privacy-preserving

[41:27] pickers.

[41:29] And as users move across a multi-device

[41:31] ecosystem, your app can meet them where

[41:33] they're at with adaptive APIs and

[41:36] navigation 3.

[41:38] And finally, we're officially

[41:39] Compose-first. We're focusing all of our

[41:41] new APIs, libraries, tools, and guidance

[41:43] on our most productive toolkit, uh which

[41:46] makes it fast and easy for you to build

[41:48] incredible apps.

[41:50] So, together, we can ensure that the

[41:51] entire app um ecosystem can deliver

[41:54] high-quality experiences to Android

[41:56] users.

[41:56] Please see the deep dive talks to learn

[41:58] more about each of these topics, and

[42:00] thank you for joining us today.

[42:02] >> [applause]

[42:05] [music]
