产品资讯

Wear OS 7 中的新功能

阅读用时:9 分钟
查看 John Zoeller 的个人资料
John Zoeller 开发者关系工程师,Wear OS

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

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

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

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

让我们立刻开始吧!

Wear OS 7 Canary

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

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

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

探索新的 Wear OS 功能

Wear OS widget

微件 (1).png

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

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

Wear Widgets 由 Jetpack Glance 和新的 RemoteCompose 框架提供支持,与功能块 ProtoLayout 库相比,在表达能力和与 Compose 的一致性方面都有所提升。Wear Widgets 支持两种新的卡片布局(小号和大号),可与移动设备上的 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

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

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

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

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

远程输出切换器 (1).png

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

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

界面库更新

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

Compose for Wear OS 1.6

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

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

使用 Navigation 3 简化导航

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

@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 和 Tile 1.6 协同工作,可提供多项值得注意的新功能,包括:

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

点击此处查看新的 Tile 示例 

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 上打造的体验!

编剧:
继续阅读