幾個月前,我們重新推出 Androidify,這款應用程式可生成個人化 Android 機器人。Androidify 運用 Gemini 和 Imagen,將自拍照變成有趣的 Android 機器人。
不過,Android 涵蓋多種板型規格, 包括最近新增的 XR,因此我們思考如何將 Androidify 的樂趣帶到 Wear OS。
Androidify 錶面
Androidify 機器人具有高度個人化特色,因此最適合在錶面上展示。錶面不僅是最常看到的介面,也是最能展現個人風格的介面。
根據自拍照生成的個人化 Androidify 錶面
Androidify 現在可以在手機應用程式中動態產生錶面,然後傳送到手錶,並自動設為錶面。上述所有作業都會在幾秒內完成!
整體設計
建立及安裝錶面的端對端流程
如要實現端對端體驗,必須結合多項技術,如這張高階設計圖所示。
首先,系統會將使用者的顯示圖片與現有的錶面格式範本結合,然後封裝成 APK。這項說法已獲得證實,原因將在下文說明!- 並傳送至手錶。
手錶收到錶面後,會使用 Wear OS 6 的新 Watch Face Push API 安裝及啟用錶面。
詳細說明如下:
建立錶面範本
錶面是根據範本建立,而範本本身是在錶面設計工具中設計。這是我們推出的全新 Figma 外掛程式,可讓您直接在 Figma 中建立錶面格式錶面。
錶面設計工具中的 Androidify 錶面範本
這個外掛程式可讓您以多種方式匯出錶面,包括錶面格式 (WFF) 資源。接著,這些元素可以輕鬆整合為 Androidify 應用程式中的素材資源,以動態方式建構最終錶面。
封裝和驗證
範本和虛擬人偶合併後,系統會使用可攜式素材資源編譯器套件 (Pack) 組合 APK。
在 Androidify 中,Pack 是做為手機上的原生程式庫使用。如要進一步瞭解 Androidify 如何與 Pack 程式庫互動,請參閱 GitHub 存放區。
在傳輸前的最後一個步驟,APK 會由 Watch Face Push 驗證工具檢查。
這個驗證工具會檢查 APK 是否適合安裝。包括檢查 APK 內容,確保錶面有效,以及執行一些效能檢查。如果有效,驗證器會產生權杖。
手錶需要這個權杖才能安裝。
正在傳送錶面
Wear OS 上的 Androidify 應用程式會使用 WearableListenerService 監聽 Wearable Data Layer 上的事件。
手機應用程式會使用 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 打造精彩作品!
-
產品最新消息今天,我們在 Android 開發人員高峰會上宣布,將廣泛提供多項工具和 API,旨在消除日常摩擦,讓您更靈活地建構出色的 Android 應用程式。
Matthew McCullough • 閱讀時間:4 分鐘 -
產品最新消息Android Studio Rabbit 2 穩定版已推出,可供您在正式環境中使用。此版本包含多項重要功能,可提升開發效率,例如「自備代理」、全新 XR 模擬器功能、LeakCanary 更新、全新代理技能管理工具、AI 程式碼審查等。
Matthew Warner • 閱讀時間:3 分鐘 -
產品最新消息如果應用程式指定即將推出的 Android 版本,將無法再透過 WRITE_CONTACTS 權限直接寫入聯絡人資料。
Roxanna Aliabadi Walker • 閱讀時間:6 分鐘
每週透過電子郵件接收 Android 開發人員的最新深入分析。