ウォッチフェイスの追加機能で有用なデータを提供する

ウォッチフェイスの追加機能は、スマートウォッチとアナログ時計の両方のウォッチフェイスの機能で、追加情報を表示します。通常、ユーザーは追加機能に表示する情報を選択します。

通常、ウォッチフェイスの追加機能には次のような形状があります。

  1. 方形
  2. 円形
  3. ウォッチフェイスの端に沿った弧
  4. ウォッチフェイス全体を覆う背景

Wear OS では、コンプリケーション システムは次の 2 つの部分に分けることができます。

  1. ウォッチフェイスの追加機能のデータソース
  2. ウォッチフェイスの追加機能のレンダリング

たとえば、健康&フィットネス アプリは、1 日の歩数コンプリケーション データソースを実装できます。これは WFF ウォッチフェイスでレンダリングできます。

ウォッチフェイスの追加機能のデータソース

ウォッチフェイスの追加機能のデータソースは、レンダリングするデータとウォッチフェイスの追加機能のタイプのみを指定します。データソースは、ウォッチフェイスでデータをどのように表示するかを決定するうえで役割を果たしません。

たとえば、健康とフィットネスの「1 日の歩数」コンプリケーションのデータソースは、ユーザーが今日の目標の 10,000 歩のうち 2,400 歩を達成したことを示すために、次のようなデータを生成する可能性があります。

このデータには、どのようにレンダリングすべきかを示すものはありません。

ウォッチフェイスは、レンダリング可能な追加機能のタイプを指定します。これにより、ユーザーが選択できるデータソースが決まります。

[Daily Steps] の例では、ValueTargetValue をどのようにレンダリングするか(テキストとしてか、進行状況インジケーターとしてか)を、ウォッチフェイスの定義で決定します。これは、ウォッチフェイス デザイナーが決定することです。

追加機能を定義する

ウォッチフェイスにウォッチフェイスの追加機能を表示する機能を提供することは、ユーザーにとって価値があります。ユーザーは、ニーズに合わせてカスタマイズされた幅広い情報を一目で確認できるようになるからです。

ウォッチフェイスでサポートする追加機能の数、形状、位置、サポートするデータタイプを決定します。

ウォッチフェイスの追加機能の各スペースは ComplicationSlot として定義され、その中でウォッチフェイスの追加機能のレンダリングの境界領域が定義されます。

<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
    x="100" y="100" width="100" height="100">
    <BoundingOval x="0"  y="0" width="100" height="100" />
    <Complication type="SHORT_TEXT">
        <!-- Complication content for rendering SHORT_TEXT data goes here -->
    </Complication>
    <Complication type="SMALL_IMAGE">
        <!-- Complication content for rendering SMALL_IMAGE data goes here -->
    </Complication>
</ComplicationSlot>

同様のアプローチは、長方形や楕円などの他の境界図形にも適用できます。

ウォッチフェイスの追加機能の種類とデフォルトを設定する

追加機能システムにはさまざまなタイプが用意されており、ウォッチフェイスで画面に表示できるデータの種類を表現できます。たとえば、前述の円弧のウォッチフェイスの追加機能は、SMALL_IMAGE などの画像ベースのウォッチフェイスの追加機能のデータ型には適していませんが、RANGED_VALUE などの数値データには非常に適しています。

ComplicationSlot 宣言で、supportedTypes をこのスロットでレンダリングできる型のスペース区切りリストに設定します。

EMPTY タイプを許可しない限り、ComplicationSlot のデフォルトのソースも設定する必要があります。EMPTY タイプを許可する場合は、デフォルトの設定は省略可能です。

<ComplicationSlot slotId="2" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
    x="250" y="100" width="100" height="100">
    <DefaultProviderPolicy
        defaultSystemProvider="STEP_COUNT"
        defaultSystemProviderType="SHORT_TEXT" />
    <!-- ... -->
</ComplicationSlot>

システム プロバイダを指定する必要があるだけでなく、必要に応じて、デフォルトで使用するサードパーティ プロバイダなどのシステム以外のプロバイダを指定できます(すでにインストールされている場合)。

追加機能データをレンダリングする

ComplicationSlot、境界、包含する Complication 要素を定義したら、PartDraw, PartImagePartText などの標準の WFF コンポーネントを使用して、コンプリケーション データを表示します。

Complication データ内の要素は、特別なデータソースである COMPLICATION にアクセスできます。このデータソースは、コンプリケーション データソースによって設定されたさまざまなデータ プロパティを提供します。

たとえば、SMALL_IMAGE コンプリケーションは COMPLICATION.SMALL_IMAGE 値と COMPLICATION.SMALL_IMAGE_AMBIENT 値を設定できます。これらは、Image 要素のリソースの代わりに使用できます。

<Complication type="SMALL_IMAGE">
    <PartImage x="0" y="0" width="100" height="100">
        <Image resource="[COMPLICATION.SMALL_IMAGE]" />
    </PartImage>
</Complication>

コンプリケーションのタイプごとに、設定可能なプロパティのセットが異なります。各プロパティの完全なリストについては、Complication リファレンスをご覧ください。この例では、SHORT_TEXT 追加機能のテキストを表示します。

<Complication type="SHORT_TEXT">
    <PartText x="0" y="0" width="100" height="100">
        <Text>
            <Font size="32">
                <Template>
                    <![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" />
                </Template>
            </Font>
        </Text>
    </PartText>
</Complication>

コンプリケーションのレンダリング時に有用性を最大化する

ウォッチフェイスに ComplicationSlots を追加する際には、次のような課題があります。

  1. ウォッチフェイスの追加機能のデータタイプは多数あります。アプリによって、これらのうちの 1 つまたは複数を提供できます。
  2. 各追加機能データ型には、必須プロパティだけでなく、多くの省略可能なプロパティもあります。さまざまな組み合わせを考慮して、利用可能なプロパティから最も有用なレンダリングが行われていることを確認します。

これらの問題に対処するための戦略には、次のようなものがあります。

  1. スロットごとに複数のウォッチフェイスの追加機能のタイプをサポートします。たとえば、SHORT_TEXT はウォッチフェイスの追加機能のデータソースで幅広くサポートされているため、小さな円形のウォッチフェイスの追加機能用の SHORT_TEXT RANGED_VALUE など、さまざまなタイプをサポートすることで互換性が高まります。
  2. ウォッチフェイス全体でさまざまな追加機能タイプを提供します。たとえば、画面端に配置された円弧の追加機能では RANGED_VALUEGOAL_PROGRESS をサポートし、ウォッチフェイスの本体にある円形の追加機能では SHORT_TEXTSMALL_IMAGE をサポートできます。
  3. 各データ型のオプション要素を確認します。たとえば、SHORT_TEXT は、タイトル プロパティと画像をオプションでサポートします。利用可能なデータをレンダリングするレイアウトは、画像やタイトルが利用可能かどうかによって異なる場合があります。