产品资讯

Wear OS 7 新功能

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

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

我们认识到,手表是用户全天候不可或缺的伴侣。因此,我们将继续投资于能效优化,以便用户能够使用自己喜爱的应用做更多事情。对于从 Wear OS 6 升级到 Wear OS 7 的手表,普通用户可以期待电池续航时间提升高达 10%。

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

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

让我们立刻开始吧!

Wear OS 7 Canary

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

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

查看 变更内容,立即开始测试您的应用。

探索 Wear OS 的新功能

Wear OS 小组件

widget (1).png

全屏功能块一直是 Wear OS 上的首选界面,可为用户提供即时、一目了然的重要动态。随着 Android 生态系统朝着统一的小组件愿景发展,我们将手表与 Android 系列的其他设备紧密联系起来,旨在最大限度地减少开发者的工作量。

今天,我们很高兴推出功能块演进的下一步:灵活且动态的 Wear 小组件

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

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

widgets code (1).png

请在本周晚些时候观看 Widgets I/O Talk,了解有关新功能的完整详细信息,并试用我们的小组件使用入门指南,将小组件添加到您的 Wear OS 体验中。

实时动态

Live Updates 博客文章 (1).png

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

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

在手表应用中,使用实时动态而不是 Ongoing Activities API 在所有 Wear 7 设备上提供本地动态发布。对于支持的原始设备制造商,手机应用发布的实时动态也会桥接到用户的腕表。

请查看 Just Eat 如何向用户提供动态(如上所示)!

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

将应用连接到智能系统

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

我们将在这些方法准备就绪后在开发者博客上公布,并提供全面的开发者指南,帮助您选择合适的方法并打造稳健的实现方案。目前,您可以先快速了解一下。

AppFunctions

Watch_IO26_Samsung_App_Functions (1).gif

借助 AppFunctions API,开发者可以将应用与智能代理和助理(例如 Google Gemini)集成,让用户能够使用语音完成任务,通常无需使用界面进行逐步手动导航。  

例如,要使用 Samsung Health 应用开始跑步,用户可以告诉 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 小组件,但我们将在一段时间内继续支持 Protolayout 和功能块库,并且我们推出了这两个库的新稳定版本。

Protolayout 1.4 和 功能块 1.6 协同工作,提供了一些值得注意的新功能,包括:

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

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

WFF 5

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

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

请查看我们的 新开发者指南,详细了解 WFF 5。

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

借助这些更新,现在正是开发 Wear OS 应用的最佳时机。以下技术资源是了解如何开始使用的绝佳去处:

期待看到您在 Wear OS 上构建的体验!

作者:

继续阅读