The Watch Face Format is required for watch faces to be installed on devices with Wear OS 5 or later pre-installed and for all new watch faces published on Google Play.
Starting in January 2026, the Watch Face Format will be required for watch faces to be installed on all Wear OS devices.
Learn more about the user-facing changes in this Help Center article.
ウォッチフェイス サービスを構築する
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
ウォッチフェイスは、Wear OS アプリにパッケージされているサービスです。ユーザーが利用可能なウォッチフェイスを選択すると、ウォッチフェイスが表示され、サービスのコールバック メソッドが呼び出されます。
ウォッチフェイスのある Wear アプリをインストールすると、ユーザーはスマートウォッチでウォッチフェイス選択ツールを使用してウォッチフェイスを選択できます。また、ペア設定されているスマートフォンのコンパニオン アプリでも、ウォッチフェイスを選択できます。
このページでは、Wear OS プロジェクトを構成してウォッチフェイスを追加する方法と、ウォッチフェイス サービスを実装する方法について説明します。
ウォッチフェイス プロジェクトを作成する
注: Wear OS の開発には Android Studio を使用することをおすすめします。Android Studio では、プロジェクトのセットアップ、ライブラリのインクルード、パッケージングを容易に行うことができます。
Android Studio でウォッチフェイス用のプロジェクトを作成する手順は次のとおりです。
- [File] > [New] > [New project] をクリックします。
- [Select a project template] ウィンドウで [Wear] タブを選択し、オプションのリストから [Watch Face] を選択して、[Next] をクリックします。
- [Configure your project] ウィンドウで、デフォルト値のまま [Finish] をクリックします。
Android Studio は、ウォッチフェイス サービス用の app
モジュールを使用してプロジェクトを作成します。
依存関係
Android Studio は、必要な依存関係を build.gradle
ファイルに自動的に追加します。この依存関係には AndroidX ウォッチフェイス ライブラリが含まれています。このライブラリの詳細については、GitHub のコードサンプルをご覧ください。
ウェアラブル サポート ライブラリ API リファレンス
リファレンス ドキュメントには、ウォッチフェイスを実装する際に使用するクラスについての詳細な情報が記載されています。ウェアラブル サポート ライブラリについては、API リファレンス ドキュメントをご覧ください。
権限を宣言する
ウォッチフェイスには WAKE_LOCK
権限が必要です。Wear OS アプリとスマートフォン アプリの両方のマニフェスト ファイルで、manifest
要素に以下の権限を追加します。
<manifest ...>
<uses-permission
android:name="android.permission.WAKE_LOCK" />
<!-- Required for complications to receive complication data and open the provider chooser. -->
<uses-permission
android:name="com.google.android.wearable.permission.RECEIVE_COMPLICATION_DATA"/>
...
</manifest>
ダイレクト ブートをサポートする
ダイレクト ブートのガイダンスに沿って、ユーザーのロック解除の前にウォッチフェイスを利用できるようにする必要があります。
- マニフェストで、サービスの
android:directBootAware
属性を true
に設定します。
- ウォッチフェイスは、デバイス暗号化ストレージに情報を保存する必要があります。
サービスとコールバック メソッドを実装する
Wear OS のウォッチフェイスは WatchFaceService
として実装されます。WatchFaceService
を実装するには、UserStyleSchema
、ComplicationSlotsManager
、WatchFace
という 3 つのオブジェクトを作成する必要があります。
これらの 3 つのオブジェクトは、次の例に示すように、WatchFaceService
の 3 つの抽象メソッドをオーバーライドすることで指定します。
Kotlin
class CustomWatchFaceService : WatchFaceService() {
/**
* The specification of settings the watch face supports.
* This is similar to a database schema.
*/
override fun createUserStyleSchema(): UserStyleSchema = // ...
/**
* The complication slot configuration for the watchface.
*/
override fun createComplicationSlotsManager(
currentUserStyleRepository: CurrentUserStyleRepository
): ComplicationSlotsManager = // ...
/**
* The watch face itself, which includes the renderer for drawing.
*/
override suspend fun createWatchFace(
surfaceHolder: SurfaceHolder,
watchState: WatchState,
complicationSlotsManager: ComplicationSlotsManager,
currentUserStyleRepository: CurrentUserStyleRepository
): WatchFace = // ...
}
ウォッチフェイス サービスを登録する
ウォッチフェイス サービスを実装したら、ウェアラブル アプリのマニフェスト ファイルに実装を登録します。ユーザーがこのアプリをインストールすると、システムはサービスに関する情報を使用して、Wear OS のコンパニオン アプリと、ウェアラブル デバイスのウォッチフェイス選択ツールで、ウォッチフェイスを選択できるようにします。
次のサンプルは、<application>
要素にウォッチフェイスの実装を登録する方法を示しています。
<service
android:name=".AnalogWatchFaceService"
android:label="@string/analog_name"
android:permission="android.permission.BIND_WALLPAPER" >
<meta-data
android:name="android.service.wallpaper"
android:resource="@xml/watch_face" />
<meta-data
android:name="com.google.android.wearable.watchface.preview_circular"
android:resource="@drawable/preview_analog_circular" />
<intent-filter>
<action android:name="android.service.wallpaper.WallpaperService" />
<category
android:name=
"com.google.android.wearable.watchface.category.WATCH_FACE" />
</intent-filter>
</service>
Wear OS by Google のコンパニオン アプリと、ウェアラブル デバイスのウォッチフェイス選択ツールは、デバイスにインストールされているすべてのウォッチフェイスをユーザーに提示する際に、com.google.android.wearable.watchface.preview_circular
メタデータ エントリで定義されているプレビュー画像を使用します。このドローアブルを取得するには、Wear OS デバイスまたはエミュレータ インスタンスでウォッチフェイスを実行し、スクリーンショットを撮ります。hdpi 画面を持つ Wear デバイスでは、プレビュー画像のサイズは通常、320 x 320 ピクセルです。
次のサンプルに示すように、android.service.wallpaper
メタデータ エントリには、wallpaper
要素を含む watch_face.xml
リソース ファイルを指定します。
<?xml version="1.0" encoding="UTF-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android" />
ウェアラブル アプリには複数のウォッチフェイスを含めることができます。そのためには、ウォッチフェイスの実装ごとに、ウェアラブル アプリのマニフェスト ファイルにサービス エントリを追加する必要があります。
以下の関連リソースもご覧ください。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-26 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-07-26 UTC。"],[],[],null,["# Build a watch face service\n\nA watch face is a [service](/guide/components/services)\npackaged in a [Wear OS app](/training/wearables/apps).\nWhen a user selects an available watch face, the watch face displays and the\nservice callback methods are invoked.\n\nWhen a user installs a Wear app that has watch faces, the watch\nfaces are available on the watch using the watch face selector.\nAlternatively, the user can select a watch face from a companion app on the paired phone.\n\nThis page describes how to configure a Wear OS project to include watch faces and how\nto implement a watch face service.\n\nCreate a watch face project\n---------------------------\n\n**Note:** We recommend that you use [Android Studio](/studio) for Wear OS development, as\nit provides project setup, library inclusion, and packaging conveniences.\n\nComplete the following steps to\n[create a project](/studio/projects/create-project#StartAProject)\nin Android Studio for your watch face:\n\n1. Click **File** \\\u003e **New** \\\u003e **New project**.\n2. In the **Select a project template** window, select the **Wear** tab, then select **Watch Face** from the list of options and click **Next**.\n3. In the **Configure your project** window, accept the default values and click **Finish**.\n\nAndroid Studio creates a project with an `app` module for your watch face service.\n\n### Dependencies\n\nAndroid Studio automatically adds the required dependencies in your `build.gradle`\nfiles. Included in the dependencies is the\n[AndroidX\nwatch face library](/reference/kotlin/androidx/wear/watchface/package-summary); see the\n[code sample](https://github.com/android/wear-os-samples/tree/main/WatchFaceKotlin) on GitHub for details about this library.\n\n### Wearable support library API reference\n\nThe reference documentation provides detailed information about the classes you use to\nimplement watch faces. Browse the\n[API reference\ndocumentation](/reference/android/support/wearable/watchface/package-summary) for the Wearable support library.\n\n### Declare permissions\n\nA watch face requires the `WAKE_LOCK` permission.\nAdd the following permission to the manifest files of both the Wear OS app\nand the mobile phone app under the `manifest` element: \n\n```xml\n\u003cmanifest ...\u003e\n \u003cuses-permission\n android:name=\"android.permission.WAKE_LOCK\" /\u003e\n\n \u003c!-- Required for complications to receive complication data and open the provider chooser. --\u003e\n \u003cuses-permission\n android:name=\"com.google.android.wearable.permission.RECEIVE_COMPLICATION_DATA\"/\u003e\n ...\n\u003c/manifest\u003e\n```\n\n### Support direct-boot\n\nYou must make your watchface available before user-unlock by following\n[Direct Boot](https://developer.android.com/training/articles/direct-boot) guidance:\n\n1. Set `android:directBootAware` attribute to `true` for your service in your manifest.\n2. Your watch face should store information in [device encrypted storage](https://developer.android.com/training/articles/direct-boot#access).\n\n\u003cbr /\u003e\n\nImplement the service and callback methods\n------------------------------------------\n\nWatch faces in Wear OS are implemented as a\n[`WatchFaceService`](/reference/kotlin/androidx/wear/watchface/WatchFaceService).\nImplementing a `WatchFaceService` requires creating three objects: a\n`UserStyleSchema`, a `ComplicationSlotsManager`, and a\n`WatchFace`.\n\nThese three objects are specified by overriding three abstract methods from\n`WatchFaceService`, shown in the following example: \n\n### Kotlin\n\n```kotlin\nclass CustomWatchFaceService : WatchFaceService() {\n\n /**\n * The specification of settings the watch face supports.\n * This is similar to a database schema.\n */\n override fun createUserStyleSchema(): UserStyleSchema = // ...\n\n /**\n * The complication slot configuration for the watchface.\n */\n override fun createComplicationSlotsManager(\n currentUserStyleRepository: CurrentUserStyleRepository\n ): ComplicationSlotsManager = // ...\n\n /**\n * The watch face itself, which includes the renderer for drawing.\n */\n override suspend fun createWatchFace(\n surfaceHolder: SurfaceHolder,\n watchState: WatchState,\n complicationSlotsManager: ComplicationSlotsManager,\n currentUserStyleRepository: CurrentUserStyleRepository\n ): WatchFace = // ...\n\n}\n```\n\nRegister the watch face service\n-------------------------------\n\nAfter you implement the watch face service, register the implementation in the manifest\nfile of the wearable app. When users install this app, the system uses the information about\nthe service to make the watch face available in the [Wear OS companion app](https://play.google.com/store/apps/details?id=com.google.android.wearable.app&hl=en) and in the watch face picker on the wearable device.\n\nThe following sample shows how to register a watch face implementation\nunder the [`\u003capplication\u003e`](/guide/topics/manifest/application-element) element: \n\n```xml\n\u003cservice\n android:name=\".AnalogWatchFaceService\"\n android:label=\"@string/analog_name\"\n android:permission=\"android.permission.BIND_WALLPAPER\" \u003e\n \u003cmeta-data\n android:name=\"android.service.wallpaper\"\n android:resource=\"@xml/watch_face\" /\u003e\n \u003cmeta-data\n android:name=\"com.google.android.wearable.watchface.preview_circular\"\n android:resource=\"@drawable/preview_analog_circular\" /\u003e\n \u003cintent-filter\u003e\n \u003caction android:name=\"android.service.wallpaper.WallpaperService\" /\u003e\n \u003ccategory\n android:name=\n \"com.google.android.wearable.watchface.category.WATCH_FACE\" /\u003e\n \u003c/intent-filter\u003e\n\u003c/service\u003e\n```\n\nThe Wear OS by Google companion app and the watch face picker on the wearable device use the preview\nimage defined by the `com.google.android.wearable.watchface.preview_circular` metadata entry when\npresenting users with all the watch faces installed on the device. To obtain this drawable,\nrun the watch face on your Wear OS device or in an emulator instance and\n[take a screenshot](/studio/debug/am-screenshot). On Wear\ndevices with hdpi screens, the preview image is typically 320x320 pixels in size.\n\nThe `android.service.wallpaper` metadata entry specifies the\n`watch_face.xml` resource file, which contains a `wallpaper`\nelement, as shown in the following sample: \n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cwallpaper xmlns:android=\"http://schemas.android.com/apk/res/android\" /\u003e\n```\n\nYour wearable app can contain more than one watch face. You must add a service entry to the\nmanifest file of the wearable app for each of your watch face implementations.\n\nRelated resources\n-----------------\n\n\nRefer to the following related resources:\n\n- [WatchFaceKotlin sample](https://github.com/android/wear-os-samples/tree/deprecated/WatchFaceKotlin)"]]