几个月前,我们重新发布了 Androidify,将其作为一款用于生成个性化 Android 公仔的应用。Androidify 使用 Gemini 和 Imagen 将您的自拍照转换为有趣的 Android 机器人。
不过,鉴于 Android 涵盖多种设备规格, 包括我们最新添加的 XR,我们便思考:如何将 Androidify 的乐趣带到 Wear OS?
Androidify 表盘
由于 Androidify 公仔具有高度个性化特征,因此最适合在表盘上展示。它不仅是最常展示的界面,也是最能体现个人风格的界面,可让您展示自己的个性。
根据自拍照片生成的个性化 Androidify 表盘
Androidify 现在能够在手机应用中动态生成表盘,然后将其发送到手表,并在手表上自动设置为表盘。所有这些操作都可在几秒钟内完成!
概要设计
表盘创建和安装的端到端流程
为了实现端到端体验,需要将多种技术组合在一起,如以下高级设计图所示。
首先,用户的头像会与预先存在的表盘格式模板相结合,然后打包到 APK 中。这是经过验证的 - 原因稍后会说明!- 并发送到手表。
当手表收到表盘时,会使用新的 Watch Face Push API(Wear OS 6 的一部分)来安装和激活表盘。
我们来详细了解一下:
创建表盘模板
表盘主题是根据模板创建的,而模板本身是在 Watch Face Designer 中设计的。这是我们的全新 Figma 插件,可让您直接在 Figma 中创建表盘格式的表盘。
表盘设计器中的 Androidify 表盘模板
该插件支持以多种不同的方式导出表盘,包括以表盘格式 (WFF) 资源的形式导出。然后,这些资源可以轻松地作为 Androidify 应用中的素材资源进行整合,以动态构建最终的表盘。
打包和验证
将模板和头像组合在一起后,使用可移植资源编译器套件 (Pack) 来组装 APK。
在 Androidify 中,Pack 用作手机上的原生库。如需详细了解 Androidify 如何与 Pack 库交互,请参阅 GitHub 代码库。
在传输之前,系统会通过Watch Face Push 验证器检查 APK,这是最后一步。
此验证器会检查 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 还希望确保该表盘也是当前表盘。
表盘推送功能引入了一项新的运行时权限,应用必须获得此权限才能实现相应功能:
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 创作的精彩作品!
继续阅读
-
产品资讯
我们很高兴地宣布,Android XR 现已正式支持 Unreal Engine 和 Godot。我们还推出了旨在提高您的工作效率并实现全新 XR 功能的新工具:Android XR Engine Hub 和 Android XR Interaction Framework。
Luke Hopkins • 阅读用时:4 分钟
-
产品资讯
随着 Android 17 的发布,我们正在向自适应优先开发标准过渡。您的用户不再依赖单一的设备形态,而是在一天中不断切换手机、可折叠设备、平板电脑、笔记本电脑、车载显示屏和沉浸式 XR 环境。
Fahd Imtiaz • 阅读用时:4 分钟
-
产品资讯
我们很高兴与您分享 Google TV 功能和开发者工具,这些功能和工具旨在提高您内容的发现率,并为您的应用做好准备,以迎接未来的电视体验。
Paul Lammertsma • 阅读用时:4 分钟
随时了解最新动态
每周通过电子邮件接收最新的 Android 开发洞见。