Wear Watchface

建立 Wear OS by Google 智慧型手錶的應用程式。
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2022 年 6 月 15 日 1.1.0 - - -

宣告依附元件

如要新增 Wear 的依附元件,必須將 Google Maven 存放區新增至專案。詳情請參閱 Google 的 Maven 存放區

在應用程式或模組的 build.gradle 檔案中,新增您需要的構件依附元件:

Groovy

dependencies {
    // Use to implement wear watchfaces
    implementation "androidx.wear.watchface:watchface:1.1.0"

    // Use to implement wear watchface complications
    implementation "androidx.wear.watchface:watchface-complications-data-source:1.1.0"
    // (Kotlin-specific extensions)
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.1.0"

    // Use to implement a watchface style and complication editor
    implementation "androidx.wear.watchface:watchface-editor:1.1.0"

    // Can use to render complications.
    // This library is optional and watchfaces may have custom implementation for rendering
    // complications.
    implementation "androidx.wear.watchface:watchface-complications-rendering:1.1.0"
}

Kotlin

dependencies {
    // Use to implement wear watchfaces
    implementation("androidx.wear.watchface:watchface:1.1.0")

    // Use to implement wear watchface complications
    implementation "androidx.wear.watchface:watchface-complications-data-source:1.1.0"
    // (Kotlin-specific extensions)
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.1.0"

    // Use to implement a watchface style and complication editor
    implementation("androidx.wear.watchface:watchface-editor:1.1.0")

    // Can use to render complications.
    // This library is optional and watchfaces may have custom implementation for rendering
    // complications.
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.1.0"
}

如要進一步瞭解依附元件,請參閱「新增版本依附元件」一文。

意見回饋

您的意見可協助我們改善 Jetpack。發現新的問題或有改善這個程式庫的想法時,請告訴我們。建立新的問題之前,請先查看這個程式庫中的現有問題。只要按一下星號按鈕,即可投票給現有的問題。

提報新問題

詳情請參閱 Issue Tracker 文件

1.1 版本

1.1.0 版本

2022 年 6 月 15 日

發布 androidx.wear.watchface:watchface-*:1.1.01.1.0 版本包含這些修訂版本。

自 1.0.0 版本以來的重要異動

更強大的編輯功能:

  • 我們加入了階層式架構的支援,讓編輯器使用者介面可以設定樣式的階層。您現在可以在錶面和隨附編輯器中指定個別的使用圖示。
  • 錶面支援多個執行個體,且每個執行個體都有專屬 ID,可在所有 API 平台使用。
  • 您現在可以為 ComplicationSlots 指定人類可讀的名稱,以在編輯器中使用。
  • 實驗功能支援樣式「風格」,這些精選的樣式組合會顯示在隨附的廣告編輯器中,方便您查看。
  • 錶面的兩個執行個體編輯內容載入後,錶面執行個體現在可以共用資源,進而節省記憶體
  • 在錶面編輯器選取小工具時,系統會預先選取目前的供應者。

改善的小工具:

  • 您現在可以為主要和次要資料來源指定 ComplicationType,讓開發人員享有更靈活的使用體驗。
  • 我們新增了 ComplicationDataTimeline,以將定時的資料傳遞至錶面,並自動快取及更新。例如本日不同時段的天氣預報,或是多個即將到來的日曆活動。
  • 小工具提供者的 ComponentName 屬於 ComplicationData 的一部分。
  • 小工具現在可以進行快取,因此在不同的錶面之間切換時可以提供更好的體驗。

其他變更:

  • 現在可以在 XML 中定義 UserStyleSchemaComplicationSlots。這可以簡化錶面建立作業,並且能加快系統查詢中繼資料的速度。
  • 現在,錶面可以影響系統重疊顯示系統重疊色彩。

1.1.0-rc01 版本

2022 年 5 月 18 日

androidx.wear.watchface:watchface-*:1.1.0-rc01 發布。1.1.0-rc01 版包含這些修訂版本。

新功能

  • 我們針對錶面 XML 支援功能進行了一些可用性調整,方便您指定 ComplicationSlotBounds 及支援參考資料。邊緣資料複雜性的實驗 BoundingArc 繼續,將連接至 drawHighlight,但目前不建議使用。

API 異動

  • 我們新增了 drawHighlight 的實驗性超載,接受 BoundingArc 參數 (I705f8)。
  • 錶面 XML 現在支援資源參照,讓您可在 XML 和程式碼中使用相同的常數 (I3ef61)。
  • 我們新增了在 center_xcenter_ysize_xsize_y 表單中定義 ComplicationSlotBounds 的功能。現在,您也可以使用資源參照來使用不同的單位,例如 dp (Iace98)。

修正錯誤

  • 修正在錯誤情境中執行工作的 runBlockingWithTracing。(4f595fe)
  • BaseEditorSession.close 設為同步。BaseEditorSession.close 非同步的問題是,我們發布 ComplicationDataSourceInfoRetriever 太晚,導致 Logcat 中出現垃圾郵件警告。這可能是無害的,但 Logcat 的垃圾郵件會使人分心,因此應避免 (35a5308)。

1.1.0-beta02 版本

2022 年 5 月 11 日

androidx.wear.watchface:watchface-*:1.1.0-beta02 發布。1.1.0-beta02 版本包含這些修訂版本。

新功能

  • 我們已針對新的 ComplicationData 類型提供實驗性支援,目前還不開放使用,但請密切留意。

API 異動

  • 我們新增了 BoundingArc 這個實驗性類別,用來說明邊緣小工具版位的幾何圖形。這已新增至 ComplicationSlot,而且連接至 ComplicationSlotStateWatchFaceMetadataClient (I61a40)。
  • 我們新增了沿用 UserStyleSetting XML 設定的功能。可降低詳細程度,並在錶面之間分享設定 (Ief841)。
  • 我們新增了兩種 ComplicationData 實驗性類型:ListComplicationDataProtoLayoutComplicationData。目前不支援這些類型的算繪,而且如果已新增至 ComplicationDataSource's 資訊清單,Wear OS 目前無法識別這些類型。(I1811c)。

修正錯誤

  • 修正 TimeLineEntry 類型的序列化。我們並未序列化 TimeLineEntry 類型,這表示在存取不存在的必填欄位時,NoData 類型的快取 TimeLineEntries 會被誤解為具有導致 NPE 的父項小工具類型。(55ffdf5)。
  • 修正 setComplicationData 已捨棄時間軸欄位的錯誤 (fb392f5)
  • 修正極少數情況下 runBlockingWithTracing 會引發 NPE 的錯誤 (12ca62e)
  • 修正在收到小工具時,有時會取得 ClassNotFoundException: android.support.wearable.complications.ComplicationText 的錯誤 (217942d9)。
  • 修正 GlesRenderer.backgroundThreadInitInternal 中只有在呼叫 EGL14.eglCreateContext 時,才會呼叫 onBackgroundThreadGlContextCreated 的錯誤。修正其他錯誤:verticalFlip 造成螢幕截圖中有視覺故障。(c674ad2)
  • 修正 WatchFaceService XML 版本檢查:從錯誤的套件中載入 (dfa06f3)。
  • 預留位置傳輸格式現在使用內部組合。我們不希望預留位置破壞可能使用隱藏的內部 a.s.w.c.ComplicationData 的現有錶面。以前,NoDataComplication 資料的傳輸格式會將預留位置儲存在一般欄位中 (這種情況可能有問題,因為舊的錶面會算繪非預期的預留位置字串),現在則是使用內部組合來完全隔離。(d5e7bd2)

1.1.0-beta01 版本

2022 年 4 月 20 日

發布 androidx.wear.watchface:watchface-*:1.1.0-beta011.1.0-beta01 版本包含這些修訂版本。

API 異動

  • 現在 WatchFaceMetadataClient 方法 (getUserStyleSchemagetComplicationSlotMetadataMapgetUserStyleFlavors) 和 HeadlessWatchFaceClient.getUserStyleFlavors 會擲回取消勾選的 RuntimeException,而非 WatchFaceException。(I0718a)
  • WatchFaceMetadataClient.WatchFaceException 已移出類別,因此無法重複使用。(I4e869)

修正錯誤

  • 傳送部分 ComplicationSlotBounds 時,WatchFaceMetadataClient 不會再當機。(Iaafd)

1.1.0-alpha05 版本

2022 年 4 月 6 日

androidx.wear.watchface:watchface-*:1.1.0-alpha05 發布。1.1.0-alpha05 版本包含這些修訂版本。

新功能

  • 您現在只要檢查 ComplicationData.dataSource,即可判斷傳送 ComplicationData 的資料來源,部分錶面可能會藉此自訂小工具顯示功能。(I44a73)

API 異動

  • Renderer.CanvasRendererRenderer.GlesRenderer 已淘汰,並改用 Renderer.CanvasRenderer2Renderer.GlesRenderer2 (支援傳遞給轉譯方式的 SharedAssets)。我們針對 Java 互通性引入了 ListenableCanvasRenderer2ListenableGlesRenderer2。(I31ffa)
  • 新增 @WatchFaceFlavorsExperimental 功能,用於定義變種版本 - 預先設定樣式化錶面清單 (I04dd0)
  • Renderer.sharedAssets 現在是 StateFlow,我們移除了未使用的 Renderer.SharedAssetsFactory (I12ac5)
  • 不再淘汰 UserStyleSchema.userStyleSettings (Iba7e3)
  • 新增 HeadlessWatchFaceClient.getUserStyleSchemaDigestHash,讓 HeadlessWatchFaceClient 避免在計算摘要雜湊之前,透過 AIDL 傳遞結構定義時產生相對較低的負擔。(I33597)
  • isUserStyleSchemaStatic 新增至 WatchFaceMetadataClient,只有在確信 UserStyleSchema 不會發生變更時 (除非更新錶面 APK),這個參數的值才為 true。(I45a3f)
  • 我們已將 getDigestHash 新增至 UserStyleSchema,以便計算結構定義的摘要雜湊值。這可以有效地判斷 UserStyleSchema 是否已變更。(I2063d)
  • METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED 已重新命名為 METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED (I9ba5d)
  • UserStyleSetting.OnWatchEditorData 已重新命名為「UserStyleSetting.WatchFaceEditorData」,其中包含僅供錶面編輯器使用的資料。(If3afb)

1.1.0-alpha04 版本

2022 年 3 月 9 日

androidx.wear.watchface:watchface-*:1.1.0-alpha04 發布。1.1.0-alpha04 版本包含這些修訂版本。

API 異動

  • 可能無法隨時取得最新的 ComplicationData 資料 (例如快取的 ComplicationData 已逾期),因此透過選擇性預留位置 ComplicationData 擴充了 NoDataComplication,並新增了 ComplicationText.PLACEHOLDERMonochromaticImage.PLACEHOLDERSmallImage.PLACEHOLDERPhotoImage.PLACEHOLDER,但這些預留位置只能在 NoDataComplicationData 預留位置的內容中使用。如果選取這類預留位置,建議以灰色方塊/弧形顯示 (I6285d)
  • 新增 ComplicationData.getNextChangeInstant,讓您參考互動智慧搜尋之後獲知下一個互動智慧搜尋,其中小工具的任何欄位可能會隨時變更。這可用於在內部安排頁框以進行小工具更新。例如,如果錶面通常每分鐘更新一次,設定秒錶小工具會導致每秒更新一次。(I7ceb2)
  • EditorSession.watchFaceId 現在可以在所有 API 級別中使用。此外,這個屬性的值現在一律與 WatchState.watchFaceInstanceId 一致。(I323b9)
  • 由於架構的基礎問題已修正,不再需要使用 getPendingIntentForTouchEvent API,因此所有相關的 API 都已移除。即使最近按下主畫面按鈕,Watchfaces 也不需要執行 PendingIntents 專用的任何特殊功能。(I1f2e8)
  • 我們新增了 RendererParameters.isForScreenShot,如果算繪是針對螢幕截圖,則此值為 True。某些含有動畫的錶面需要知道這個值,才能做出調整,以確保呈現最佳效果。(I96d99)
  • 我們已將 WatchFaceExceptionReason 新增至 WatchFaceException,以提供錯誤的背景資訊。(I01d15)
  • 已移除 ComplicationDataSourceService.onImmediateComplicationRequestComplicationRequest.immediateResponseRequired 已新增至信號,供應商必須快速回應此信號 (最好少於 100 毫秒)。請注意,這項功能受到 com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE 特殊權限限制。(Ie6b23)
  • 根據 Tiramisu DP2 (I0cbb7) 更新核心和 appcompat 的可空值性

修正錯誤

  • 現在,如果結構定義驗證失敗,就會意外觸發錶面應用程式當機 (Ia400f)

1.1.0-alpha03 版本

2022 年 2 月 9 日

androidx.wear.watchface:watchface-*:1.1.0-alpha03 發布。1.1.0-alpha03 版本包含這些修訂版本。

API 異動

  • 我們為階層式樣式結構定義新增了實驗性支援。我們已將新的屬性新增至 androidx.wear.watchface.style.UserStyleSetting.Option,這個子項設定最初僅供 ListOption 使用。這允許樣式的階層結構被用於編輯器 UI,但基礎 UserStyle 維持不變,仍然是 Map<String, ByteArray>。(Iaf6f4)
  • 我們新增了 WatchFace.OverlayStyle,可讓錶面設定系統狀態疊加層的算繪方式。(I8520d)
  • 我們針對 CanvasRenderer 推出了 clearWithBackgroundTintBeforeRenderingHighlightLayer (一個新的選用建構函式參數,預設值為 false),如果設為 true,畫布會連同背景色彩的顏色清除。(Ie01e5)
  • 新增 androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED 中繼資料金鑰,讓小工具資料來源表示可以提供無需設定的預設值 (Icc0d4)
  • 編輯錶面時,常會出現互動式與無頭執行個體。為協助節省記憶體,我們引入了 Renderer.SharedAssets,以允許錶面轉譯器在執行個體之間共用不可變資料 (例如紋理和著色器)。GlesRenderer.setEglConfigGlesRenderer.setEglDisplay 已淘汰,因此不應設定這些項目,這樣做會導致無法定義的行為。(I0d9e7)
  • 我們已將 setNameResourceIdsetScreenReaderNameResourceId (參照字串資源) 新增至 ComplicationSlot.Builder 以及 androidx.wear.watchface.client.ComplicationSlotState 中對應的 getter。這樣系統可以擷取 ComplicationSlots 的名稱,以供編輯器和螢幕閱讀器使用。(If6c6a)
  • WatchfaceMetadataClient.getUserStyleSchemagetComplicationSlotMetadataMap 現在擲回 WatchFaceException,而不是 RemoteException。(I86f11)
  • 已將 onSynchronousComplicationRequestComplicationDataSourceService 中的相關函式重新命名為 onImmediateComplicationRequest 等等。(I87ba0)
  • 與隨附編輯器相比,錶面編輯器的螢幕空間較少,因此它可以支援在錶面編輯器中使用不同的圖示。此修補程式會將 OnWatchEditorData (目前只包含圖示) 新增至所有 UserStyleSettings 和適當的 Option 類別。(If1886)
  • 我們已將 @JvmOverloads 新增至 ListenableGlesRenderer 的建構函式,以便改善 Java 互通性。(I2974a)

修正錯誤

  • ListenableGlesRenderer 的建構函式現已正確標示為 @Throws(GlesException::class),現在可以在 Java 中擴充此類別。(Iac6d0)
  • 修正 PhotoImageComplicationData tapAction 無法正確處理的錯誤 (I1cc30)

1.1.0-alpha02 版本

2022 年 1 月 12 日

androidx.wear.watchface:watchface-*:1.1.0-alpha02 發布。1.1.0-alpha02 版本包含這些修訂版本。

新功能

  • 為協助偵錯及測試,ComplicationData 和相關子類別現在覆寫了雜湊碼、等於和 toString 方法,讓這些類別更容易使用。

API 異動

  • WatchfaceMetadataClient 方法會視情況再次擲回 RemoteExceptions,以便用戶端程式碼能夠更輕鬆地從錶面擷取錯誤。(I78785)
  • ComplicationData 和子類別現已採用雜湊碼、等於和 toString。(I24bc6)

1.1.0-alpha01 版本

2021 年 12 月 15 日

發布 androidx.wear.watchface:watchface-*:1.1.0-alpha011.1.0-alpha01 版本包含這些修訂版本。

新功能

  • 現在可以在 XML 中定義 UserStyleSchemaComplicationSlots。這項功能可簡化錶面的結構。此外,由於 WatchFaceMetadataClient 查詢不必連結至服務以取得中繼資料,因此查詢速度會更快。WatchFaceMetadataClientListenableWatchFaceMetadataClient 已不再為實驗性功能,因此將加入穩定版 API 中。系統可選擇性地支援錶面的多個執行個體,而每個執行個體具有不同的使用者定義樣式選項。這些內容會顯示在錶面挑選器中。如要加入錶面,必須在資訊清單中加入下列中繼資料標記。

        <meta-data
            android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
            android:value="true" />
    
  • 為支援部分錶面具有 UserStyle 中未擷取的狀態,以及多個執行個體,錶面的執行個體 ID 現在可透過 WatchState.watchFaceInstanceId 取得。

  • 系統正在快取 ComplicationData,以便在資料載入時立即顯示小工具。有時候系統會在記憶體中快取 ComplicationData,有時是由錶面程式庫序列化。序列化任何相關的 tapAction 時,如果損失該動作,ComplicationData.tapActionLostDueToSerialization 會傳回 true,而錶面會以不同方式呈現小工具 (例如顯示為灰色或半透明),以表示使用者不能輕觸此按鍵。系統會盡快將更新後的 ComplicationData 傳送至 tapAction

  • 部分 ComplicationData 不應長時間快取,為支援這一點,我們新增了更為通用的功能 ComplicationDataTimeline。這可以用來提供一系列有時間限制的 ComplicationData,以便傳遞到可以自動進行快取及更新的錶面上。例如今天的不同時段的天氣預報,或是多個即將到來的日曆活動。ComplicationRequestListener 擴充了新方法 onComplicationDataTimeline,供您用來傳回這項資料。

  • 我們擴充了 DefaultComplicationDataSourcePolicy,方便您指定 ComplicationType 用於主要和次要資料來源。

  • 我們新增了對同步小工具供應商的支援,其中小工具將以高於一般水平的頻率持續更新,當錶面可見並且處於非環境狀態時,最高更新頻率達每秒一次。注意:由於記憶體壓力問題,同步小工具提供商可能會限制其用量。

  • PendingIntentTapListener 變更可能已還原,因為我們解決了架構中的基本問題 (在按下主畫面按鈕後 5 秒內錶面仍無法啟動活動)。

API 異動

  • ComplicationData.isCached 已變更為 tapActionLostDueToSerialization,在判斷是否要以不同的方式算繪小工具版位,以表示其不能被輕觸時,這會更有用。(I6de2f)
  • ComplicationDataTimeline 新增至 wear-complication-data-source。這可以用來提供一系列有時間限制的 ComplicationData,以便傳遞到可以自動進行快取及更新的錶面上。例如今天的不同時段的天氣預報,或是多個即將到來的日曆活動。ComplicationRequestListener 擴充了新方法 onComplicationDataTimeline,供您用來傳回這項資料。有新的 Kotlin 包裝函式 SuspendingTimelineComplicationDataSourceService,用來停權資料來源服務。(Idecdc)
  • 新增 PendingIntentTapListenerWatchFaceControlClient.getPendingIntentForTouchEvent。這可以協助需要啟動意圖以回應輕觸動作的錶面解決以下問題:使用者輕觸主畫面按鈕後,架構會阻止在 5 秒內啟動新活動。(I98074)
  • 引入每個錶面 ComplicationData 的快取。這麼做的用意是允許錶面在載入期間顯示最終的小工具資料值,直到系統有機會更新為止。有一個新的 API 方法 WatchFaceControlClient.hasComplicationCache,適用於原始設備製造商 (OEM)。這可能會影響系統傳送小工具到錶面的策略。此外,ComplicationData 具有 isCached 屬性,建議以不同方式算繪快取的小工具,因為 tapAction 無法快取,且在快取小工具中為 null。(I404b0)
  • 現在可以透過 WatchState.watchFaceInstanceId 取得錶面的執行個體 ID。大多數的錶面都不需要使用這項功能,但假如有一個錶面狀態未儲存在結構定義中,那麼這就是識別錶面執行個體的金鑰。為方便支援這項功能,現在可以在呼叫 WatchFaceControlClient.createHeadlessWatchFaceClient 時提供 ID。(I1ff98)
  • 擴充 DefaultComplicationDataSourcePolicy,可設定主要、次要供應商和備用系統供應商的預設 ComplicationTypesComplicationSlot.defaultDataSourceType 現已淘汰。(If0ce3)
  • ComplicationSlot.configExtras 現在可以變更,而且在呼叫 EditorSession.openComplicationDataSourceChooser() 之前都可以更新。(I6f852)
  • 新增 WatchFace.setComplicationDeniedDialogIntentsetComplicationRationaleDialogIntent。系統在要求小工具權限之前會啟動這些意圖以顯示對話方塊,此外,系統還會顯示另一個對話方塊,說明在權限遭拒時編輯小工具所需的權限 (供應商選擇工具無法開啟,因此需要顯示對話方塊)。(I3a29c)
  • 現在可以在 XML 中定義 UserStyleSchemaComplicationSlots。這可簡化錶面建構功能,並加快 WatchFaceMetadataClient 查詢的速度,因為這類查詢不需要與服務繫結而取得中繼資料。(I85bfa)
  • 已新增 InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent,以便用戶端判斷錶面是否支援 getPendingIntentForTouchEvent。(I0b917)
  • WatchFaceMetadataClientListenableWatchFaceMetadataClient 不再是實驗版,可用來盡量高效地取得錶面中繼資料,無需開啟錶面繫結器。(Ibb827)
  • 新增同步小工具供應商的支援,小工具的更新頻率高於正常頻率,當錶面可見並且處於非環境狀態時,最高更新頻率達每秒一次。如要使用這個供應商,必須在資訊清單中加入新的 androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS 中繼資料標記並覆寫 onSynchronousComplicationRequest。視資料來源的性質而定,可能還必須覆寫 onStartSynchronousComplicationRequestsonStopInteractiveComplicationRequests,以便在小工具進出互動模式下獲取通知。(I8fe9d)

1.0 版本

1.0.1 版本

2022 年 2 月 9 日

androidx.wear.watchface:watchface-*:1.0.1 發布。1.0.1 版本包含這些修訂版本。

修正錯誤

  • 修正 PhotoImageComplicationData tapAction 無法正確處理的錯誤 (I1cc30)

1.0.0 版本

2021 年 12 月 1 日

androidx.wear.watchface:watchface-*:1.0.0 發布。1.0.0 版本包含這些修訂版本。

1.0.0 的主要功能

androidx.wear.watchface 套件是建議的最新程式庫,用於開發 WearOS 錶面。相較於舊版穿戴式裝置支援程式庫,這個版本推出了許多新功能。

  • 程式庫 (例如 androidx.wear.watchface.style) 可直接支援使用者樣式 (例如變更調色盤、手錶樣式、小時標記等等)。現在可以使用 androidx.wear.watchface.editor 更輕鬆地開發錶面編輯器,可以從系統隨附應用程式編輯錶面,而無需撰寫任何程式碼。
  • 應用最佳做法。這個程式庫會針對小工具自動產生螢幕閱讀器內容標籤 (您也可以自行新增標籤),而且當電池電量不足且無法充電時,影格速率會自動降低以延長電池使用壽命。
  • 減少了開發錶面所需的程式碼,尤其小工具數量,它們將許多樣板移至程式庫。

修正錯誤

  • 修正 EditorSession.userStyle.compareAndSet (I6f676)
  • 修正錶面的短期延遲 (Iffb97)
  • 在 UI 執行緒中分配 InteractiveWatchFaceImpl.onDestroy (I83340)
  • 修正廣播接收器的多個問題 (I7d25f)

1.0.0-rc01 版本

2021 年 11 月 3 日

androidx.wear.watchface:watchface-*:1.0.0-rc01 發布。1.0.0-rc01 版本包含這些修訂版本。

修正錯誤

  • 修正因流程遷移而中斷的 dump() (由 adb shell dumpsys 呼叫)。(087cf9e)

  • 確保 writeDirectBootPrefs 的正確排序。我們希望一律在 initStyleAndComplications 之後執行 writeDirectBootPrefs,或者我們可能延遲 UI 執行緒 init (37650ac)。

  • 請務必呼叫 Renderer.onDestroy。如果已建立轉譯器,但 WF init 尚未完成,而呼叫 Engine.onDestroy,則必須呼叫 Renderer.onDestroy。(f9952dc)

  • 最佳化/修正為 isBatteryLowAndNotCharging。此修補程式會提前開始 isBatteryLowAndNotCharging 的初始化設定,這表示使用者可以與 createWatchFace 並行執行這項作業。此外,我們現在可以監聽 ACTION_POWER_DISCONNECTED。(ddffd80)

  • InteractiveWatchFaceClientImpl.isConnectionAlive 在關閉後將變為 false (ab9774e)

1.0.0-beta01 版

2021 年 10 月 27 日

androidx.wear.watchface:watchface-*:1.0.0-beta01 發布。1.0.0-beta01 版本包含這些修訂版本。

1.0.0-alpha24 版本

2021 年 10 月 13 日

androidx.wear.watchface:watchface-*:1.0.0-alpha24 發布。1.0.0-alpha24 版本包含這些修訂版本。

API 異動

  • 套件 androidx.wear.watchface.complications 中的類別已移至新的 wear:watchface:watchface-complications 專案。請注意,這意味著您無法加入此程式庫以及先前的任何 Alpha 版 wear:watchface:watchface-complications-data,而是會收到類別重複的錯誤訊息。(I97195)
  • Renderer.dump 已重新命名為 Renderer.onDump,並已透過 @UiThread 加上註解。(I44845)
  • InteractiveWatchFaceClient.addWatchFaceReadyListener 已重新命名為 addOnWatchFaceReadyListener,而 removeWatchFaceReadyListener 已重新命名為 removeOnWatchFaceReadyListener。(I48fea)
  • EditorSession 的 getComplicationsPreviewDatagetComplicationsDataSourceInfo 不再是停權函式,而是 StateFlow<> 屬性且值初始為空值。已從 ListenableEditorSession 移除 getListenableComplicationPreviewDatagetListenableComplicationsProviderInfo,並改用基礎類別中的新 StateFlow<> 物件。如果您需要監聽 Java 程式碼中的變更,請考慮使用 androidx.lifecycle.FlowLiveDataConversions.asLiveData 來轉換成 LiveData<>。(Ic5483)

1.0.0-alpha23 版本

2021 年 9 月 29 日

androidx.wear.watchface:watchface-*:1.0.0-alpha23 發布。1.0.0-alpha23 版本包含這些修訂版本。

新功能

錶面程式庫現為單一程式庫群組,因此該程式庫已遷移,您必須按照下列方式更新 Gradle 匯入作業:

舊版 新版
androidx.wear:wear-complications-data androidx.wear.watchface:watchface-complications-data
androidx.wear:wear-complications-data-source androidx.wear.watchface:watchface-complications-data-source
androidx.wear:wear-watchface androidx.wear.watchface:watchface
androidx.wear:wear-watchface-complications-rendering androidx.wear.watchface:watchface-complications-rendering
androidx.wear:wear-watchface-client androidx.wear.watchface:watchface-client
androidx.wear:wear-watchface-client-guava androidx.wear.watchface:watchface-client-guava
androidx.wear:wear-watchface-data androidx.wear.watchface:watchface-data
androidx.wear:wear-watchface-editor androidx.wear.watchface:watchface-editor
androidx.wear:wear-watchface-editor-guava androidx.wear.watchface:watchface-editor-guava
androidx.wear:wear-watchface-guava androidx.wear.watchface:watchface-guava
androidx.wear:wear-watchface-style androidx.wear.watchface:watchface-style

API 異動

  • 將各自獨立的 androidx.wear 錶面和小工具程式庫遷移至 androidx.wear.watchface 程式庫群組。(b25f3c0)
  • 已新增 EditorRequest.canWatchFaceSupportHeadlessEditing,讓客戶瞭解錶面編輯器是否支援無標題編輯功能。請注意,使用此功能時會出現一些偽陰性,因為現在 asop/1756809 中新增支援功能,可以為所有未來的錶面回傳正確的值。(ca55590)
  • 轉譯器現在採用 dump() 方法,可覆寫該方法以將自訂資料新增至 ABD shell dumpsys 活動服務 WatchFaceService 產生的資訊。(95235f9)
  • InteractiveWatchFaceClient.addWatchFaceReadyListener 現在會先指定執行工具。(563ac2f)
  • 現已移除 StateFlowCompatHelper。請改用 asLiveData (androidx.lifecycle.asLiveData)。(bd35d3)
  • CurrentUserStyleRepository.userStyle 不再是可變動項目。(I44889)
  • WatchFaceReadyListener 已重新命名為 OnWatchFaceReadyListener。(Ic12a9)

修正錯誤

  • 利用 InteractiveInstanceManager.deleteInstance 呼叫 onDestroy,這是必要步驟,可確保 InteractiveWatchFaceImpl 獲得垃圾收集 (fce4af8b/199485839)。