Wear Watchface
注: Wear OS 5 以降がプリインストールされているデバイスにウォッチフェイスをインストールする場合、および Google Play で公開するすべての新しいウォッチフェイスには、Watch Face Format が必要です。
2026 年 1 月より、すべての Wear OS デバイスにウォッチフェイスをインストールするには、Watch Face Format が必要になります。
ユーザー向けの変更について詳しくは、こちらのヘルプセンター記事をご覧ください。
| 最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
|---|---|---|---|---|
| 2025 年 4 月 23 日 | 1.2.1 | - | - | 1.3.0-alpha07 |
依存関係の宣言
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-alpha07
2025 年 4 月 23 日
androidx.wear.watchface:watchface-*:1.3.0-alpha07 がリリースされました。バージョン 1.3.0-alpha07 に含まれる commit はこちらをご覧ください。
新機能
- ウォッチフェイスの UserStyle スキーマは以前から定義可能で、
ColorUserStyleSettingは XML で定義できます。
API の変更
- Kotlin 2.0 でリリースされたプロジェクトでは、KGP 2.0.0 以降を使用する必要があります。(Idb6b5)
- Wear OS アプリがスマートウォッチにウォッチフェイスをプログラムでインストールできるようにする Watch Face Push API を追加しました。
バグの修正
- 1.3.0-alpha06 を使用しているウォッチフェイスの追加機能プロバイダは、Wear OS の次のバージョンで
ComplicationDataSourceUpdateRequesterのクラッシュ バグが修正されているため、アップグレードすることをおすすめします。
バージョン 1.3.0-alpha06
2025 年 3 月 26 日
androidx.wear.watchface:watchface-*:1.3.0-alpha06 がリリースされました。バージョン 1.3.0-alpha06 に含まれる commit はこちらをご覧ください。
新機能
- Wear Watchface API(watchface、watchface-client、watchface-client-guava、watchface-complications-rendering、watchface-data、watchface-editor、watchface-editor-guava、watchface-style)は、Wear Watchface Format に置き換えられて非推奨となり、最終的には AndroidX から削除されます。ウォッチフェイスの追加機能の API は非推奨ではなく、引き続き使用できます。(Ice960)
- ウォッチフェイスの追加機能の API が
WearSDKと直接通信できるようになりました。これにより、IPC ホップが減り、効率性が向上します。
バージョン 1.3.0-alpha05
2025 年 1 月 15 日
androidx.wear.watchface:watchface-*:1.3.0-alpha05 がリリースされました。バージョン 1.3.0-alpha05 に含まれる commit はこちらをご覧ください。
新機能
ウォッチフェイスでは通常、ユーザーが ListUserStyle を使用して色を選択できるようにします。これは機能しますが、Bluetooth 経由でアイコンをコンパニオン エディタに送信する必要があるため非効率的です。そこで、ColorUserStyleSetting を導入しました。ここでペイロードは、スタイルごとに 1 つ以上の色のリストであり、ワイヤー形式が大幅にコンパクトになっています。
OEM 向けの機能を追加しました。これにより、OEM のウォッチフェイスの追加機能プロバイダは、OEM ウォッチフェイスで使用するために ComplicationData に追加機能を追加できます。
API の変更
UserStyleSettingクラスとUserStyleOptionクラスにビルダーが追加されました。これらのクラスの作成には、ビルダーを使用することをおすすめします。(Iacd03)ComplicationDataでのエクストラの渡しのサポート。これは、ウォッチフェイスの追加機能プロバイダと受信側のウォッチフェイスの両方を制御する OEM が使用することを想定しています。エクストラを設定するには、特権com.google.android.wearable.permission.COMPLICATION_EXTRAS権限が必要です。(I4e3b2)- ウォッチフェイスでは通常、
ListUserStyleを使用して色を選択できます。ListOptionごとにアイコンが用意されています。UserStyleスキーマは Bluetooth 経由で送信されるため、スキーマのサイズを小さくすることが重要です。アイコンが多数ある場合は、色のオプションが数十個あると問題になる可能性があります。これをサポートするため、ColorUserStyleSettingを追加しました。このオプションには、アイコンではなく色のリストが含まれており、よりコンパクトです。(Ib542e) ColorUserStyleSettingとColorOptionを使用するには API 34 が必要です。(I8771d)
バグの修正
- このライブラリは、型使用である JSpecify nullness アノテーションを使用するようになりました。Kotlin デベロッパーは、次のコンパイラ オプションを使用して、正しい使用を強制する必要があります。
-Xjspecify-annotations=strict(これは、Kotlin コンパイラのバージョン 2.1.0 以降のデフォルトです)。(Ifd363、b/326456246)
バージョン 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) InteractiveWatchFaceClientにgetUserStyleFlavorsを追加しました。これは主に 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 の変更
- 壁紙マネージャーは、エンジンから切り離され、別のエンジンを作成することがあります。
DisconnectReasonint 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* にタイムアウトを追加し、watchfaceOverlayStyleNullPointerExceptionを修正しました。新規インストール後や、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)UserStyleSettingXML で設定を継承する機能を追加しました。これにより、詳細度が低くなり、ウォッチフェイス間で設定を共有できます。(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)WatchFaceServiceXML バージョン チェックで、間違ったパッケージから読み込んでいたバグを修正しました(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)- 根本的な問題がフレームワークで修正されたため、
getPendingIntentForTouchEventAPI は不要となり、関連する 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)PhotoImageComplicationDatatapAction が正しく処理されないバグを修正しました。(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 については、こちらをご覧ください。
バグの修正
PhotoImageComplicationDatatapAction が正しく処理されないバグを修正しました。(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)