시계 화면 서비스 빌드

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

시계 화면은 Wear OS 앱에 패키징된 서비스입니다. 사용자가 사용 가능한 시계 화면을 선택하면 선택한 시계 화면이 표시되고 서비스 콜백 메서드가 호출됩니다.

사용자가 시계 화면이 있는 Wear 앱을 설치하면 시계에서 시계 화면 선택기를 통해 시계 화면을 사용할 수 있습니다. 또는 사용자가 페어링된 스마트폰의 호환 앱에서 시계 화면을 선택할 수 있습니다.

이 페이지에서는 시계 화면을 포함하도록 Wear OS 프로젝트를 구성하는 방법 및 시계 화면 서비스를 구현하는 방법에 관해 설명합니다.

시계 화면 프로젝트 만들기

Android 스튜디오에서 시계 화면을 위한 프로젝트를 생성하려면 다음 단계를 완료하세요.

  1. File > New > New project를 클릭합니다.
  2. Select a project template 창에서 Wear 탭을 선택하고 옵션 목록에서 Watch Face를 선택한 후 Next를 클릭합니다.
  3. Configure your project 창에서 기본값을 수락하고 Finish를 클릭합니다.

Android 스튜디오는 시계 화면 서비스용 app 모듈로 프로젝트를 만듭니다.

종속 항목

Android 스튜디오는 build.gradle 파일에 필요한 항목을 자동으로 추가합니다.

AndroidX 시계 화면 라이브러리는 현재 사용할 수 있습니다. 사용해 보려면 GitHub의 코드 샘플을 참고하세요.

Wearable Support Library API 참조

참조 문서는 시계 화면을 구현하는 데 사용하는 클래스에 관한 자세한 정보를 제공합니다. 웨어러블 지원 라이브러리용 API 참조 문서를 찾아보세요.

참고: Wear OS 개발에는 프로젝트 설정, 라이브러리 포함, 패키징 편의성을 제공하는 Android 스튜디오를 사용하는 것이 좋습니다

권한 선언

시계 화면에는 WAKE_LOCK 권한이 필요합니다. manifest 요소 아래에서 Wear OS 앱과 함께 휴대전화 앱의 매니페스트 파일에 다음 권한을 추가합니다.

<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>

직사각형 기기 지원

기본적으로 직사각형 기기의 시계 화면은 원형 및 정사각형 기기용으로 빌드된 시계 화면을 지원하기 위해 정사각형 에뮬레이션 모드로 실행됩니다. 직사각형 기기를 완전히 지원하려면 다음 코드 샘플과 같이 manifest의 시계 화면 service에서 meta-data 태그를 만들고 android.service.wallpaper.square_modefalse로 설정하여 이 동작을 재정의합니다.

<manifest ...>
    <application ...>
        <service
            android:name=".MyWatchFace"
            android:label="My Watch Face"
            android:permission="android.permission.BIND_WALLPAPER">

            ...

            <meta-data
                android:name="android.service.wallpaper.square_mode"
                android:value="false" />
            ...
        </service>
    ...
    </application>
    ...
</manifest>

서비스 및 콜백 메서드 구현

Wear OS의 시계 화면은 WatchFaceService로 구현됩니다. WatchFaceService를 구현하려면 UserStyleSchema, ComplicationSlotsManager, WatchFace라는 세 가지 객체를 만들어야 합니다.

이 세 가지 객체는 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"
        android:resource="@drawable/preview_analog" />
    <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 메타데이터 항목에 의해 정의된 미리보기 이미지를 사용합니다. 드로어블을 가져오려면 Wear OS 기기 또는 에뮬레이터 인스턴스에서 시계 화면을 실행하고 스크린샷을 찍습니다. hdpi 화면이 있는 Wear 기기에서는 미리보기 이미지의 크기가 일반적으로 320x320픽셀입니다.

원형 기기에서 크게 달라 보이는 시계 화면은 원형 및 정사각형 미리보기 이미지를 모두 제공할 수 있습니다. 원형 미리보기 이미지를 지정하려면 com.google.android.wearable.watchface.preview_circular 메타데이터 항목을 사용합니다. 시계 화면에 두 개의 미리보기 이미지가 모두 포함되어 있으면 웨어러블의 호환 앱과 시계 화면 선택 도구가 시계의 모양에 따라 적절한 이미지를 표시합니다. 원형 미리보기 이미지가 포함되어 있지 않으면 정사각형 미리보기 이미지가 정사각형 기기와 원형 기기에 모두 사용됩니다. 원형 기기에서는 둥근 모양을 사용하여 정사각형 미리보기 이미지가 잘립니다.

android.service.wallpaper 메타데이터 항목은 다음 샘플과 같이 wallpaper 요소가 포함된 watch_face.xml 리소스 파일을 지정합니다.

<?xml version="1.0" encoding="UTF-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android" />

웨어러블 앱에는 둘 이상의 시계 화면을 포함할 수 있습니다. 각각의 시계 화면 구현에서 웨어러블 앱의 매니페스트 파일에 서비스 항목을 추가해야 합니다.

다음 관련 리소스를 참고하세요.