Wear Watchface
注: 2024 年 7 月 10 日以降、Wear OS 5 がプリインストールされたデバイスにウォッチフェイスをインストールするには、Watch Face Format が必要です。また、2025 年 1 月 27 日以降、Google Play で公開するすべての新しいウォッチフェイスにも Watch Face Format が必要です。
ユーザー向けの変更について詳しくは、こちらのヘルプセンター記事をご覧ください。
最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
2024 年 9 月 18 日 | 1.2.1 | - | - | 1.3.0-alpha04 |
依存関係の宣言
Wear への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle
ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { // Use to implement wear watchfaces implementation "androidx.wear.watchface:watchface:1.2.1" // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation "androidx.wear.watchface:watchface-editor:1.2.1" // 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.2.1" }
Kotlin
dependencies { // Use to implement wear watchfaces implementation("androidx.wear.watchface:watchface:1.2.1") // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation("androidx.wear.watchface:watchface-editor:1.2.1") // 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.2.1" }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
バージョン 1.3
バージョン 1.3.0-alpha04
2024 年 9 月 18 日
androidx.wear.watchface:watchface-*:1.3.0-alpha04
がリリースされました。バージョン 1.3.0-alpha04 に含まれる commit はこちらをご覧ください。
新機能
UserStyleSettings
とUserStyleOptions
でアイコンの遅延読み込みのサポートを追加しました。これにより、ウォッチフェイスの読み込みのパフォーマンスが向上します。(Iaf43d)- 新しい
Watchface.setUpdateScreenshotOnConfigurationChange
を使用して、システム構成が変更されるたびに(ロケールが変更された場合など)更新されたスクリーンショットを取得するオプションを追加しました。この設定はデフォルトでオフになっています。(I765a1)
バグの修正
- 新しいプラットフォーム API へのアクセスの手動アウトラインを削除しました。これは、AGP 7.3 以降(R8 バージョン 3.3 など)で R8 を使用する場合、および AGP 8.1 以降(D8 バージョン 8.1 など)を使用するすべてのビルドで、API モデリングによって自動的に行われるためです。AGP を使用していないクライアントは、D8 バージョン 8.1 以降にアップデートすることをおすすめします。詳しくは、こちらの記事をご覧ください。(Ia60e0、b/345472586)
バージョン 1.3.0-alpha03
2024 年 4 月 17 日
androidx.wear.watchface:watchface-*:1.3.0-alpha03
がリリースされました。バージョン 1.3.0-alpha03 には、これらの commit が含まれています。
API の変更
- 編集中に基になるウォッチフェイス インスタンスの
ComplicationData
を一時的に設定するEditorSession#setOverrideComplications
を追加しました。ウォッチフェイスの追加機能の変更頻度が低い場合は、EditorSession#renderWatchFaceToBitmap
でオーバーライドを渡すよりも効率的です。(I19384)
バグの修正
- 以前は、
selectComplicationDataForInstant
はすべてのタイムラインに対してtoApiComplicationData
を呼び出していました。つまり、その後の === 参照の等価性テストは常に失敗していました。そのため、ウォッチフェイスの追加機能がフレームごとに再読み込みされ、バッテリーの消耗につながっていました。(717406)
バージョン 1.3.0-alpha02
2024 年 4 月 3 日
androidx.wear.watchface:watchface-*:1.3.0-alpha02
がリリースされました。バージョン 1.3.0-alpha02 に含まれる commit はこちらをご覧ください。
新機能
- 等価演算子のコストが高いため、best と
selectedData
の比較に参照等価を使用しています。(446b00)
API の変更
GoalProgressComplicationData
にフォールバックなしの動的 API を追加しました。(c33264)
バージョン 1.3.0-alpha01
2024 年 2 月 7 日
androidx.wear.watchface:watchface-*:1.3.0-alpha01
がリリースされました。バージョン 1.3.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
WatchFaceServices
は同時に初期化できるため、ステートレスである必要があります。これをサポートするために、StatefulWatchFaceService
が追加されました。StatefulWatchFaceService
では、createExtra()
によって作成されたユーザー定義の追加が、初期化中に呼び出されるすべてのオーバーライドに渡されます。GlesRenderer2
にコンストラクタのオーバーロードが追加され、eglChooseConfig
で順番に試す属性のリストを指定できるようになりました。
API の変更
StatefulWatchFaceService
で、createExtra()
によって作成されたユーザー定義の追加が渡されるgetComplicationSlotInflationFactory
のオーバーライドがサポートされるようになりました。(I82d9f)- ウォッチフェイスによっては、
createUserStyleSchema
中に作成された補助データを他の初期化方法と共有する必要があります。他に適切な方法がなかったため、デベロッパーは通常、WatchFaceServices
をステートフルにしました。これは危険です。複数のインスタンスが同時に作成され、バグにつながる可能性があります。この問題を解決するために、StatefulWatchFaceService
とStatefulWatchFaceRuntimeService
を導入しました。ここでは、ユーザー定義型がcreateExtra()
によって作成され、さまざまな作成メソッドにパラメータとして渡されます。(If8a99) getUserStyleFlavors
をInteractiveWatchFaceClient
に追加しました。これは主に OEM 向けのものです。(I0f5d8)GlesRenderer2
にコンストラクタのオーバーロードが追加され、eglChooseConfig
で順番に試す属性のリストを指定できるようになりました。たとえば、まずアンチエイリアシングありの構成を試し、必要に応じてアンチエイリアシングなしの構成にフォールバックできます。(I1ba74)- Android U 以降、WearOS に
SystemDataSources.DATA_SOURCE_HEART_RATE
のサポートが追加されます。このウォッチフェイスの追加機能は、SHORT_TEXT
ウォッチフェイスの追加機能のみをサポートすることが保証されていますが、OEM がライブ値ではなくヘルスアプリへのショートカットを提供する可能性があるため、ComplicationSlot
でSMALL_IMAGE
も受け入れることをおすすめします。(I34223) METADATA_KEY_CONFIG_RESTORE_SUPPORTED
を追加しました。Android U 以降では、METADATA_KEY_DATA_SOURCE_CONFIG_ACTION
を使用してウォッチフェイスの追加機能のデータソースのバックアップからシステムが復元されたときの処理を制御します。デフォルトでは、ウォッチフェイスの追加機能のデータソース サービスが構成データのバックアップをサポートしていると想定されますが、サポートしていない場合は、メタデータ設定METADATA_KEY_DATA_SOURCE_CONFIG_ACTION
を false に追加して、ウォッチフェイスの追加機能のスロットを未構成としてマークできます。(I6c505)
バージョン 1.2
バージョン 1.2.1
2024 年 1 月 24 日
androidx.wear.watchface:watchface-*:1.2.1
がリリースされました。バージョン 1.2.1 に含まれる commit については、こちらをご覧ください。
バグの修正
- Samsung Galaxy Watch 4、5、6 でのクラッシュを修正しました。(43f0b0)
バージョン 1.2.0
2023 年 11 月 29 日
androidx.wear.watchface:watchface-*:1.2.0
がリリースされました。バージョン 1.2.0 に含まれる commit については、こちらをご覧ください。
1.1.0 以降の重要な変更
- Android T で使用できるウォッチフェイスの追加機能の新しいタイプをサポートしました。
GoalProgressComplicationData
:RangedValueComplicationData
に似ていますが、目標の達成度を表すため、最小値が暗黙的にゼロであり、targetValue
より大きい値を許容する点が異なります。WeightedElementsComplicationData
は、要素の配列(太さと色のペア)とオプションのテキスト/タイトル/画像で構成されます。これは円グラフとして表示されることがありますが、通常はラベルをレンダリングするスペースがウォッチフェイスの追加機能にないため、コンテキストに応じて色の意味がわかるようにする必要があります。
- オプションの
ColorRanges
のサポートをRangedValueComplicationData
に追加しました。通常、ウォッチフェイスの追加機能は、ウォッチフェイスが選択した色でレンダリングされますが、ComplicationDataSource
は特定の意味論的意味がある場合などに色を設定するのに適しています(温度に応じて赤色から青色に変化するなど)。 - ほぼすべてのタイプの
ComplicationData
がSmallImages
をサポートするようになりました。 ComplicationDisplayPolicy
を追加して、DO_NOT_SHOW_WHEN_DEVICE_LOCKED
により、対応するウォッチフェイスでウォッチフェイスの追加機能がデバイスのロック中に表示されないようにしました。- Android T 以降、OEM はウォッチフェイスの追加機能のリクエストについて、
ComplicationRequest#isForSafeWatchFace
により、該当のプロバイダのマニフェストでandroid.support.wearable.complications.SAFE_WATCH_FACES
メタデータで定義されたリストに含まれるウォッチフェイスからのリクエストであるかどうかを判断できるようになります。プロバイダが TargetWatchFaceSafety.UNKNOWN 以外を受け取るには、com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
権限が必要です。 UserStyleFlavors
は試験運用版ではなくなりました。
バージョン 1.2.0-rc01
2023 年 10 月 18 日
androidx.wear.watchface:watchface-*:1.2.0-rc01
がリリースされました。バージョン 1.2.0-rc01 に含まれる commit については、こちらをご覧ください。
バージョン 1.2.0-beta02
2023 年 9 月 6 日
androidx.wear.watchface:watchface-*:1.2.0-beta02
がリリースされました。バージョン 1.2.0-beta02 に含まれる commit については、こちらをご覧ください。
新機能
SuspendingComplicationDataSourceService#onDestroy
をご覧いただけます。システムのデフォルトの天気追加機能のサポートは終了しました。
API の変更
- 「天気情報のウォッチフェイスの追加機能に新しいデータソースを公開する」を元に戻します。(I6f335)
バージョン 1.2.0-beta01
2023 年 8 月 23 日
androidx.wear.watchface:watchface-*:1.2.0-beta01
がリリースされました。バージョン 1.2.0-beta01 に含まれる commit については、こちらをご覧ください。
新機能
- Android T 以降、Wear OS でデフォルトの天気システムのウォッチフェイスの追加機能がサポートされるようになりました。
API の変更
- ウォッチフェイスの追加機能に天気のデフォルト システム フォールバック機能を追加しました。(Ia0994)
- このパッチでは、
WatchFaceRuntimeService
とWatchFaceControlClient.createWatchFaceRuntimeControlClient
に加えて、guava ラッパーが追加されます。これにより、ウォッチフェイス ランタイムのサポートが追加されます。ウォッチフェイス ランタイムは、別のパッケージから定義を読み込む特別な種類のウォッチフェイスです。現在、Wear OS は Android Watch Face Format のランタイムのみをサポートしています。(I2799f) - このパッチは aosp/2636578 のフォローアップです。ここでは、int 定義の名前を変更し、
WatchFaceType
、CanvasType
、TapType
、ComplicationsSlotBoundsType
に依存するコードを変更する必要がなくなります。(I4098b) - 互換性抑制のアノテーションを付けるように API ファイルを更新しました。(I8e87a、b/287516207)
- このパッチにより、
WatchFaceTypes
のWatchFaceType
定数、CanvasTypes
のCanvasType
定数、TapTypes
のTapType
定数、ComplicationsSlotBoundsType
のComplicationsSlotBoundsType
定数が公開されます。(I3b85a、b/288750666) WatchFace.OverlayStyle
の使用頻度が非常に低く、OEM によるサポートも十分ではないため、今後削除する予定で非推奨としています。(I7344a)
バージョン 1.2.0-alpha09
2023 年 6 月 21 日
androidx.wear.watchface:watchface-*:1.2.0-alpha09
がリリースされました。バージョン 1.2.0-alpha09 に含まれるコミットについては、こちらをご覧ください。
新機能
RangedValueComplicationData.Builder
がDynamicFloat
を受け入れるようになり、ComplicationText
のサブクラスとして新しいDynamicComplicationText
が利用可能になりました。どちらも、動的な式と、サポートされている Wear 4 デバイスで 1 Hz で更新されるプラットフォーム バインディングを利用できます。
API の変更
- 1 日の距離、1 日の消費カロリー、1 日の階数の動的タイプを追加しました。プラットフォームの健全性情報源のキーが
PlatformHealthSources.Keys
に移動しました(Ib7637) PlatformDataProvider
を実装して、心拍数と 1 日の歩数を提供します。SensorGateway
インターフェースが公開 API から削除されました。(I55b84)StateEntryValue
の名前をDynamicDataValue
に変更し、DynamicDataKey
を使用するように状態 API を更新しました。(If1c01)- アプリのプッシュ状態にアクセスするための
AppDataKey
を追加。プラットフォーム データにアクセスするためのPlatformDataKey
を追加。StateStore
に名前空間のサポートを追加。(I7985e) enable
メソッドとdisablePlatformSource
メソッドがDynamicTypeEvaluator
から削除されました。更新は呼び出し元が行う必要があります。(I78c6d)- バインドされたデータ型のサイズの上限を設定できるようにします。(Ie2966)
バージョン 1.2.0-alpha08
2023 年 4 月 19 日
androidx.wear.watchface:watchface-*:1.2.0-alpha08
がリリースされました。バージョン 1.2.0-alpha08 に含まれる commit については、こちらをご覧ください。
新機能
- Android T 以降、
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
権限を持つウォッチフェイスの追加機能プロバイダは、安全なウォッチフェイスのandroid.support.wearable.complications.SUPPORTED_TYPES
をオーバーライドするandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
メタデータを登録できます。つまり、ウォッチフェイス プロバイダは、信頼できるウォッチフェイスと信頼できないウォッチフェイスに異なるタイプを配信できます。
API の変更
@Deprecated
クラスのプロパティへの伝播(I882d1、b/271441831)Enum.valueOf
の値パラメータ名を変更しました。(Ia9b89)- 列挙型 valueOf から例外が多くスローされるようになりました。(I818fe)
renderWatchFaceToSurface
を削除し、代わりにcreateRemoteWatchFaceView
を導入しました。createRemoteWatchFaceView
は SurfaceControlViewHost 上に構築されており、呼び出し元がウォッチフェイスからビューを埋め込むことができます。このビューは、クライアントがRemoteWatchFaceViewHost#renderWatchFace
を呼び出すときにレンダリングされます。(Ib311d)renderWatchFaceToSurface
をInteractiveWatchFaceClient
、HeadlessWatchFaceClient
、EditorSession
に追加しました。通常、ビットマップへのレンダリングよりもパフォーマンスが向上します。(Ieacad)ObservableStateStore
の名前がStateStore
に変更されました。(Ieb0e2)- コンストラクタ引数の代わりに
DynamicTypeEvaluator.Builder
を追加し、ObservableStateStore
など、より多くのオプション引数を許可しました。デフォルトで空のストアになります。(I6f832) DynamicTypeEvaluator
のパラメータの順序をリファクタリングしました。(Ic1ba4)DynamicTypeEvaluator.bind
メソッドに Executor が追加されました。(I346ab)- 動的型がバインドされた後に評価をトリガーするために、
BoundDynamicType
にstartEvaluation
メソッドを追加しました。(I19908) com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
権限を持つウォッチフェイスの追加機能プロバイダは、安全なウォッチフェイスのandroid.support.wearable.complications.SUPPORTED_TYPES
をオーバーライドするandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
メタデータを登録できます。(Id1c73)CustomValueUserStyleSettings2
の名前をLargeCustomValueUserStyleSettings
に変更しました。(Ic17ac)
バグの修正
DynamicTypeValueReceiver#onPreUpdate
を削除しました。(I2dc35)
バージョン 1.2.0-alpha07
2023 年 2 月 22 日
androidx.wear.watchface:watchface-*:1.2.0-alpha07
がリリースされました。バージョン 1.2.0-alpha07 に含まれる commit については、こちらをご覧ください。
新機能
Android T 以降、OEM はウォッチフェイスの追加機能のリクエストについて、
ComplicationRequest#isForSafeWatchFace
により、該当のプロバイダのマニフェストでandroid.support.wearable.complications.SAFE_WATCH_FACES
メタデータで定義されたリストに含まれるウォッチフェイスからのリクエストであるかどうかを判断できるようになります。そうしたプロバイダがTargetWatchFaceSafety.UNKNOWN
以外を受け取るには、com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
権限が必要です。Android T より、容量が最大 12.5 KB の
CustomValueUserStyleSetting2
を利用可能です。これまでのCustomValueUserStyleSetting
の上限は 1 KB でした。このようにサイズの上限は引き上げられましたが、データの編集時に設定が Bluetooth 経由で送信され、Bluetooth の帯域幅が限られているため、ウォッチフェイスのデベロッパーはデータを小さく抑えることが推奨されます。
API の変更
- 省略可能なパラメータ
eglContextAttribList
をGlesRenderer
とGlesRenderer2
に追加しました。これにより、EGL14.eglCreateContext
に渡されるEGL14.EGL_CONTEXT_CLIENT_VERSION
を設定できるようになります。(I2a83e) - ウォッチフェイスのライブラリを
java.util.function.Consumer
ではなくandroidx.core.util.Consumer
に移行しました。(I273f5) - KT プロパティ アクセサから例外が多くスローされるようになりました。(Iff9d9)
InteractiveWatchFaceClient.isComplicationDisplayPolicySupported
を追加しました。これによりクライアントが、古いウォッチフェイスの代わりにサポートをエミュレートする必要があるかどうかを判断できるようになりました。(I24c89)isForSafeWatchFace
をトライステートのIntDef
とすることになりました。(Ief2f7)- Android T では
ComplicationRequest.isForSafeWatchFace
を導入しました。これは OEM 向けで、使用にはcom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
が必要です。システム イメージのデータソースについては、リクエスト元のウォッチフェイスが、マニフェストでデータソースにより指定された安全なウォッチフェイスのリストに含まれている場合、true が返されます。(I0cbb6) - Android T では、容量が最大 12.5 KB の
CustomValueUserStyleSetting2
を追加しました。これまでのCustomValueUserStyleSetting
の上限は 1 KB でした。(I0b100)
バージョン 1.2.0-alpha06
2023 年 1 月 25 日
androidx.wear.watchface:watchface-*:1.2.0-alpha06
がリリースされました。バージョン 1.2.0-alpha06 に含まれる commit については、こちらをご覧ください。
新機能
- 現在、ウォッチフェイスの追加機能のプラットフォーム バインディングのサポートを追加する作業が行われています。まだご利用いただけませんが、続報をお待ちください。
- 新しいウォッチフェイスの追加機能のタイプである GOAL_PROGRESS と WEIGHTED_ELEMENTS に XML
ComplicationSlot
サポートを追加しました。
バグの修正
- Samsung デバイスでウォッチフェイス エディタが適切にリリースされなかったリークを修正しました(3b5987)
- 複数のお気に入りがあるウォッチフェイスを切り替えるときに、ウォッチフェイスの追加機能が正しく表示されないバグを修正しました(b38ece)
- perOptionScreenReaderNames でウォッチフェイスがクラッシュするシリアル化バグを修正しました(e9f466)
バージョン 1.2.0-alpha05
2022 年 12 月 7 日
androidx.wear.watchface:watchface-*:1.2.0-alpha05
がリリースされました。バージョン 1.2.0-alpha05 に含まれる commit については、こちらをご覧ください。
新機能
少し前に、階層
UserStyleSettings
のサポートを追加しました。Android T 以降では、階層に複数のComplicationSlotsUserStyleSetting
を含めることができるようになりました。ユーザーのスタイル選択に基づいて、1 つのComplicationSlotsUserStyleSetting
のみがアクティブになります。screenReaderName
フィールドを追加することで、ListOption
とComplicationSlotsOption
のスクリーン リーダーのサポートを改善しました。Android T より前では、このフィールドはコンパニオン エディタでは無視されるようになっています。
API の変更
- エディタで使用できるように、新しいオプションの
screenReaderName
フィールドがListOption
とComplicationSlotsOption
に追加されました。Android T より前のデバイスでは、コンパニオン エディタでは無視されます。(I75326) - Android T 以降、スタイル階層で複数の
ComplicationSlotsUserStyleSettings
がサポートされるようになりましたが、アクティブにできるのは一度に 1 つまでです。有効なComplicationSlotsOption
がある場合にそれを見つけられるように、ユーティリティ関数findComplicationSlotsOptionForUserStyle
をUserStyleSchema
に追加しました。(Ic2b06) RangedValuesTypes
がRangedValueComplicationData
のコンパニオン オブジェクトに取り込まれ、名前がTYPE_UNDEFINED
、TYPE_RATING
に変更され、新しいTYPE_PERCENTAGE
が追加されました。(I55d02)- 試験運用版
DynamicFloat
の名前をFloatExpression
に変更し、@hide
としてマークしました。(Idf4f1) @JvmDefaultWithCompatibility
アノテーションを追加しました。(I8f206)
バージョン 1.2.0-alpha04
2022 年 11 月 9 日
androidx.wear.watchface:watchface-*:1.2.0-alpha04
がリリースされました。バージョン 1.2.0-alpha04 に含まれる commit については、こちらをご覧ください。
新機能
- Android T について、ウォッチフェイスの追加機能の新しい 2 つのタイプ(
GoalProgressComplicationData
とWeightedElementsComplicationData
)のサポートを追加しました。 GoalProgressComplicationData
はRangedValueComplicationData
に似ていますが、(RangedValueComplicationData
の場合は値が [min .. max] の範囲に収まるのに対して)対象とする値を超えることがあるため、ビジュアル デザインに影響してすべてのウォッチフェイスに対応できなくなる可能性があります。GoalProgressComplicationData
により、円グラフなどで単純なデータの内訳を確認できるようになりました。ColorRamps
のサポート(オプション)をRangedValueComplicationData
に追加しました。- Android T について、
ComplicationPersistencePolicy
とsetCachePolicy
をComplicationData
に追加しました。これにより、ウォッチフェイスの追加機能が保持されるかどうか(再起動の後にキャッシュに保存されるかどうか)をプロバイダが管理できるようになりました。ほとんどのウォッチフェイスの追加機能では、キャッシュ制御を設定する必要はありませんが、設定しておくと、頻繁に更新される追加機能(健康に関するデータのウォッチフェイスの追加機能など)の場合に、古いデータで特殊なケースを修正できることもあります。また、ComplicationDisplayPolicy
を追加して、DO_NOT_SHOW_WHEN_DEVICE_LOCKED
により、対応するウォッチフェイスでウォッチフェイスの追加機能がデバイスのロック中に表示されないようにしました。(Ic9574)
API の変更
GoalProgressComplicationData
、WeightedElementsComplicationData
、ColorRamp
は試験運用版ではなくなりました。(Ica9e2)ComplicationPersistencePolicy
とComplicationDisplayPolicy
が Android T の API として適切にマークされるようになりました。(I31d88)- 非推奨の
ComplicationSlotOverlay
コンストラクタにDeprecationLevel.WARNING
が追加され、Java から再度呼び出せるようになりました。(Ib308c) ComplicationRequestListener
、CanvasComplication
、ComplicationTapFilter
、InteractiveWatchFaceClient
の Java 互換性の問題を、@JvmDefaultWithCompatibility
アノテーションを付けることで修正しました。(Id94fc)- 試験運用版の
ProtoLayoutComplicationData
とListComplicationData
を削除しました。これらの API についてのデベロッパー ストーリーが明確ではなかったため、Google では今後また確認していく予定です。(I9df05) ValueType
を再びRangedValueComplicationData
に追加しました。WeightedElementsComplicationData
で背景色がサポートされるようになりました。DiscreteRangedValueComplicationData
を、その機能がWeightedElementsComplicationData
のサブセットであるため、削除しました。(I6446c)
バグの修正
isForScreenShot
を equals とハッシュコードに含めます。onRenderParametersChanged
が正しいisForScreenshot
値を取得していることを確認します。(I04a41)- ヘッドレス クライアントからの
WatchFaceControlService
のリークを修正しました。(e90e00)
バージョン 1.2.0-alpha03
2022 年 10 月 5 日
androidx.wear.watchface:watchface-*:1.2.0-alpha03
がリリースされました。バージョン 1.2.0-alpha03 に含まれる commit については、こちらをご覧ください。
新機能
- 新機能はありませんが、ウォッチフェイス エディタに関するバグをいくつか修正しました。
API の変更
rootUserStyleSettings
が試験運用版ではなくなったため、UserStyleSchema.userStyleSettings
が非推奨になりました。(Ie96e3)rootUserStyleSettings
が試験運用版ではなくなりました。(I8d6b3)WatchFaceColors
は一部のシステムではサポートされていないため、試験運用版としてマークされました。(I6d75d)DisconnectReasons
を公開 API で公開し、IntDef
で使用できるようにしました。(I791f8)
バグの修正
SysUI
が停止した場合は、ウォッチ エディタで開いている画面が閉じるようになりました。SysUI
が停止してもウォッチフェイス エディタが閉じないと、ユーザーによるスタイルの変更を保持するためにシステムがSysUI
に依存した状態になり、ウォッチフェイスが一貫性のない状態のままになる可能性があります。(ba762a)ComplicationDataSourceInfoRetriever
のメモリリーク(Kotlin コルーチンが継続することで gc root として機能し、エディタのアクティビティが保持されてしまう)を修正しました。(33ee06)
バージョン 1.2.0-alpha02
2022 年 9 月 21 日
androidx.wear.watchface:watchface-*:1.2.0-alpha02
がリリースされました。バージョン 1.2.0-alpha02 に含まれる commit については、こちらをご覧ください。
新機能
ウォッチフェイスには、視覚的に影響を及ぼす
UserStyle
以外の設定もあります(背景写真の選択など)。Renderer.sendPreviewImageNeedsUpdateRequest
を追加し、ウォッチフェイスは更新されたプレビュー画像をリクエストできるようになりました。この機能を利用するには対応するシステムのアップデートが必要です。また、ウォッチフェイスの色をシステムに公開するための API も追加し、これに基づいてカラーパレットを選択できるようになりました。これはパッチ適用後の試験運用版ですので注意してください。
ほぼすべてのタイプの
ComplicationData
がSmallImages
をサポートするようになりました。
API の変更
- 壁紙マネージャーは、エンジンから切り離され、別のエンジンを作成することがあります。
DisconnectReason
int def を追加し、DisconnectReason
を含む新しいメソッドでClientDisconnectListener
を拡張しました。これによってリスナーはエンジンのデタッチを監視できます。(I45cce) nameResourceId
とscreenReaderResourceId
の 2 つのオプションのパラメータをComplicationSlotOverlay
コンストラクタに追加しました(I157e8)PreviewImageUpdateRequestedListener
を持つgetOrCreateInteractiveWatchFaceClient
の新しいオーバーロード用の guava ラッパーを追加しました。(Ic31f0)Renderer.sendPreviewImageNeedsUpdateRequest
を追加しました。これは、外観に影響を与えるUserStyleSchema
以外の状態を持つウォッチフェイス(選択可能な背景画像を持つウォッチフェイスなど)に役立ちます。クライアント側では、これらのリクエストを監視するためのオプションのパラメータとしてPreviewImageUpdateRequestedListener
をgetOrCreateInteractiveWatchFaceClient
に追加しました。(Iff44a)WatchFaceColors
を公開するための API を簡略化し、レンダラにウォッチフェイスが設定できるwatchFaceColors
というシンプルなプロパティを追加しました。これはスタイルの変更に応じて、必要であれば更新する必要があります。WallpaperManager
を使用して色の変化を監視する代わりに、OnWatchFaceColorsListener
をInteractiveWatchFaceClient
に追加しました。(I490bc)- ウォッチフェイスの視認性の高い 3 色を保持する
WatchFaceColors
クラスを追加し、レンダラにオープン メソッドwatchfaceColors
とnotifyWatchFaceColorsChanged
を追加しました。これにより、システムはWallpaperManager.getWallpaperColors
を介してウォッチフェイスの色を取得できます。(I3d611) ShortTextComplicationData
、RangedValueComplicationData
、NoPermissionComplicationData
(および試験運用版のDiscreteRangedValueComplicationData
、GoalProgressComplicationData
、WeightedElementsComplicationData
)はすべてSmallImages
をサポートするようになりました。ウォッチフェイスが複数の色を使用して追加機能を表示する場合、これまではモノクロ画像を使用する必要がありましたが、マルチカラーSmallImage
を使用できるようになりました。(I257df)- 代わりに
PreviewImageUpdateRequestedListener
をConsumer<>
にリファクタリングします。(Ia875d) - カスタムの単一抽象メソッド(SAM)タイプの
OnWatchfaceColorsListener
を汎用の Java SAM タイプ(Consumer)に置き換えます。(I0c489) PreviewImageUpdateRequestedListener
を指定していない古いgetOrCreateInteractiveWatchFaceClient
メソッドとlistenableGetOrCreateInteractiveWatchFaceClient
メソッドのサポートは終了しました。(Iec502)
バグの修正
DisconnectReason.BINDER_DIED
の名前がDisconnectReason.ENGINE_DIED
に変更されました。(I4eb0e)
バージョン 1.2.0-alpha01
2022 年 8 月 10 日
androidx.wear.watchface:watchface-*:1.2.0-alpha01
がリリースされました。バージョン 1.2.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
- さまざまな新しいウォッチフェイスの追加機能の形式に対して、試験運用サポートを追加しました。これは現在も開発中の分野です。この新しい形式は、予告なく変更される可能性があり、現在のところ
CanvasComplicationDrawable
によるレンダラのサポートはありません。 - ウォッチフェイスの追加機能用スロットにオプションでマージンを追加して、小さいウォッチフェイスの追加機能でもタップしやすくしました。
API の変更
- 試験運用版の
BoundingArc
クラスを変更できなくなりました。(If624a) - 小さいウォッチフェイスの追加機能は、タップするのが難しいことがあります。これに対処するために、レンダリングに影響を与えずにタップ可能な領域を増やすマージンのサポートを導入しました。コードまたは XML によって指定しない限り、
ComplciationSlots
のマージンはゼロです。(I14089) - null 以外のファクトリ インスタンスを返すように
getComplicationSlotInflationFactory(CurrentUserStyleRepository)
署名を変更しました。null を返すのは以前から誤りでしたが、この変更により、API コントラクトが明確になりました。(I0fcc0) createComplicationSlotsManager
との整合性を保つために、WatchFaceService.getComplicationSlotInflationFactory
メソッドにcurrentUserStyleRepository
引数を追加しました。(I2ddd2)UserStyleFlavors
は試験運用機能ではなくなりました。(I69cdc)RangedValueComplicationData
から試験運用版のValueType
を削除し、代わりに整数の範囲と値を除いてRangedValueComplicationData
と同様の試験運用版のDiscreteRangedValueComplicationData
を導入しました。また、試験運用版のGoalProgressComplicationData
を導入しました。これはRangedValueComplicationData
に似ていますが、目標の達成度を表すため、最小値が暗黙的にゼロであり、targetValue
より大きい値を許容する点が異なります。すべてのRangedValue
バリアントでは、monochromeImage、テキスト、タイトルのうち少なくとも 1 つを指定する必要があります。(I9590c)- システム ソフトウェアにはユースケースがないため、
ComplicationSlotState
からboundsWithMargins
を削除しました。(I42e26) WeightedElementsComplicationData
の試験運用版のサポートを追加しました。これは、要素の配列(太さと色のペア)とオプションのテキスト / タイトル / 画像で構成されます。これは円グラフとして表示されることがありますが、通常はラベルをレンダリングするスペースがウォッチフェイスの追加機能にないため、コンテキストに応じて色の意味がわかるようにする必要があります。(I87eea)- 試験運用版の
ColorRamps
(オプションでRangedValueComplicationData
とGoalProgressComplicationData
によって使用される)では、最大 7 つの色のシーケンスと、色を滑らかにトゥイーンするか、またはサイズが均等な単色の連続を段階的にレンダリングするかを示すフラグを指定できるようになりました。(I9f5bf) RangedValueComplicationData.drawSegmented
がvalueType
に変更されました。これは対応するValueType IntDef
を持つ int として、範囲値に意味論的意味を与えるもので、ウォッチフェイスの追加機能のレンダラが使用することで、スタイリングに影響を与えることができます。(I0616b)- オプションの
ColorRanges
の試験運用版サポートをRangedValueComplicationData
に追加しました。通常、ウォッチフェイスの追加機能は、ウォッチフェイスが選択した色でレンダリングされますが、ComplicationDataSource
は特定の意味論的意味がある場合などに色を設定するのに適しています(温度に応じて赤色から青色に変化するなど)。(I5153a) RangedValueComplicationData
に試験運用版のdrawSegmented
ヒントを追加しました。これにより、レンダラにセグメント付きの範囲値インジケーターを描画するように指示します(1 セグメント = 1 ユニット)。(I7d7c1)
バグの修正
- 事前定義された画面座標系を基準に
ComplicationSlotBounds
を定義する機能を追加しました。(I0985d)
バージョン 1.1
バージョン 1.1.1
2022 年 8 月 10 日
androidx.wear.watchface:watchface-*:1.1.1
がリリースされました。バージョン 1.1.1 に含まれる commit については、こちらをご覧ください。
- これはバグ修正のリリースであり、バージョン 1.1.0 を使用中のユーザーはアップグレードすることを強くおすすめします。
バグの修正
ウォッチフェイスの初期化は非同期で行われます。ウォッチフェイスの準備が整う前にウォッチフェイスの追加機能を受け取った場合は、
pendingInitialComplications
リストに追加され、後で適用されます。pendingInitialComplications
の適用が早すぎたため、ウォッチフェイスの初期化の最中に、ウォッチフェイスの追加機能がpendingInitialComplications
に追加されたまま無視される時間帯がありました。この問題は修正されています。さらにこのパッチによって、ComplicationRenderer
が誤ってプレースホルダの非同期読み込みを試行することで、コンパイル グラフィックが更新されなかったバグが修正されました。また、このパッチにより、複数のpendingInitialComplications
をマージする必要がある理論的なバグと思われるものも修正されました。(0d03ba3)getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance
が不必要に長くロックを保持することによるInteractiveInstanceManager
のデッドロックの可能性がなくなるように修正しました。通常、engine.setUserStyle
は高速であるはずですが、なんらかの理由で高速でない場合は、デッドロック / ANR が発生する可能性があります。このパッチにより、不要な操作がロックから排除され、デッドロックが発生する可能性がなくなります。(5a2adca)WatchFaceService
を保持していたいくつかの問題を修正しました。WakeLock はWatchFaceService
を保持する場合がありますが、release()
呼び出しを追加することでこの問題を修正できます。またStateFlows
は、基盤となるCoroutineScopes
をキャンセルすることで問題を修正し、WatchFaceService
を保持できます。(fd48138)awaitDeferredWatchFace
* にタイムアウトを追加し、watchfaceOverlayStyle
NullPointerException
を修正しました。新規インストール後や、CPU 負荷が高いDirectBoot
シナリオなど、通常の状況ではタイムアウトしません。close()
の後にgetWatchfaceOverlayStyle
が呼び出された場合の NPE も修正しました。(a4c3a5a)
バージョン 1.1.0
2022 年 6 月 15 日
androidx.wear.watchface:watchface-*:1.1.0
がリリースされました。バージョン 1.1.0 に含まれる commit については、こちらをご覧ください。
1.0.0 以降の重要な変更
編集機能の改善:
- 階層型スキーマのサポートが追加され、エディタ UI でスタイルの階層を記述できるようになりました。ウォッチフェイス エディタとコンパニオン エディタで使用する別々のアイコンを指定できるようになりました。
- ウォッチフェイスの複数のインスタンスのオプトイン サポートにより、各インスタンスにすべての API サーフェスで利用できる一意の ID が割り当てられるようになりました。
ComplicationSlots
に、エディタで使用するための人が読める形式の名前を指定できるようになりました。- コンパニオン エディタから表示される厳選されたスタイル セレクションである、「フレーバー」スタイルの試験運用版サポートが追加されました。
- ウォッチフェイスの 2 つのインスタンスの編集の読み込み時に、ウォッチフェイス インスタンスがリソースを共有し、メモリを節約できるようになりました。
- ウォッチフェイス エディタでウォッチフェイスの追加機能を選択するときに、現在のプロバイダが事前に選択されるようになりました。
ウォッチフェイスの追加機能の改善:
- プライマリ データソースとセカンダリ データソースに
ComplicationType
を指定できるようになり、デベロッパーは初期状態での柔軟性が向上するようになりました。 ComplicationDataTimeline
を追加しました。これにより、ウォッチフェイスに配信される時間ゲート付きのデータのシーケンス(キャッシュして自動的に更新することが可能)を提供してウォッチフェイスに配信することができます。たとえば、さまざまな時間帯における当日の天気予報や、カレンダーの複数の予定を表示するなどです。- ウォッチフェイスの追加機能のプロバイダの
ComponentName
はComplicationData
の一部です。 - ウォッチフェイスの追加機能がキャッシュされるようになりました。これにより、ウォッチフェイスを切り替える際のエクスペリエンスが向上します。
その他の変更点:
UserStyleSchema
とComplicationSlots
を XML で定義できるようになりました。これにより、ウォッチフェイスの構築が簡素化され、システムからのメタデータ クエリが高速になります。- ウォッチフェイスが、システム オーバーレイのレンダリングに使用する色に影響を与えられるようになりました。
バージョン 1.1.0-rc01
2022 年 5 月 18 日
androidx.wear.watchface:watchface-*:1.1.0-rc01
がリリースされました。バージョン 1.1.0-rc01 に含まれる commit については、こちらをご覧ください。
新機能
- ウォッチフェイス XML のサポートのユーザービリティについて一部変更し、
ComplicationSlotBounds
や補助参照を簡単に指定できるようにしました。エッジのウォッチフェイスの追加機能BoundingArc
の試験はdrawHighlight
まで継続されますが、その使用は現時点では推奨されません。
API の変更
BoundingArc
パラメータを受け入れる試験運用版のオーバーロードdrawHighlight
を追加しました。(I705f8)- ウォッチフェイスの XML でリソース参照がサポートされるようになりました。XML とコードの両方で同じ定数を使用できます。(I3ef61)
ComplicationSlotBounds
をcenter_x
、center_y
、size_x
、size_y
の形式で定義する機能が追加されました。また、リソース参照を使用して異なる単位(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 に含まれる commit については、こちらをご覧ください。
新機能
- 新しい
ComplicationData
タイプの試験運用サポートを追加しました。これはまだご利用いただけませんが、今後の情報をお待ちください。
API の変更
BoundingArc
を追加しました。これはウォッチフェイスの追加機能用スロットのジオメトリを記述する試験運用版クラスです。これはComplicationSlot
に追加され、ComplicationSlotState
とWatchFaceMetadataClient
に組み込まれました。(I61a40)UserStyleSetting
XML で設定を継承する機能を追加しました。これにより、詳細度が低くなり、ウォッチフェイス間で設定を共有できます。(Ief841)ComplicationData
の新しい試験運用タイプとして、ListComplicationData
とProtoLayoutComplicationData
の 2 つを追加しました。現在、これらのタイプのレンダリングはサポートされていないため、WearOS はComplicationDataSource's
マニフェストにこれらのタイプが追加されても認識しません。(I1811c)
バグの修正
TimeLineEntry
型のシリアル化を修正しました。TimeLineEntry
型をシリアル化していなかったため、NoData 型のキャッシュされたTimeLineEntries
が親ウォッチフェイスの追加機能の型を持っていると誤って解釈され、存在しない必須フィールドへのアクセス時に NPE が発生することがありました。(55ffdf5)setComplicationData
がタイムライン フィールドをドロップするバグを修正しました(fb392f5)runBlockingWithTracing
が原因で NPE が発生することがあるバグを修正しました(12ca62e)- ウォッチフェイスの追加機能の受信時に
ClassNotFoundException: android.support.wearable.complications.ComplicationText
が発生することがあるバグを修正しました(217942d9) EGL14.eglCreateContext
が呼び出されたときにのみonBackgroundThreadGlContextCreated
を呼び出すGlesRenderer.backgroundThreadInitInternal
のバグを修正しました。スクリーンショットに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-beta01
がリリースされました。バージョン 1.1.0-beta01 に含まれる commit については、こちらをご覧ください。
API の変更
WatchFaceMetadataClient
メソッド(getUserStyleSchema
、getComplicationSlotMetadataMap
、getUserStyleFlavors
)とHeadlessWatchFaceClient.getUserStyleFlavors
が、WatchFaceException
ではなく、未確認の RuntimeException をスローするようになりました。(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 に含まれる commit については、こちらをご覧ください。
新機能
ComplicationData.dataSource
を調べることにより、どのデータソースがComplicationData
を送信したかを確認できるようになりました。一部のウォッチフェイスでは、これを利用してウォッチフェイスの追加機能の表示をカスタマイズできます。(I44a73)
API の変更
Renderer.CanvasRenderer
とRenderer.GlesRenderer
が非推奨になり、Renderer.CanvasRenderer2
とRenderer.GlesRenderer2
に置き換えられました。これらはレンダリング メソッドに渡されるSharedAssets
をサポートします。Java の相互運用のためにListenableCanvasRenderer2
とListenableGlesRenderer2
を導入しました。(I31ffa)- フレーバー(スタイル設定されたウォッチフェイスの事前構成済みリスト)を定義する
@WatchFaceFlavorsExperimental
アビリティを追加しました。(I04dd0) Renderer.sharedAssets
が StateFlow になり、使用されていないRenderer.SharedAssetsFactory
が削除されました。(I12ac5)UserStyleSchema.userStyleSettings
が非推奨ではなくなりました。(Iba7e3)HeadlessWatchFaceClient.getUserStyleSchemaDigestHash
を追加しました。これにより、HeadlessWatchFaceClient
は、ダイジェスト ハッシュを計算する前に AIDL でスキーマを渡す際の比較的低いオーバーヘッドを回避できます。(I33597)isUserStyleSchemaStatic
をWatchFaceMetadataClient
に追加しました。これは、ウォッチフェイス APK が更新されない限りUserStyleSchema
は変化しないと信頼できる場合にのみ、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 に含まれる commit については、こちらをご覧ください。
API の変更
- 最新の
ComplicationData
が常に使用できるとは限らない(キャッシュ内の ComplicationData の有効期限切れなど)ため、オプションのプレースホルダ ComplicationData でNoDataComplication
を拡張し、ComplicationText.PLACEHOLDER
、MonochromaticImage.PLACEHOLDER
、SmallImage.PLACEHOLDER
、PhotoImage.PLACEHOLDER
を追加しました。これらの使用は、NoDataComplicationData
プレースホルダのコンテキスト内でのみ許可されます。選択する場合は、これらのプレースホルダをグレーのボックス / アーチでレンダリングすることをおすすめします。(I6285d) - ウォッチフェイスの追加機能のいずれかの項目が変更される可能性があるリファレンス Instant の後の次の Instant をお知らせする
ComplicationData.getNextChangeInstant
を追加しました。これは、ウォッチフェイスの追加機能の更新のフレームをスケジュール設定するために内部で使用するものです。たとえば、ウォッチフェイスが通常 1 分間に 1 回更新される場合、ストップ ウォッチのウォッチフェイスの追加機能を設定すると、更新は 1 秒間に 1 回になります。(I7ceb2) EditorSession.watchFaceId
がすべての API レベルで使用できるようになりました。さらに、その値は常にWatchState.watchFaceInstanceId
と一致するようになりました。(I323b9)- 根本的な問題がフレームワークで修正されたため、
getPendingIntentForTouchEvent
API は不要となり、関連する API をすべて削除しました。ホームボタンが押された場合でも、PendingIntents
を呼び出すためにウォッチフェイスで何か特別な操作を行う必要はありません。(I1f2e8) - レンダリングがスクリーンショットの場合に true になる
RendererParameters.isForScreenShot
を追加しました。アニメーションがある一部のウォッチフェイスは、最適な表示を実現するよう調整するためにこの変更点を把握する必要があります。(I96d99) - エラーの発生に対するコンテキストを提供するため
WatchFaceException
にWatchFaceExceptionReason
を追加しました。(I01d15) ComplicationDataSourceService.onImmediateComplicationRequest
を削除し、代わりにComplicationRequest.immediateResponseRequired
を追加して、プロバイダがすぐに(100 ms 未満推奨)対応する必要があることを伝えるようにしました。この機能は、特権的なcom.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE
権限で保護されています。(Ie6b23)- Tiramisu DP2 と一致するよう core と appcompat の null 可能性を更新しました。(I0cbb7)
バグの修正
- ウォッチフェイス アプリは、スキーマ検証に不合格だった場合に例外を出してクラッシュするようになりました。(Ia400f)
バージョン 1.1.0-alpha03
2022 年 2 月 9 日
androidx.wear.watchface:watchface-*:1.1.0-alpha03
がリリースされました。バージョン 1.1.0-alpha03 に含まれる commit については、こちらをご覧ください。
API の変更
- 階層型スタイル スキーマの試験運用版サポートを追加しました。
androidx.wear.watchface.style.UserStyleSetting.Option
に新しいプロパティ childSettings を追加しました(初期段階ではListOption
での使用のみ可能)。これにより、スタイルの階層を記述して Editor 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.setEglConfig
とGlesRenderer.setEglDisplay
はサポートが終了しており、設定可能にすることは意図されていません(未定義の動作が発生する可能性があります)。(I0d9e7) setNameResourceId
とsetScreenReaderNameResourceId
(文字列リソースを参照)をComplicationSlot.Builder
に追加し、対応するゲッターをandroidx.wear.watchface.client.ComplicationSlotState
に追加しました。これにより、システムで ComplicationSlot の名前を取得し、システムがエディタとスクリーン リーダーで使用できるようになります。(If6c6a)WatchfaceMetadataClient.getUserStyleSchema
とgetComplicationSlotMetadataMap
がRemoteException
ではなくWatchFaceException
をスローするようになりました。(I86f11)onSynchronousComplicationRequest
と、関連するComplicationDataSourceService
の関数の名前がonImmediateComplicationRequest
などに変更されました。(I87ba0)- ウォッチフェイス エディタはコンパニオン エディタに比べて画面のスペースがかなり小さいため、ウォッチフェイス エディタ用に異なるアイコンをサポートすることが推奨されます。このパッチにより、すべての UserStyleSettings(および必要に応じて Option クラス)に、
OnWatchEditorData
が追加されます(現在のところアイコンのみを含む)。(If1886) - Java の相互運用性を向上させるために、ListenableGlesRenderer のコンストラクタに
@JvmOverloads
を追加しました。(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 に含まれる commit については、こちらをご覧ください。
新機能
- デバッグとテストを補助するため、
ComplicationData
と関連サブクラスで、hashCode メソッド、equals メソッド、toString メソッドがオーバーライドされ、簡単に連携できるようになりました。
API の変更
WatchfaceMetadataClient
メソッドが必要に応じて再度RemoteExceptions
をスローするようになりました。これにより、クライアント コードでウォッチフェイスからエラーを簡単にキャッチできるようになります。(I78785)ComplicationData
とサブクラスに、hashCode、equals、toString が追加されました。(I24bc6)
バージョン 1.1.0-alpha01
2021 年 12 月 15 日
androidx.wear.watchface:watchface-*:1.1.0-alpha01
がリリースされました。バージョン 1.1.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
UserStyleSchema
とComplicationSlots
を XML で定義できるようになりました。これにより、ウォッチフェイスの構築が簡素化されます。また、WatchFaceMetadataClient
クエリは、メタデータを取得するためにサービスにバインドする必要がないので、より高速になります。WatchFaceMetadataClient
とListenableWatchFaceMetadataClient
は試験運用版ではなくなり、安定版 API の一部になります。システムは、オプションで 1 つのウォッチフェイスの複数のインスタンスをサポートできるようになります。インスタンスごとに、異なるユーザー定義のスタイル設定オプションを使用できます。これらはウォッチフェイス選択ツールに表示されます。これをオプトインするには、ウォッチフェイスのマニフェストに次のメタデータタグを含める必要があります。<meta-data android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED" android:value="true" />
一部のウォッチフェイスには、
UserStyle
でキャプチャされない状態があります。このケースと複数のインスタンスをサポートするため、ウォッチフェイスのインスタンス ID をWatchState.watchFaceInstanceId
で利用できるようにしました。ComplicationData
がキャッシュに保存されるようになりました。これにより、読み込み時にウォッチフェイスの追加機能をすぐに表示できます。ComplicationData
は、システムによってメモリ内でキャッシュに保存される場合もあれば、ウォッチフェイス ライブラリによってシリアル化される場合もあります。シリアル化される場合、関連する tapAction はすべて失われます。そうなった場合、ComplicationData.tapActionLostDueToSerialization
はtrue
を返します。ウォッチフェイスは、ウォッチフェイスの追加機能を別の方法でレンダリングして(たとえばグレー表示にするか半透明にして)、タップ不可であることを示す必要があります。システムは、tapAction
を含む更新済みのComplicationData
を可能な限り速やかに送信します。一部の
ComplicationData
は長時間キャッシュに保存するべきではありません。これをサポートするため、より一般的な機能であるComplicationDataTimeline
を追加しました。これを使用すると、時間ゲート付きのComplicationData
のシーケンス(キャッシュして自動的に更新することが可能)を提供してウォッチフェイスに配信することができます。たとえば、さまざまな時間帯における当日の天気予報や、カレンダーの複数の予定を表示するなどです。ComplicationRequestListener
に、これらのデータを返すために使用する新しいメソッドonComplicationDataTimeline
が追加されました。プライマリ データソースとセカンダリ データソースの
ComplicationType
を指定できるように、DefaultComplicationDataSourcePolicy
が拡張されました。同期的なウォッチフェイスの追加機能のプロバイダにおいてウォッチフェイスの追加機能が通常より高い頻度(ウォッチフェイスが表示されていてアンビエント モードでないときは最大で毎秒 1 回)で更新されるケースのサポートを追加しました。注: 同期的なウォッチフェイスの追加機能のプロバイダは、メモリ圧迫を避けるため利用が制限されることがあります。
PendingIntentTapListener
に対する変更は、根本にあるフレームワークの問題(ホームボタンを押してから 5 秒間ウォッチフェイスがアクティビティを起動できない)で解決されたため、元に戻される可能性があります。
API の変更
ComplicationData.isCached
がtapActionLostDueToSerialization
に変更されました。ウォッチフェイスの追加機能のスロットがタップ不可であることを示すために別の方法でレンダリングする必要があるかどうかを判断する際は、後者の方が便利です。(I6de2f)ComplicationDataTimeline
をwear-complication-data-source
に追加しました。これを使用すると、時間ゲート付きのComplicationData
のシーケンス(キャッシュして自動的に更新することが可能)を提供してウォッチフェイスに配信することができます。たとえば、さまざまな時間帯における当日の天気予報や、カレンダーの複数の予定を表示するなどです。ComplicationRequestListener
に、これらのデータを返すために使用する新しいメソッドonComplicationDataTimeline
が追加されました。データソース サービスを一時停止するための新しい Kotlin ラッパーSuspendingTimelineComplicationDataSourceService
が追加されました。(Idecdc)PendingIntentTapListener
とWatchFaceControlClient.getPendingIntentForTouchEvent
を追加しました。これにより、タップに反応してインテントを起動する必要があるウォッチフェイスで、ホームボタンを押してから 5 秒間フレームワークが新しいアクティビティの起動をブロックする問題を回避できます。(I98074)- ウォッチフェイスごとの
ComplicationData
キャッシュを導入しました。これは、システムがウォッチフェイスの追加機能のデータ値を更新する機会を得るまで、ウォッチフェイスの読み込み時に、最後に確認されたウォッチフェイスの追加機能のデータ値が表示されるようにするためです。OEM 向けの新しい API メソッドWatchFaceControlClient.hasComplicationCache
が追加されました。これは、ウォッチフェイスの追加機能をウォッチフェイスに送信する際のシステムの戦略に影響する可能性があります。また、ComplicationData
にはisCached
プロパティがあります。キャッシュに保存されたウォッチフェイスの追加機能にはレンダリングの方法を変えることをおすすめします。これは、tapAction
はキャッシュに保存できず、キャッシュに保存されたウォッチフェイスの追加機能ではnull
になるためです。(I404b0) - ウォッチフェイスのインスタンス ID を
WatchState.watchFaceInstanceId
で利用できるようになりました。これは、ほとんどのウォッチフェイスでは使用する必要はありませんが、スキーマに格納されていないウォッチフェイスごとの状態がある場合は、ウォッチフェイス インスタンスを識別するキーとして使用できます。これをサポートするため、WatchFaceControlClient.createHeadlessWatchFaceClient
を呼び出す際に ID を指定できるようにしました。(I1ff98) - プライマリ プロバイダ、セカンダリ プロバイダ、代替システム プロバイダ用のデフォルトの
ComplicationTypes
を設定できるように、DefaultComplicationDataSourcePolicy
を拡張しました。ComplicationSlot.defaultDataSourceType
は非推奨になりました。(If0ce3) ComplicationSlot.configExtras
が可変になり、EditorSession.openComplicationDataSourceChooser()
を呼び出す前に更新できるようになりました。(I6f852)WatchFace.setComplicationDeniedDialogIntent
とsetComplicationRationaleDialogIntent
を追加しました。これらのインテントを起動するのは、ウォッチフェイスの追加機能の権限をリクエストする前にリクエスト理由のダイアログを表示するためと、権限が拒否された場合に、ウォッチフェイスの追加機能を編集するにはその権限が必要であることを説明する別のダイアログを表示するためです(プロバイダ選択ツールは起動に失敗するので、ダイアログが必要です)。(I3a29c)UserStyleSchema
とComplicationSlots
を XML で定義できるようになりました。これにより、ウォッチフェイスの構築が簡素化されます。また、WatchFaceMetadataClient
クエリは、メタデータを取得するためにサービスにバインドする必要がないので、より高速になります。(I85bfa)- ウォッチフェイスが
getPendingIntentForTouchEvent
をサポートしているかどうかをクライアントが判断できるように、InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent
を追加しました。(I0b917) WatchFaceMetadataClient
とListenableWatchFaceMetadataClient
は試験運用版ではなくなりました。可能な場合は、ウォッチフェイスへのバインダをオープンせずに、ウォッチフェイスのメタデータを効率的に取得できます。(Ibb827)- 同期的なウォッチフェイスの追加機能のプロバイダにおいてウォッチフェイスの追加機能が通常より高い頻度で(ウォッチフェイスが表示されていてアンビエント モードでないときは最大で毎秒 1 回)更新されるケースのサポートを追加しました。これを利用するには、プロバイダがマニフェストに新しい
androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS
メタデータタグを追加してonSynchronousComplicationRequest
をオーバーライドする必要があります。データソースの性質によっては、ウォッチフェイスの追加機能のインタラクティブ モードの開始時と終了時に通知を受け取るために、onStartSynchronousComplicationRequests
とonStopInteractiveComplicationRequests
をオーバーライドする必要もあります。(I8fe9d)
バージョン 1.0
バージョン 1.0.1
2022 年 2 月 9 日
androidx.wear.watchface:watchface-*:1.0.1
がリリースされました。バージョン 1.0.1 に含まれる commit については、こちらをご覧ください。
バグの修正
PhotoImageComplicationData
tapAction が正しく処理されないバグを修正しました。(I1cc30)
バージョン 1.0.0
2021 年 12 月 1 日
androidx.wear.watchface:watchface-*:1.0.0
がリリースされました。バージョン 1.0.0 に含まれる commit については、こちらをご覧ください。
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 に含まれる commit については、こちらをご覧ください。
バグの修正
フローの移行によって機能しなくなる dump()(adb shell dumpsys によって呼び出されます)を修正しました。(087cf9e)
writeDirectBootPrefs の適切な順序付けを保証します。writeDirectBootPrefs が常に initStyleAndComplications の後に実行されるようにします。そうしないと、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 に含まれる commit については、こちらをご覧ください。
バージョン 1.0.0-alpha24
2021 年 10 月 13 日
androidx.wear.watchface:watchface-*:1.0.0-alpha24
がリリースされました。バージョン 1.0.0-alpha24 に含まれる commit については、こちらをご覧ください。
API の変更
- パッケージ
androidx.wear.watchface.complications
のクラスを新しいwear:watchface:watchface-complications
プロジェクトに移動しました。つまり、クラスの重複に関するエラーが発生するため、このライブラリと以前のアルファ版のwear:watchface:watchface-complications-data
を含めることはできなくなります。(I97195) - Renderer.dump の名前が Renderer.onDump に変更され、@UiThread アノテーションが付けられました。(I44845)
InteractiveWatchFaceClient.addWatchFaceReadyListener
の名前をaddOnWatchFaceReadyListener
に、removeWatchFaceReadyListener
の名前をremoveOnWatchFaceReadyListener
に変更しました。(I48fea)- EditorSession
getComplicationsPreviewData
とgetComplicationsDataSourceInfo
は、suspend 関数ではなくなり、初期値が null のStateFlow<>
のプロパティとなりました。ListenableEditorSessiongetListenableComplicationPreviewData
とgetListenableComplicationsProviderInfo
が削除され、基本クラスの新しい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 に含まれる commit については、こちらをご覧ください。
新機能
ウォッチフェイス ライブラリは単一のライブラリ グループになったため、ライブラリは移動しました。そのため、次のように 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 がガベージ コレクションされるようにするために必要です。(fce4af8、b/199485839)