Save the date! Android Dev Summit is coming to Sunnyvale, CA on Oct 23-24, 2019.

시계 모드에 정보 표시 추가

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

또한 Complications API를 통해 사용자가 자신의 데이터 제공자를 선택할 수 있습니다. 뿐만 아니라 Wear OS by Google은 데이터 소스 선택을 위한 사용자 인터페이스를 제공합니다.

정보 표시

정보 표시를 시계 모드에 추가하려면 다음 작업을 수행하세요.

시계 모드의 기본 제공자를 설정합니다

시계 모드에서는 사용자가 제공자를 선택하기 전까지 사용되는 기본 제공자를 지정할 수 있습니다. 기본 제공자를 설정하려면 WatchFaceService.EnginesetDefaultComplicationProvider() 메서드를 사용하세요. 이 메서드는 언제든지 호출할 수 있지만, 사용자가 주어진 정보 표시에 대해 이미 제공자를 선택한 경우에는 아무런 동작도 수행하지 않습니다.

거의 모든 제공자의 경우, 데이터가 전달될 수 있으려면 시계 모드에 RECEIVE_COMPLICATION_DATA 권한이 부여되어야 합니다. 그러나 일부 시스템 제공자의 경우는 시계 모드가 이미 스스로 획득한 정보만을 제공하기 때문에 이들 제공자는 안전한 것으로 간주됩니다. 안전한 제공자의 경우는 시계 모드에서 전송 데이터에 권한을 설정할 필요가 없습니다(시스템 제공자 참조). 이러한 제공자는 데이터를 바로 제공할 수 있기 때문에 기본값으로 사용하는 것이 바람직할 수 있습니다.

또는 시계 모드가 특정 제공자와 파트너십을 체결하고 이 제공자를 기본값으로 사용하려는 경우, 안전 시계 모드로 나열하도록 요청할 수 있습니다.

시스템 제공자

시스템에는 기본값으로 사용될 수 있는 제공자가 포함됩니다. WatchFaceService.Engine 클래스의 setDefaultSystemComplicationProvider() 메서드는 정보 표시에 대한 기본 시스템 제공자를 설정합니다. 이 메서드는 시스템 제공자를 나타내는 ID(정수)를 취합니다. 사용 가능한 ID는 SystemProviders 클래스에 나열됩니다.

다음 표에 지원되는 시스템 제공자에 대해 자세히 나옵니다.

SystemProviders 클래스의 메서드 이름 안전 기본값이 될 수 있음 참고
dateProvider() 표준 시스템 날짜 제공자. 탭하면 표준 Agenda 앱이 열립니다.
currentTimeProvider() 표준 시스템 "시간 및 날짜" 제공자. 탭 액션 없음.
batteryProvider() 표준 시스템 배터리 제공자. 탭 액션 없음.
stepCountProvider() readDailyTotal에 의해 보고되는 일일 총 걸음 수를 나타냅니다.
unreadCountProvider() 스트림에서 읽지 않은 알림 수를 나타냅니다.
worldClockProvider() 기본값은 런던이나 뉴욕입니다. 탭하여 시간대를 변경할 수 있습니다.
appsProvider() 처음에 "앱" 아이콘이 나타나며, 이 아이콘을 탭하여 앱을 선택할 수 있습니다.
nextEventProvider() 아니요 예(하지만 안전 제공자는 아님) 표준 시스템 "다음 이벤트" 제공자. 탭하면 표준 Agenda 앱이 열립니다.

데이터 제공자를 선택하도록 사용자에게 허용합니다

Wear OS는 특정 정보 표시에 대한 제공자를 사용자가 선택할 수 있도록 Activity를 통해 사용자 인터페이스를 제공합니다. 선택기 인터페이스를 표시하는 데 사용될 수 있는 인텐트를 구하기 위해 시계 모드에서 createProviderChooserHelperIntent 메서드를 호출할 수 있습니다.

시계 모드에서 createProviderChooserHelperIntent를 호출하면, 이 시계 모드는 시계 모드 정보 표시 ID와 지원되는 유형의 목록을 제공합니다. 유형은 기본 설정 순서에 따라 나열되어야 합니다. 일반적으로 기본 설정이 더 높은 유형은 더 많은 정보(예: 범위가 지정된 값)를 제공합니다.

사용자가 데이터 제공자를 선택하면 구성이 자동으로 저장되며, 시계 모드에서 더 이상의 작업이 필요 없습니다.

설정 사용자 인터페이스를 위한 완벽한 기능의 권장 코드는 시계 모드 샘플 앱을 참조하세요.

코드에 포함되는 내용:

  • 정보 표시 설정을 위한 표준 인터페이스.
  • 기타 설정에 손쉽게 액세스.

이 코드를 검토하기 위한 출발점은 AnalogComplicationConfigActivity 클래스입니다. 이 클래스에는 UI에서 사용 가능한 설정 항목의 목록을 반환하는 getDataToPopulateAdapter() 메서드가 있습니다.

제공자 선택기 열기

정보 표시 데이터를 수신하고 제공자 선택기를 열기 위해서는 시계 모드에 다음과 같은 권한이 있어야 합니다.

com.google.android.wearable.permission.RECEIVE_COMPLICATION_DATA

위의 권한이 부여되지 않은 시계 모드는 제공자 선택기를 시작할 수 없습니다.

보다 쉽게 권한을 요청하고 선택기를 시작할 수 있도록, 웨어러블 지원 라이브러리에 ComplicationHelperActivity 클래스가 있습니다. 거의 모든 경우에 선택기를 시작하려면 ProviderChooserIntent 클래스 대신 이 클래스를 사용해야 합니다.

필요한 권한 요청

ComplicationHelperActivity를 사용하려면 매니페스트 파일에서 시계 모드에 추가합니다.

<activity android:name="android.support.wearable.complications.ComplicationHelperActivity"/>

제공자 선택기를 시작하려면 ComplicationHelperActivity.createProviderChooserHelperIntent 메서드를 호출하여 인텐트를 획득합니다.

새로운 인텐트를 startActivity 또는 startActivityForResult와 함께 사용하여 선택기를 시작할 수 있습니다.

다음은 새로운 인텐트와 startActivityForResult를 함께 사용하는 예시입니다.

Kotlin

startActivityForResult(
        ComplicationHelperActivity.createProviderChooserHelperIntent(
                activity,
                watchFace,
                complicationId,
                ComplicationData.TYPE_LARGE_IMAGE
        ),
        PROVIDER_CHOOSER_REQUEST_CODE
)

Java

startActivityForResult(
  ComplicationHelperActivity.createProviderChooserHelperIntent(
     getActivity(),
     watchFace,
     complicationId,
     ComplicationData.TYPE_LARGE_IMAGE),
  PROVIDER_CHOOSER_REQUEST_CODE);

도우미 액티비티가 시작되면 이 도우미 액티비티가 권한 부여 여부를 확인합니다. 권한이 부여되지 않은 경우 도우미 액티비티가 런타임 권한 요청을 수행합니다. 권한 요청이 수락되면(또는 불필요하면) 제공자 선택기가 나타납니다.

startActivityForResult가 인텐트와 함께 사용된 경우, 호출한 Activity로 전달되는 결과는 RESULT_OK(제공자가 성공적으로 설정된 경우) 또는 RESULT_CANCELLED(제공자가 설정되지 않은 경우)의 결과 코드를 갖게 됩니다.

제공자가 설정된 경우, 선택한 제공자의 ComplicationProviderInfo 클래스가 해당 결과의 데이터 인텐트에 포함되며 ProviderChooserIntent#EXTRA_PROVIDER_INFO 키가 추가로 포함됩니다.

정보 표시 데이터 수신

정보 표시 데이터 수신을 시작하기 위해 시계 모드는 시계 모드 정보 표시 ID의 목록으로 WatchFaceService.Engine 클래스에서 setActiveComplications()를 호출합니다. 시계 모드는 정보 표시가 나타날 수 있는 시계 모드의 슬롯을 고유하게 식별하기 위해 이 ID를 생성합니다. 또한 어떤 정보 표시가 어떤 슬롯에 들어가야 하는지를 사용자가 결정할 수 있도록 이 ID를 createProviderChooserIntent() 메서드에 전달합니다. 정보 표시 데이터는 onComplicationDataUpdate() 콜백을 통해 전달됩니다.

일반적으로, 정보 표시 데이터를 수신하려면 시계 모드에서 위의 권한이 필요하지만 몇 가지 예외가 있습니다. 구체적으로, 다음 중 하나가 사실인 경우에만 시계 모드가 제공자로부터 데이터를 수신할 수 있습니다.

  • 제공자가 "안전" 시스템 제공자임
  • 제공자와 시계 모드가 동일 앱에 있음
  • 제공자가 해당 시계 모드를 "안전" 시계 모드로 허용 목록에 추가
  • 시계 모드에 권한이 있음

위의 모두가 사실이 아닌 경우에는, 제공자가 ComplicationData를 정상적으로 시계 모드에 전송하더라도 시스템은 그 대신 TYPE_NO_PERMISSION 유형의 데이터를 전송합니다. 이 유형에는 아이콘(느낌표)과 짧은 텍스트("--")가 포함되어 있어서 편의상 이 유형이 마치 짧은 텍스트 유형이나 아이콘 유형인 것처럼 렌더링할 수 있습니다.

TYPE_NO_PERMISSION의 데이터를 수신한 시계 모드는 이 데이터를 적절하게 렌더링해야 하므로, 정보 표시가 작동하려면 조치가 필요하다는 것을 사용자가 알 수 있습니다. 가능한 경우, 이 상태에서 정보 표시를 탭하면 권한 요청이 시작될 것입니다. 이 작업은 ComplicationHelperActivity.createPermissionRequestHelperIntent()를 사용하여 수행될 수 있습니다(도우미 액티비티가 시계 모드 앱에 추가된 경우).

도우미 액티비티에 의해 생성된 권한 요청을 사용자가 수락하면, 시계 모드의 모든 활성 정보 표시에 대해 자동으로 업데이트가 요청되고 TYPE_NO_PERMISSION 데이터를 실제 데이터로 대체할 수 있습니다.

정보 표시 렌더링

예상한 필드가 표시되는 한, 시계 모드가 데이터를 원하는 대로 렌더링할 수도 있으며 필수 필드는 항상 포함되어야 합니다. 유형에 따라서는 일부 선택적 필드도 함께 포함되어야 합니다(아래 의 참고 열 참조).

표준 정보 표시에 대한 제안으로 스타일에 대한 디자인 가이드라인이 제공되지만, 개발자가 자신의 스타일을 사용하거나 다른 방식으로 데이터를 시계 모드에 포함시킬 수 있습니다.

정보 표시 그리기

ComplicationDrawable 클래스를 사용하면 캔버스에 전체 정보 표시를 렌더링할 수 있습니다.

이 클래스는 6개의 주요 정보 표시 유형을 모두 지원하며, 다음 작업을 수행합니다.

  • 정보 표시와 관련된 모든 측면의 레이아웃 및 스타일링을 처리합니다.
  • 백그라운드, 아이콘, 텍스트 등을 경계 내에 그립니다.
  • 사용자가 다양한 옵션을 설정할 수 있습니다. 여기에는 다음에 대한 옵션이 포함되지만 이에 국한되지는 않습니다: 백그라운드 색상, 모서리 모양과 반경, 테두리(또는 테두리 없음), 텍스트 색상 및 서체.
  • 이미지를 디코딩하고 캐싱합니다.

API 레벨 24를 대상으로 하는 경우에는 XML을 사용하여 ComplicationDrawable 객체를 리소스로 정의할 수 있습니다. 또는 프로그래밍 방식으로 ComplicationDrawable 객체를 생성할 수 있습니다. 대화식 모드와 대기 모드의 경우 draw() 메서드를 사용하여 정보 표시를 그리고 스타일 옵션을 설정합니다.

번인 안전 아이콘과 이미지가 제공되고 기기에서 필요로 하는 경우 ComplicationDrawable은 이들을 사용합니다. 이를 활성화하려면, 기기 속성이 수신될 때 ComplicationDrawable.setBurnInProtection() 메서드를 호출합니다.

정보 표시를 그리기 위한 자세한 지침과 예시는 ComplicationDrawable을 참조하세요. 여기에는 샘플 XML이 포함됩니다. 이 클래스를 활용하고 샘플 XML을 포함하는 샘플 시계 모드에 대해서는 시계 모드 샘플 앱AnalogComplicationWatchFaceService 샘플을 참조하세요.

ComplicationDrawable 객체를 사용하지 않는 경우에는 정보 표시 텍스트에 TextRenderer을 사용합니다.

텍스트 렌더링

TextRenderer 클래스는 정보 표시에 사용하기 위한 것이며, 캔버스에 텍스트를 쉽게 그리도록 해줍니다. 이 클래스에 포함된 기능:

  • 요청된 텍스트 크기가 7자(짧은 텍스트 필드의 최대값) 경계에 맞지 않을 경우, 이 클래스는 경계에 맞을 때까지 텍스트를 축소합니다.
  • 텍스트가 지정된 줄 수를 넘어갈 수 있습니다.
  • 맞지 않는 경우 텍스트가 생략될 수 있습니다.
  • 항상 켜짐 화면(대기 모드)의 경우 렌더링이 조정됩니다.

시계 모드 엔진을 초기화하는 경우, TextRenderer 객체를 생성하고 이 TextRenderer 객체가 사용하기 원하는 TextPaint 객체를 전달할 수 있습니다. TextPaint 객체는 글꼴, 텍스트 크기, 색상 등을 정의합니다. 각 필드에 대해 TextRenderer 객체를 생성해야 합니다(예: 텍스트 필드에 하나, 제목 필드에 하나).

렌더링하려는 텍스트에 경계를 지정하는 코드를 비롯한 예시 코드는 TextRenderer을 참조하세요.

정보 표시 탭하기

시계 모드에서 탭 이벤트를 정보 표시로 전달하도록 하려면 ComplicationDrawable.onTap() 메서드를 사용합니다. 이 메서드는 시계 모드에서 탭하여 WatchFaceService.Engine.onTapCommand() 메서드를 트리거하는 기능을 기반으로 합니다.

onTap 호출로 좌표를 ComplicationDrawable에 전달할 수 있습니다. 그러면 탭 좌표가 포함된 ComplicationDrawable에 연결된 액션이 시작될 것입니다. 메서드가 호출되고, ComplicationDrawable이 연결된 액션을 시작한 경우 true 반환값이 수신될 것입니다.

setHighlightDuration() 메서드를 사용하면 onTap 메서드 호출 후 정보 표시가 강조표시된 상태로 유지되는 지속 시간을 설정할 수 있습니다.

정보 표시에 ComplicationDrawable을 사용하지 않을 경우, 직접 탭을 감지하고 탭 액션 PendingIntent를 실행해야 합니다. 사용자 탭에 반응하는 시계 모드를 생성하는 방법에 대해 알아보려면 대화식 시계 모드 생성을 참조하세요.

정보 표시 유형

정보 표시 유형은 정보 표시에 나타나는 데이터 종류를 결정합니다. 예를 들어, SHORT_TEXT 유형은 키 데이터가 짧은 문자열일 때 사용 가능합니다. SHORT_TEXT 유형의 예시에서 아이콘 및 Short title은 선택적 데이터입니다.

데이터 제공자는 시계 모드 제공자가 이러한 정보 표시 유형을 사용하는 방식과 다르게 이러한 유형을 사용합니다.

  • 데이터 제공자는 제공할 정보 표시 데이터의 유형을 선택합니다. 예를 들어, 걸음 수 제공자는 RANGED_VALUESHORT_TEXT 유형을 지원할 수도 있는 반면, "다음 미팅" 제공자는 SHORT_TEXTLONG_TEXT 유형을 지원할 수도 있습니다. 데이터 제공자는 또한 해당 유형의 어떤 선택적 필드를 포함할지도 선택합니다.
  • 시계 모드 제공자는 몇 개의 정보 표시 유형을 지원할지 선택합니다. 예를 들어, 시계 모드의 둥근 정보 표시는 SHORT_TEXT, ICONRANGED_VALUE 유형을 지원할 수도 있는 반면, 시계 모드의 게이지는 RANGED_VALUE 유형만을 지원할 수도 있습니다.

ComplicationData 객체는 항상 하나의 정보 표시 유형만 가집니다. 각 정보 표시 유형에는 필수 필드와 선택적 필드가 있습니다. 일반적으로 필수 필드는 데이터의 주요 부분을 나타내며, 대부분의 유형은 그 이름을 필수 필드에서 가져옵니다.

주어진 유형에 다른 필드 세트가 포함될 수도 있습니다. 예를 들어, SHORT_TEXT는 텍스트로만 구성되거나 제목과 텍스트 또는 아이콘과 텍스트로 구성될 수도 있습니다. 주어진 유형을 지원하는 정보 표시는 예상되는 모든 변형을 표시할 수 있어야 합니다. 그러나 일부 선택적 필드는 표시할 필요가 없습니다(아래 표의 참고 열 참조). 예를 들어, RANGED_VALUE 유형의 Short title 필드는 필수 필드가 아니므로, 텍스트를 포함하지 않고도 게이지가 나타날 수 있습니다.

정보 표시 유형의 예시

다음은 정보 표시 유형의 예시를 나타냅니다.

정보 표시 유형

유형 및 필드

다음 표는 ComplicationData 객체의 유형과 필드를 설명합니다. 정보 표시 유형에 맞지 않는 잘못된 필드를 시계 모드가 요청하는 경우, 해당 필드의 기본 값이 반환됩니다. 예를 들어, 시계 모드가 SHORT_TEXT 유형의 Long text 필드에 액세스를 시도하는 경우, Long text 필드의 기본 값(null)이 반환됩니다.

유형 필수 필드 선택적 필드 참고
SHORT_TEXT Short text Icon
Burn-in protection icon
Short title
하나 또는 둘 다 제공되는 경우 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
선택적 필드는 반드시 표시되는 것은 아닙니다. 직접 진행률 표시줄을 그리고 싶다면, setRangedValueProgressHidden() 메서드를 사용하여 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 (제공자를 가진) 정보 표시가 활성화된 경우, 실제 데이터가 제공자로부터 수신되기 전에 정보 표시를 지우기 위해 시스템에 의해 전송됩니다.

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

정보 표시 데이터에 대해 필드 사용

ComplicationData 객체의 필드에는 다양한 기능이 있습니다. 예를 들어, 텍스트 필드에는 기본 데이터가 포함되는 반면 제목 필드에는 설명이 포함되며, 걸음 수 정보 표시의 경우 텍스트 필드 값은 "2,543"이고 제목 필드 값은 "steps"일 수 있습니다.

다음 표에는 ComplicationData 객체의 필드에 대한 설명이 포함되어 있습니다. 정보 표시 유형에 따라 필드가 채워질 수도 있고 채워지지 않을 수도 있습니다.

필드 설명
Short text 작은 정보 표시를 위한 기본 텍스트 필드. 이 필드의 최대 길이는 7자를 초과해서는 안 됩니다(시간 종속 텍스트 포함). 시계 모드는 모든 7자 문자열을 렌더링할 수 있을 것으로 예상됩니다. 사용되는 문자에 따라 문자열의 너비가 달라집니다. 시계 모드는 정보 표시에 맞도록 텍스트 크기를 조정해야 합니다. 텍스트가 7자를 초과하는 경우 잘릴 수도 있습니다.
Icon 데이터나 데이터 소스를 나타내는 단색 이미지. 색조 조정이 가능해야 합니다. 이 필드에는 벡터 드로어블이 권장됩니다.
Burn-in protection icon 대기 모드에서 번인 보호를 사용하는 기기에 아이콘이 표시되도록 하는 필드. 대기 모드에서 번인 보호를 사용하는 기기에서 시계 모드는 솔리드 블록의 픽셀을 표시해서는 안 됩니다. Burn-in protection icon 필드는 icon 필드를 포함하는 모든 정보 표시 유형에 대해 선택 항목입니다. Burn-in protection icon 필드는 픽셀의 솔리드 블록을 포함해서는 안 됩니다. 표준 아이콘이 번인 보호에 부적합한 경우에는 제공자가 Burn-in protection icon 필드를 제공해야 합니다. 대기 모드에서 번인 보호가 활성화된 기기에서 시계 모드 렌더링을 수행할 경우 icon 필드 대신 Burn-in protection icon 필드를 사용해야 합니다(있는 경우).
Burn-in protection small image 대기 모드에서 번인 보호를 사용하는 기기에 이미지가 표시되도록 하는 필드. 대기 모드에서 번인 보호를 사용하는 기기에서 시계 모드는 솔리드 블록의 픽셀을 표시해서는 안 됩니다. Burn-in protection small image 필드는 small image 필드를 포함하는 모든 정보 표시 유형에 대해 선택 항목입니다. Burn-in protection small image 필드는 픽셀의 솔리드 블록을 포함해서는 안 됩니다. 표준 작은 이미지가 번인 보호에 부적합한 경우에는 제공자가 Burn-in protection small image 필드를 제공해야 합니다. 대기 모드에서 번인 보호가 활성화된 기기에서 시계 모드 렌더링을 수행할 경우 small image 필드 대신 Burn-in protection small image 필드를 사용해야 합니다(있는 경우).
Short title 작은 정보 표시를 설명하는 필드. Short text 필드와 조합될 경우에만 의미가 있을 수 있습니다. 이 필드의 최대 길이는 7자를 초과해서는 안 됩니다(시간 종속 텍스트 포함). 시계 모드는 모든 7자 문자열을 렌더링할 수 있을 것으로 예상됩니다. 사용되는 문자에 따라 문자열의 너비가 달라집니다. 시계 모드는 정보 표시에 맞도록 텍스트 크기를 조정해야 합니다. 텍스트가 7자를 초과하는 경우 잘릴 수도 있습니다.
Long text 텍스트 기반의 큰 정보 표시에 대한 기본 데이터 필드.
Long title 텍스트 기반의 큰 정보 표시를 설명하는 필드. Long text 필드와 조합될 경우에만 의미가 있을 수 있습니다.
Value 데이터의 숫자(부동 소수점) 표현. 경계인 Min valueMax value 필드에 상대적으로 표시될 것으로 예상됩니다(그러나 이 경계 사이 있을 필요는 없습니다).
Min value Value가 표시되어야 하는 범위의 하한 경계. ValueMax value와 조합될 경우에만 의미가 있을 수 있습니다.
Max value Value가 표시되어야 하는 범위의 상한 경계. ValueMin value와 조합될 경우에만 의미가 있을 수 있습니다.
Small image 데이터나 데이터 소스를 나타내는 작은 이미지. 풀컬러가 될 수도 있습니다. 전체 시계 모드를 채울 것으로 예상되지 않습니다.
Large image 시계 모드를 채울 만큼 해상도가 충분한 이미지. 풀컬러가 될 수도 있습니다.

정보 표시 유형을 테스트

각 정보 표시 유형에는 텍스트, 아이콘 등의 필드가 있습니다. 시계 모드가 정보 표시 유형을 지원하는 경우, 유효한 모든 필드 조합을 지원해야 합니다.

시계 모드에서 정보 표시 데이터가 표시되는 방식을 테스트할 수 있습니다. 구체적으로 말하면, 테스트 모음을 사용하여 정보 표시 유형의 표시를 테스트할 수 있습니다. 따라서 ComplicationData 객체에 대해 유효한 필드 조합을 테스트하는 코드를 작성할 필요가 없습니다.

테스트 모음은 샘플로 제공되는 데이터 제공자이며, 주어진 정보 표시 유형에 대해 유효한 필드 조합을 순환합니다.

테스트 모음을 사용하려면:

  1. 테스트 모음 APK를 기기나 에뮬레이터에 설치합니다.
  2. 시계 모드에 액세스하여 기본 설정 아이콘을 탭합니다.
  3. 설정 UI를 사용하여 다음 테스트 모음을 선택합니다: WearComplication-ProviderTestSuite
  4. 테스트할 정보 표시 데이터 유형을 선택합니다.
  5. 데이터 유형의 변형을 보려면 정보 표시를 탭합니다.
  6. 관련된 모든 필드 조합이 적절하게 표시되는지 확인하려면 정보 표시를 반복해서 탭합니다.

예를 들어, 정보 표시가 짧은 텍스트를 지원하는 경우 모든 기본 필드 조합에서 짧은 텍스트를 보려면 정보 표시를 탭합니다.