几个月前,我们重新推出了 Androidify,这是一款用于生成个性化 Android 公仔的应用。Androidify 使用 Gemini 和 Imagen 将您的自拍照转换为有趣的 Android 机器人。
不过,考虑到 Android 涵盖多种设备规格,包括我们最近新增的 XR,我们就在想,如何将 Androidify 的乐趣带到 Wear OS 呢?
Androidify 表盘主题
由于 Androidify 机器人高度个性化,因此展示它们的自然位置是表盘。它不仅是最常显示的界面,也是最个性化的界面,可让您展现自我。
根据自拍照生成的个性化 Androidify 表盘
Androidify 现在可以在“电话”应用中动态生成表盘,然后将其发送到手表,并自动设置为手表表盘。所有这些操作都会在几秒钟内完成!
概要设计
表盘创建和安装的端到端流程
为了实现端到端体验,需要将多种技术结合在一起,如以下简要设计图所示。
首先,用户的头像会与预先存在的表盘格式模板结合,然后打包成 APK。这一点已经得到验证,原因稍后会解释!- 并发送到手表。
手表收到表盘后,会使用 Wear OS 6 中的新 Watch Face Push API 安装并启用该表盘。
我们来详细了解一下:
创建表盘模板
表盘是根据模板创建的,而模板本身是在 Watch Face Designer 中设计的。这是我们新推出的 Figma 插件,可让您直接在 Figma 中创建表盘格式的表盘。
Watch Face Designer 中的 Androidify 表盘模板
该插件支持以多种不同方式导出表盘,包括导出为表盘格式 (WFF) 资源。然后,这些内容可以轻松地作为素材资源整合到 Androidify 应用中,以便动态构建最终的表盘。
打包和验证
模板和头像组合后,系统会使用便携式资源编译器套件 (Pack) 组装 APK。
在 Androidify 中,Pack 用作手机上的原生库。如需详细了解 Androidify 如何与 Pack 库交互,请参阅 GitHub 代码库。
在传输前的最后一步,APK 会由 Watch Face Push 验证器进行检查。
此验证器会检查 APK 是否适合安装。这包括检查 APK 的内容以确保其为有效的表盘,以及进行一些性能检查。如果有效,验证器会生成一个令牌。
手表需要此令牌才能进行安装。
正在发送表盘
Wear OS 上的 Androidify 应用使用 WearableListenerService 监听穿戴式设备数据层上的事件。
“电话”应用会传输表盘,具体方法是结合使用 MessageClient 来设置流程,然后使用 ChannelClient 来流式传输 APK。
正在手表上安装表盘
Wear OS 设备收到表盘后,Androidify 应用会使用新的 Watch Face Push API 安装表盘:
val wfpManager =
WatchFacePushManagerFactory.createWatchFacePushManager(context)
val response = wfpManager.listWatchFaces()
try {
if (response.remainingSlotCount > 0) {
wfpManager.addWatchFace(apkFd, token)
} else {
val slotId = response.installedWatchFaceDetails.first().slotId
wfpManager.updateWatchFace(slotId, apkFd, token)
}
} catch (a: WatchFacePushManager.AddWatchFaceException) {
return WatchFaceInstallError.WATCH_FACE_INSTALL_ERROR
} catch (u: WatchFacePushManager.UpdateWatchFaceException) {
return WatchFaceInstallError.WATCH_FACE_INSTALL_ERROR
}Androidify 会根据具体情况使用 addWatchFace 或 updateWatchFace 方法:Watch Face Push 定义了“槽位”的概念,即给定应用在任何时候可以安装的表盘数量。对于 Wear OS 6,此值实际上为 1。
Androidify 的做法是,如果有空位,就安装表盘主题;如果没有空位,就用新表盘主题替换掉任何现有表盘主题。
设置当前表盘主题
以编程方式安装表盘是一个很好的步骤,但 Androidify 旨在确保该表盘也是当前表盘。
Watch Face Push 引入了一项新的运行时权限,应用必须获得该权限才能实现此目的:
com.google.wear.permission.SET_PUSHED_WATCH_FACE_AS_ACTIVE
获得此权限后,便可调用 wfpManager.setWatchFaceAsActive() 方法,将已安装的表盘主题设为当前表盘主题。
不过,Androidify 必须考虑以下几点:
setWatchFaceAsActive只能使用一次。- 用户拒绝授予
SET_PUSHED_WATCH_FACE_AS_ACTIVE后,您无法再次请求该权限。 - Androidify 可能已经控制了当前表盘。
如需了解详情,请参阅 Androidify 如何实现设置活跃逻辑。
开始使用适用于 Wear OS 的 Watch Face Push
Watch Face Push 是一款多功能 API,既能提升 Androidify 的功能,也能打造功能全面的表盘市场。
您是否已经有了一款手机应用,并正在寻找机会进一步吸引和取悦用户?
或者,您可能是一位现有的表盘开发者,希望通过发布应用商店应用来创建自己的社区和主题库?
请参阅以下资源:
此外,您还可以观看随附的视频,更深入地了解我们如何将 Androidify 引入 Wear OS!
我们期待看到您使用 Watch Face Push 打造的精彩作品!
-
产品资讯全球超过半数的移动游戏都由 Unity 提供支持,因此第一印象至关重要。对于游戏开发者而言,顺畅、可靠的玩家新手入门体验对于提高首日留存率和长期互动度至关重要。
Michelle Martin • 阅读用时:1 分钟 -
产品资讯从家中的全沉浸式体验,到外出时的快速浏览体验,基于 Android XR 进行开发,让您能够在各种空间应用场景中随时随地触达用户。在 Android 开发者峰会上,我们推出了 XREAL AURA,这是一个令人兴奋的里程碑。
Amy Zeppenfeld, Vinny DaSilva • 阅读用时:3 分钟 -
产品资讯在智能时代,用户不再只是在应用中点按,而是表达高级目标,并期望 Gemini 等 AI 智能体完成多步骤工作流,有时甚至会跨设备上的多个应用。
Jingyu Shi • 阅读用时:4 分钟
每周通过电子邮件接收最新的 Android 开发洞见。