시계 화면에 정보 표시 추가

시계 화면의 정보 표시는 데이터 소스의 데이터를 표시합니다. Complications API를 사용하면, 기본 데이터를 가져오는 데 사용할 데이터 소스를 시계 화면에서 선택할 수 있습니다. 이렇게 하면 시계 화면에서 데이터를 가져오기 위한 코드가 없어도 그날의 시간뿐만 아니라 다른 정보도 표시할 수 있습니다.

ComplicationSlotsManager 사용

정보 표시를 시계 화면에 추가하려면 ComplicationSlotsManager를 사용합니다.

ComplicationSlotsManager는 시계 화면에서 지원하는 정보 표시 수와 정보 표시의 화면상 위치를 정의합니다. 정보 표시의 위치나 개수 변경을 지원하기 위해 ComplicationSlotsManager는 다음 예에서와 같이 CurrentUserStyleRepository도 사용합니다.

 override fun createComplicationSlotsManager(
        currentUserStyleRepository: CurrentUserStyleRepository
    ): ComplicationSlotsManager {
        val defaultCanvasComplicationFactory =
            CanvasComplicationFactory { watchState, listener ->
                // ...
            }

        val leftComplicationSlot = ComplicationSlot.createRoundRectComplicationSlotBuilder(
            id = 100,
            canvasComplicationFactory = defaultCanvasComplicationFactory,
            // ...
        )
            .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
            .build()

        val rightComplicationSlot = ComplicationSlot.createRoundRectComplicationSlotBuilder(
            id = 101,
            canvasComplicationFactory = defaultCanvasComplicationFactory,
            // ...
        )
            .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
            .build()

        return ComplicationSlotsManager(
            listOf(leftComplicationSlot, rightComplicationSlot),
            currentUserStyleRepository
        )
 }

유형 및 필드

다음 표는 ComplicationData 객체의 유형과 필드를 설명합니다. 정보 표시 유형에 맞지 않는 잘못된 필드를 시계 화면이 요청하는 경우, 해당 필드의 기본값이 반환됩니다. 예를 들어, 시계 화면이 SHORT_TEXT 유형의 LONG_TEXT 필드에 액세스를 시도하는 경우, LONG_TEXT 필드의 기본값(null)이 반환됩니다. 선택적 필드는 반드시 표시되는 것은 아닙니다.





유형 필수 입력란 선택적 필드 메모
SHORT_TEXT Short text Icon
Burn-in protection icon
Short title
Content description

둘 중 하나 또는 둘 다 제공된 경우 아이콘 또는 짧은 제목 하나만 표시합니다.
MONOCHROMATIC_IMAGE Monochromatic image
Burn-in protection icon
Content description

텍스트가 불필요할 때 사용됩니다. 아이콘은 단색으로 예상되며, 시계 화면에서 색조가 조정될 수도 있습니다.
RANGED_VALUE Value
Min value
Max value
Monochromatic image
Burn-in protection icon
Short text
Short title
Color ramp
Dynamic value
Content description

직접 진행률 표시줄을 그리고 싶다면, isRangedValueProgressHidden() 메서드를 사용하여 ComplicationDrawable 클래스가 제공하는 진행률 표시줄을 숨길 수 있습니다.
GOAL_PROGRESS Value
Target value
Monochromatic image
Burn-in protection icon
Short text
Short title
Color ramp
Dynamic value
Content description

GOAL_PROGRESS는 값이 0에서 시작하고 타겟 값을 초과할 수 있는 걸음 수와 같은 항목을 위한 것입니다.
LONG_TEXT Long text
Long title
Monochromatic image
Burn-in protection icon
Small image
Content description
제공된 경우 긴 제목을 표시합니다.
SMALL_IMAGE Small image
Content description
Small image에는 사진 스타일 또는 아이콘 스타일의 두 스타일 중 하나가 있습니다. 사진 스타일은 공간을 채울 것으로 예상되며 자를 수 있습니다. 아이콘 스타일은 잘라낼 수 없으며 패딩을 적용할 수 있습니다. 이미지 가변성으로 인해 대기 모드에서 번인 보호 모드나 낮은 비트 대기 모드의 기기에 표시하기에 이미지가 부적합할 수 있습니다. 번인 보호 모드나 낮은 비트 대기 모드가 사용 설정된 경우 시계 화면이 안전한 Burn-in protection small image를 사용할 수도 있습니다. 그 외 경우에는 시계 화면이 적합성을 판별하기가 어려우므로 이미지가 표시되지 않습니다.
LARGE_IMAGE Large image
Content description
이 이미지는 시계 화면을 채울 정도로 충분히 클 것으로 예상됩니다. 이미지 가변성으로 인해 대기 모드에서 번인 보호 모드나 낮은 비트 대기 모드의 기기에 표시하기에 이미지가 부적합할 수 있습니다. 시계 화면이 표시 적합성을 판별하기가 어렵기 때문에, 대기 모드에서 번인 보호 모드나 낮은 비트 대기 모드가 활성화된 경우에는 시계 화면이 이미지를 표시하지 않습니다.
WEIGHTED_ELEMENTS Elements list
Monochromatic image
Burn-in protection icon
Short text
Short title
Content description
각 요소는 색상과 (0보다 큰) 두께로 구성됩니다. 렌더링 시 요소의 크기는 가중치에 비례합니다. 값을 합산하는 데는 가중치가 필요하지 않습니다. 시계 화면에서 WEIGHTED_ELEMENTS의 색상을 다시 지정할 수 있습니다.

다음 표에서는 모든 정보 표시 자리에 관해 전송할 수 있는 빈 데이터의 정보 표시 유형을 설명합니다. 이러한 유형에는 필드가 없으며 지원되는 유형 목록에 포함될 필요가 없습니다. 이들 유형을 통해 시계 화면에서 다음의 세 가지 경우를 구분할 수 있습니다.

  • 선택한 소스가 없음
  • 사용자가 자리에 대해 'empty'를 선택했음
  • 소스가 전송할 데이터가 없음

소스는 업데이트 요청에 대한 응답으로 TYPE_EMPTY를 전송할 수 없습니다. 대신 TYPE_NO_DATA를 전송하세요.

정보 표시 유형 설명
TYPE_NOT_CONFIGURED 정보 표시가 활성화되었지만 사용자가 소스를 선택하지 않았고 기본값이 설정되지 않은 경우 시스템에 의해 전송됩니다.

소스에서 전송할 수 없습니다.

TYPE_EMPTY 정보 표시가 활성화되었고 사용자가 소스 대신 'empty'를 선택한 경우 또는 시계 화면이 소스를 선택하지 않고 이 정보 표시 유형을 기본값으로 선택한 경우 시스템에 의해 전송됩니다.

소스에서 전송할 수 없습니다.

TYPE_NO_DATA 소스를 가진 정보 표시가 활성화된 경우, 실제 데이터가 소스로부터 수신되기 전에 정보 표시를 지우기 위해 시스템에 의해 전송됩니다.

전송할 실제 데이터가 없는 경우 소스에 의해 전송될 수 있습니다.

자세한 내용은 GitHub의 시계 화면 샘플을 확인하세요.