产品资讯

Wear OS 7 中的新功能

阅读用时:9 分钟
John Zoeller
开发者关系工程师,Wear OS

今天,我们很高兴地宣布推出 Wear OS 7,这是一项重大更新,将为用户和开发者带来全新的能效和智能化体验。

我们深知,手表是用户全天候的必备良伴。因此,我们会继续投资于能效优化,以便用户能够使用自己喜爱的应用完成更多任务。对于从 Wear OS 6 升级到 Wear OS 7 的手表,普通用户可将电池续航时间延长最多 10%。

此外,作为面向 Android 生态系统的更广泛发布的一部分,今年晚些时候推出的部分手表将搭载 Gemini 智能,为用户提供主动式个性化帮助,以便他们专注于重要事务。

在 Wear OS 7 中,我们推出了新的系统功能并改进了开发者工具。新增了面向用户的实时更新等功能,并改进了媒体控件,可在腕上设备上提供更智能、更直观的体验。此外,通过对开发者工具包(例如 Wear Compose 1.6 和 AppFunctions)的增强,开发者将能够简化腕戴设备上的应用体验。  

让我们立刻开始吧!

Wear OS 7 Canary

您现在可以试用 Google 智能手表平台的下一版本 Wear OS 7 Canary 模拟器,该版本基于 Android 17,将于今年晚些时候推出。  

借助新模拟器,您可以在测试应用是否与即将推出的平台兼容的同时,亲身体验上述开发者功能和工具。  

查看具体变化,并立即开始测试您的应用。

探索新的 Wear OS 功能

Wear OS widget

widget (1).png

全屏功能块一直是 Wear OS 上常用的界面,可让用户快速浏览重要更新。随着 Android 生态系统朝着统一的微件愿景发展,我们正努力让手表更贴近 Android 系列的其他设备,以尽可能减少开发者的工作量。

今天,我们很高兴地宣布,功能块即将迎来新一轮变革:灵活且动态的 Wear 微件

Wear Widget 由 Jetpack Glance 和新的 RemoteCompose 框架提供支持,与 Tiles ProtoLayout 库相比,可提供更出色的表现力和与 Compose 的一致性。Wear 微件支持两种新的卡片布局(小号和大号),可与移动设备上的 2x1 和 2x2 格式完美契合,确保您的设计在不同设备上保持一致,同时仍允许您针对腕戴设备优化设计

您可以轻松地将全屏功能块的 mainSlot 中的界面调整为 2x2 widget。快来看看吧!

widgets code (1).png

请在本周晚些时候观看 Widgets I/O 讲座,详细了解新功能,并试用我们的 Widgets 入门指南,为您的 Wear OS 体验添加 widget。

实时动态

Live Updates 博客文章 (1).png

Wear OS 7 为手表带来了实时动态功能!

您可以使用实时更新功能在手表或移动应用中显示实时重要信息,让用户一目了然地了解最新动态。

在手表应用中,使用 Live Updates 而不是 Ongoing Activities API 在所有 Wear 7 设备上提供本地更新发布。对于支持的 OEM,手机应用发布的实时更新也会桥接到用户的手表。

不妨看看 Just Eat 如何向用户提供更新,如上图所示!

如需了解详情,请参阅 Wear OS 上的通知

将应用连接到智能系统

我们正在开发多种方式,让开发者能够在手表上提供智能体体验,包括 AppFunctions 和任务自动化工具。

当这些 API 准备就绪时,我们会在开发者博客上发布公告,并提供全面的开发者指南,帮助您选择合适的 API 并打造稳健的实现。下面先简单介绍一下。

AppFunctions

Watch_IO26_Samsung_App_Functions (1).gif

借助 AppFunctions API,开发者可以将自己的应用与 Google Gemini 等代理和助理集成,让用户能够通过语音完成任务,从而无需再通过您的界面进行逐步手动导航。  

例如,如需使用“三星健康”应用开始跑步,用户可以告诉 Gemini:“开始跟踪我的跑步情况。”

我们目前正在面向感兴趣的开发者开展抢先体验计划。请填写我们的表单,表达您的意愿。

任务自动化

Watch_IO26_RemoteBonobo_Doordash_onBG_a22_GIF (1).gif

此外,我们很快还将推出一项功能,让用户无需进行任何开发工作,即可直接通过手表调用和跟踪所选手机应用的自动化应用任务,例如使用 DoorDash 下单!

请密切关注我们的开发者博客,了解有关如何准备应用并将其连接到 Android 智能系统的灵活选项。

Wear 锻炼追踪器

Watch_IO26_SystemFitnessTracker_onBG_a05 (1).gif

我们知道,从头开始在 Wear OS 上构建功能齐全的高质量健身追踪体验需要耗费大量资源,因此我们为锻炼类应用打造了全新的 Wear 锻炼追踪器体验。该功能将于今年晚些时候纳入 Wear OS。

锻炼追踪器提供丰富的标准化锻炼追踪体验,包括心率监测、媒体控制以及一系列其他实用功能,可帮助您减少开发投资,同时保证为用户提供高质量的体验。

我们一直在与 ASICS Runkeeper 密切合作,以便为他们的用户提供这项功能,快来体验一下吧!

Wear OS 7 中增强的系统媒体控件

Wear OS 7 增强了系统媒体控件,让用户可以更好地控制媒体,获得更顺畅的媒体体验。

针对每个应用的媒体自动启动控制

Watch_IO26_AutoLaunch_Media_onBG_a05 (1).gif

用户现在可以直接通过手表上的系统媒体控件,针对每个应用个性化设置媒体自动启动体验。

对于用户已开启“自动启动设置”的任何应用,当手机上开始播放媒体时,媒体控件会自动显示在手表上。

如果开发者已实现在手表上扩展的媒体应用,则无需额外付出精力,即可受益于此功能。

使用远程输出切换器实现无缝音频路由

Remote Output Switcher (1).png

借助集成到系统媒体控件中的全新远程输出切换器,管理音频输出比以往更加轻松。

在已配对的手机上聆听媒体时,用户可以直接在手腕上轻松切换媒体播放设备。

界面库更新

除了面向用户推出所有这些新功能之外,我们还为开发者工具包引入了一些强大的增强功能,以帮助开发者为 Wear OS 的未来做好准备!

Compose for Wear OS 1.6

作为 Wear OS 开发的基础,Compose for Wear OS 1.6 已发布。

它包含强大的更新,包括:

使用 Navigation 3 简化导航

开发者可以与 Navigation 3 集成,以便以更灵活且符合 Compose 习惯的方式处理 Wear OS 上的导航。

@Composable
fun WearApp() {
    val backStack = rememberNavBackStack(MenuScreen)

    WearAppTheme {
        AppScaffold {
            val entryProvider = remember {
                entryProvider<NavKey> {
                    entry<MenuScreen> { GreetingScreen() }
                    entry<ListNavScreen> { ListScreen() }
                }
            }

            val swipeDismissableSceneStrategy = 
                rememberSwipeDismissableSceneStrategy<NavKey>()

            NavDisplay(
                backStack = backStack,
                entryProvider = entryProvider,
                sceneStrategies = listOf(swipeDismissableSceneStrategy)
            )
        }
    }
}

改进了 TransformingLazyColumn 的列表管理

TransformingLazyColumn 带来了显著改进,可实现高级列表管理,包括通过新的 minimumVerticalContentPadding 修饰符增强了内边距支持,以及其他新功能,例如贴靠和反向布局。

val listState = rememberTransformingLazyColumnState()
val transformationSpec = rememberTransformationSpec()

/*
 * TransformingLazyColumn takes care of the horizontal and vertical
 * padding for the list and handles scrolling.
 */
ScreenScaffold(scrollState = listState) { contentPadding ->
    TransformingLazyColumn(
        state = listState,
        contentPadding = contentPadding
    ) {
        item {
            ListHeader(
                modifier = Modifier
                    .fillMaxWidth()
                    .transformedHeight(this, transformationSpec)
                    .minimumVerticalContentPadding(
                        ListHeaderDefaults.minimumTopListContentPadding
                    ),
                    transformation = SurfaceTransformation(transformationSpec)
            ) { Text(text = "Header") }
        }
    }
}

使用 LocalAmbientModeManager 优化环境体验

全新 LocalAmbientModeManager 经过优化,可处理环境流程,让开发者更好地控制向用户呈现的环境体验。

 
override fun onCreate(savedInstanceState: Bundle?) {
    setContent {
        val ambientModeManager = rememberAmbientModeManager()
        CompositionLocalProvider(LocalAmbientModeManager provides ambientModeManager) {
            val localAmbientModeManager = LocalAmbientModeManager.current
            val ambientMode = localAmbientModeManager?.currentAmbientMode

            Column(
                verticalArrangement = Arrangement.Center,
                horizontalAlignment = Alignment.CenterHorizontally,
                modifier = Modifier.fillMaxSize(),
            ) {
                val ambientModeName =
                    when (ambientMode) {
                        is AmbientMode.Interactive -> "Interactive"
                        is AmbientMode.Ambient -> "Ambient"
                        else -> "Unknown"
                    }

                val color = if (ambientMode is AmbientMode.Ambient) Color.Gray
                    else Color.Yellow
                Text(text = "$ambientModeName Mode", color = color)
            }
        }
    }
}

Protolayout 和功能块更新

虽然我们鼓励开发者采用新的 Wear Widget,但我们仍将在一段时间内继续支持 Protolayout 和 Tile 库,并且这两个库都有新的稳定版本。

Protolayout 1.4 和 Tiles 1.6 协同工作,可提供多项值得关注的新功能,包括:

  • 内嵌图片资源:现在可以直接在布局中内嵌 ImageResource,并且 Tile 现在支持通过 ProtoLayoutScope 自动收集资源,无需手动进行资源映射和拆分为单独的方法。除了提高代码质量之外,这还通过将系统到提供程序服务的调用整合为单个 binder 调用,缩短了功能块加载延迟时间。
  • Material3TileService:可以将功能块实现为 Material3TileService,这是一个全面的挂起函数,可同时返回功能块布局和资源,同时自动管理 MaterialScope 和 ProtoLayoutScope 以简化开发体验。
  • 动态服务切换: 在 Wear 7 上,现在可以在清单中对多个 TileService 实例进行分组,以实现代表同一功能块的不同服务之间的动态切换。

点击此处查看新的功能块示例。

WFF 5

表盘格式版本 5 (WFF5) 现已推出,其中包含许多新功能,可让您更轻松地构建表盘,包括:

  • 增强的对齐选项:现在,TextCircular 等文本元素将提供更多对齐选项,包括多个文本元素在同一基准上的 verticalAlign。
  • 自动调整大小功能增强:现在可以在 TextCircular 上使用 isAutoSize,并且已向 Font 元素添加了新属性 minSize,以在启用自动调整大小时限制最小大小。
  • 混合模式:Group 和 ComplicationSlot 元素现在支持混合模式,此外还支持 Part* 元素。
  • 笔画连接:Stroke 和 WeightedStroke 元素现在包含 join 属性。
  • 分层设置:用户样式现在可以分层结构化,其中一些设置仅在其他设置具有特定值时才可见。用户样式现在还可以启用或停用复杂功能插槽。您可以使用用户样式选项中的 childSettingIds 和 complicationSlotIds 来配置这些设置。

请参阅我们的新版开发者指南,详细了解 WFF 5。

立即开始为 Wear OS 7 构建应用

有了这些更新,现在正是开发 Wear OS 应用的最佳时机。以下技术资源可帮助您详细了解如何开始使用:

我们期待看到您在 Wear OS 上打造的体验!

作者:

继续阅读