Register now for Android Dev Summit 2019!

Wear OS での設定アクティビティの提供

ウォッチフェイスの中には、ユーザーがウォッチフェイスの外観や動作をカスタマイズできるように、設定パラメータをサポートしているものもあります。たとえば、一部のウォッチフェイスでは、ユーザーがカスタムの背景色を選択できたり、ユーザーが選択した 2 種類のタイムゾーンで時間を知らせることができます。

設定パラメータをサポートするウォッチフェイスでは、ユーザーがウェアラブル アプリのアクティビティ、ハンドヘルド アプリのアクティビティ、またはその両方を使ってウォッチフェイスをカスタマイズできます。ユーザーは、ウェアラブル端末からウェアラブル設定アクティビティを起動できます。ハンドヘルド アプリがインストールされている場合、そこからコンパニオンの設定アクティビティを起動することもできます。

注: Wear 1.x では、ユーザーがウェアラブル アプリを含むハンドヘルド アプリをインストールすると、自動で時計にウェアラブル アプリがインストールされます。Wear 2.0 では、自動で時計にウェアラブル アプリがインストールされることはありません。また、Wear 2.0 では、ハンドヘルド アプリは必須ではありません。ハンドヘルド アプリが存在し、それを使いたい場合、個別にインストールする必要があります。

WatchFace サンプルのデジタル ウォッチフェイスでは、ハンドヘルドとウェアラブルの設定アクティビティの実装方法や、設定の変更に応答してウォッチフェイスをアップデートする方法が説明されています。

設定アクティビティ用のインテントの指定

ウォッチフェイスに設定アクティビティを含める場合は、ウェアラブル アプリのマニフェスト ファイルで、サービス宣言に次のメタデータ エントリを追加します。

<service
    android:name=".DigitalWatchFaceService" ... />
    <!-- companion configuration activity -->
    <meta-data
        android:name=
           "com.google.android.wearable.watchface.companionConfigurationAction"
        android:value=
           "com.example.android.wearable.watchface.CONFIG_DIGITAL" />
    <!-- wearable configuration activity -->
    <meta-data
        android:name=
           "com.google.android.wearable.watchface.wearableConfigurationAction"
        android:value=
           "com.example.android.wearable.watchface.CONFIG_DIGITAL" />
    ...
</service>

エントリの値の前には、アプリのパッケージ名を付けます。設定アクティビティは、このインテントのインテント フィルタを登録します。システムは、ユーザーがウォッチフェイスを設定しようとしたときに、このインテントを発行します。

ウォッチフェイスにコンパニオンまたはウェアラブルのどちらかの設定アクティビティのみが含まれる場合、上記の例の対応するメタデータ エントリのみを含める必要があります。

ウェアラブルの設定アクティビティの作成

小さな画面で複雑なメニューは操作しづらいため、ウェアラブルの設定アクティビティでは、ウォッチフェイスに対する一部のカスタマイズの選択肢を提示します。ウェアラブルの設定 Activity では、ウォッチフェイスの主な要素をカスタマイズするための二択または少数の選択肢を提示する必要があります。

ウェアラブルの設定 Activity を作成するには、ウェアラブル アプリのモジュールに新しいアクティビティを追加し、ウェアラブル アプリのマニフェスト ファイルで、次のインテント フィルタを宣言します。

<activity
    android:name=".DigitalWatchFaceWearableConfigActivity"
    android:label="@string/digital_config_name">
    <intent-filter>
        <action android:name=
            "com.example.android.wearable.watchface.CONFIG_DIGITAL" />
        <category android:name=
        "com.google.android.wearable.watchface.category.WEARABLE_CONFIGURATION" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

このインテント フィルタのアクション名は、設定 Activity 用のインテントの指定で定義したインテント名と一致させる必要があります。

設定アクティビティで、ウォッチフェイスをカスタマイズする選択肢をユーザーに提示する簡単な UI を構築します。ユーザーが選択を終えた際に、Wearable Data Layer API を使ってウォッチフェイスのアクティビティに設定の変更を伝えます。

詳細については、WatchFace サンプルの DigitalWatchFaceWearableConfigActivity クラスおよび DigitalWatchFaceUtil クラスをご覧ください。

コンパニオンの設定アクティビティの作成

複雑なメニューの操作はハンドヘルド端末の大画面の方が簡単なので、コンパニオンの設定アクティビティですべてのウォッチフェイス設定に対する選択肢にアクセスできるようにします。たとえば、ハンドヘルド端末の設定アクティビティを使うことで、ウォッチフェイスの背景色を選択するための複雑なカラーピッカーをユーザーに提示することができます。

注: 設定アクティビティは、Android を実行しているハンドヘルド端末用のみを作成できます。

コンパニオンの設定アクティビティを作成するには、ハンドヘルド アプリのモジュールに新しいアクティビティを追加し、ハンドヘルド アプリのマニフェスト ファイルで、次のインテント フィルタを宣言します。

<activity
    android:name=".DigitalWatchFaceCompanionConfigActivity"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name=
            "com.example.android.wearable.watchface.CONFIG_DIGITAL" />
        <category android:name=
        "com.google.android.wearable.watchface.category.COMPANION_CONFIGURATION" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

設定アクティビティで、ウォッチフェイスのすべての設定可能要素をカスタマイズするオプションを提供する UI を構築します。ユーザーが選択を終えた際に、Wearable Data Layer API を使ってウォッチフェイスのアクティビティに設定の変更を伝えます。

詳細については、WatchFace サンプルの DigitalWatchFaceCompanionConfigActivity クラスをご覧ください。

ウェアラブル アプリのリスナー サービスの作成

設定アクティビティからアップデートされた設定パラメータを受け取るため、ウェアラブル アプリに Wearable Data Layer APIWearableListenerService インターフェースを実装したサービスを作成します。設定パラメータが変更された際に、ウォッチフェイスを再描画するようにウォッチフェイスを実装することができます。

詳細については、WatchFace サンプルの DigitalWatchFaceConfigListenerService クラスおよび DigitalWatchFaceService クラスをご覧ください。