시계 화면에 정보 표시 추가

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

시계 화면의 정보 표시는 데이터 소스의 데이터를 표시합니다. 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
둘 중 하나 또는 둘 다 제공된 경우 아이콘 또는 짧은 제목 하나만 표시합니다.
ICON Icon Burn-in protection icon 텍스트가 불필요할 때 사용됩니다. 아이콘은 단색으로 예상되며, 시계 화면에서 색조가 조정될 수도 있습니다.
RANGED_VALUE Value
Min value
Max value
Icon
Burn-in protection icon
Short text
Short title
선택적 필드는 반드시 표시되는 것은 아닙니다. 직접 진행률 표시줄을 그리고 싶다면, isRangedValueProgressHidden() 메서드를 사용하여 ComplicationDrawable 클래스가 제공하는 진행률 표시줄을 숨길 수 있습니다.
LONG_TEXT Long text Long title
Icon
Burn-in protection icon
Small image
제공된 경우 긴 제목을 표시합니다.
SMALL_IMAGE Small image Small image에는 사진 스타일 또는 아이콘 스타일의 두 스타일 중 하나가 있습니다. 사진 스타일의 경우 공간을 채워야 하고 잘라낼 수 있으며 아이콘 스타일은 잘라내기가 안 되고 여백을 채울 수는 있습니다. 이미지 가변성으로 인해 대기 모드에서 번인 보호 모드나 낮은 비트 대기 모드의 기기에 표시하기에 이미지가 부적합할 수 있습니다. 번인 보호 모드나 낮은 비트 대기 모드가 활성화된 경우, 시계 화면이 안전한 Burn-in protection small image를 사용할 수도 있습니다. 그러지 않은 경우에는 시계 화면이 적합성을 판별하기가 어렵기 때문에 이미지가 표시되어서는 안 됩니다.
LARGE_IMAGE Large image 이 이미지는 시계 화면을 채울 정도로 충분히 클 것으로 예상됩니다. 이미지 가변성으로 인해 대기 모드에서 번인 보호 모드나 낮은 비트 대기 모드의 기기에 표시하기에 이미지가 부적합할 수 있습니다. 시계 화면이 표시 적합성을 판별하기가 어렵기 때문에, 대기 모드에서 번인 보호 모드나 낮은 비트 대기 모드가 활성화된 경우에는 시계 화면이 이미지를 표시해서는 안 됩니다.

아래 표의 유형들은 빈 데이터의 경우이며, 임의의 정보 표시 자리에 대해 전송될 수 있습니다. 이들 유형은 필드가 없으며 지원되는 유형 목록에 포함될 필요가 없습니다. 이들 유형을 통해 시계 화면에서 다음의 세 가지 경우를 구분할 수 있습니다.

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

소스는 업데이트 요청에 대한 응답으로 TYPE_EMPTY를 전송해서는 안 됩니다. 대신 소스는 TYPE_NO_DATA를 전송해야 합니다.

다음 표에서는 'empty' 데이터에 대한 정보 표시 유형을 상세히 설명합니다.

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

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

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

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

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

전송할 실제 데이터가 없는 경우 소스에 의해 전송되어야 합니다.

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