Wear 시계 화면

Wear OS by Google 스마트시계용 애플리케이션을 만듭니다.
최근 업데이트 공개 버전 출시 후보 베타 버전 알파 버전
2022년 6월 15일 1.1.0 - - -

종속 항목 선언

Wear의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.

Groovy

dependencies {
    // Use to implement wear watchfaces
    implementation "androidx.wear.watchface:watchface:1.1.0"

    // Use to implement wear watchface complications
    implementation "androidx.wear.watchface:watchface-complications-data-source:1.1.0"
    // (Kotlin-specific extensions)
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.1.0"

    // Use to implement a watchface style and complication editor
    implementation "androidx.wear.watchface:watchface-editor:1.1.0"

    // Can use to render complications.
    // This library is optional and watchfaces may have custom implementation for rendering
    // complications.
    implementation "androidx.wear.watchface:watchface-complications-rendering:1.1.0"
}

Kotlin

dependencies {
    // Use to implement wear watchfaces
    implementation("androidx.wear.watchface:watchface:1.1.0")

    // Use to implement wear watchface complications
    implementation "androidx.wear.watchface:watchface-complications-data-source:1.1.0"
    // (Kotlin-specific extensions)
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.1.0"

    // Use to implement a watchface style and complication editor
    implementation("androidx.wear.watchface:watchface-editor:1.1.0")

    // Can use to render complications.
    // This library is optional and watchfaces may have custom implementation for rendering
    // complications.
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.1.0"
}

종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.

의견

제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.

새로운 문제 제출하기

자세한 내용은 Issue Tracker 문서를 참고하세요.

버전 1.1

버전 1.1.0

2022년 6월 15일

androidx.wear.watchface:watchface-*:1.1.0이 출시되었습니다. 버전 1.1.0에 포함된 커밋을 확인하세요.

1.0.0 이후 중요 변경사항

편집기 개선사항:

  • 편집기 UI에서 스타일의 계층 구조를 설명할 수 있도록 하는 계층 구조 스키마 지원을 추가했습니다. 이제 시계 화면과 호환 편집기에서 사용할 아이콘을 별도로 지정할 수 있습니다.
  • 시계 화면의 여러 인스턴스를 선택할 수 있으며, 각 인스턴스에는 모든 API 노출 영역에서 사용할 수 있는 고유 ID가 있습니다.
  • 이제 편집기에서 사용할 ComplicationSlots에 사람이 읽을 수 있는 이름을 지정할 수 있습니다.
  • '버전' 스타일 지정을 실험적으로 지원합니다. 이는 호환 편집기에서 표시할 수 있는 선별된 스타일입니다.
  • 이제 시계 화면의 두 인스턴스를 편집하기 위해 로드할 때 시계 화면의 인스턴스가 리소스를 공유하여 메모리를 절약할 수 있습니다.
  • 이제 시계 화면 편집기에서 정보 표시를 선택할 때 현재 제공자가 미리 선택됩니다.

정보 표시 개선사항:

  • 이제 기본 데이터 소스와 보조 데이터 소스의 ComplicationType을 지정할 수 있으며, 이를 통해 개발자에게 더 유연한 환경을 즉시 제공할 수 있습니다.
  • 시계 화면에 전달될 시간 제한형 데이터 시퀀스를 제공하는 ComplicationDataTimeline을 추가했습니다. 이 시퀀스는 자동으로 캐시되고 업데이트될 수 있습니다. 예를 들면 수차례에 걸쳐 표시되는 오늘의 일기예보 또는 예정된 여러 캘린더 일정 등이 있습니다.
  • 정보 표시 제공자의 ComponentNameComplicationData의 일부입니다.
  • 이제 시계 화면 간에 전환할 때 정보 표시가 캐시되어 더 나은 환경을 제공합니다.

기타 변경사항:

  • 이제 UserStyleSchemaComplicationSlots를 XML로 정의할 수 있습니다. 이에 따라 시계 화면 구성이 간소화되며 시스템에서 메타데이터 쿼리를 더 빠르게 실행할 수 있습니다.
  • 이제 시계 화면이 시스템 오버레이를 렌더링하는 데 사용되는 색상에 영향을 미칠 수 있습니다.

버전 1.1.0-rc01

2022년 5월 18일

androidx.wear.watchface:watchface-*:1.1.0-rc01이 출시되었습니다. 버전 1.1.0-rc01에 포함된 커밋을 확인하세요.

새로운 기능

  • 시계 화면 XML 지원에 관해 몇 가지 사용성을 조정하여 ComplicationSlotBounds와 지원 참조를 더 쉽게 지정할 수 있도록 했습니다. 가장자리 정보 표시 BoundingArc를 사용하여 drawHighlight를 통해 연결하는 실험은 계속됩니다. 그러나 이 방법은 사용하지 않는 것이 좋습니다.

API 변경사항

  • BoundingArc 매개변수를 수락하는 실험용 오버로드 drawHighlight를 추가했습니다. (I705f8)
  • 이제 시계 화면 XML에서 리소스 참조를 지원합니다. XML과 코드 모두에 동일한 상수를 사용할 수 있습니다. (I3ef61)
  • center_x, center_y, size_x, size_y 양식에 ComplicationSlotBounds를 정의하는 기능이 추가되었습니다. 이제 리소스 참조를 통해 다른 단위(예: dp)를 사용할 수도 있습니다. (Iace98)

버그 수정

  • 잘못된 컨텍스트에서 작업을 실행하던 runBlockingWithTracing을 수정했습니다. (4f595fe)
  • BaseEditorSession.close를 동기식으로 만들었습니다. 비동기 BaseEditorSession.close의 문제는 ComplicationDataSourceInfoRetriever가 너무 늦게 해제되어 logcat에서 경고 스팸이 발생한다는 것입니다. 이로 인해 문제가 발생하지는 않았겠지만, Logcat 스팸은 방해가 되므로 피해야 합니다. (35a5308)

버전 1.1.0-beta02

2022년 5월 11일

androidx.wear.watchface:watchface-*:1.1.0-beta02가 출시되었습니다. 버전 1.1.0-beta02에 포함된 커밋을 확인하세요.

새로운 기능

  • 새로운 ComplicationData 유형을 위한 실험적 지원 기능을 추가했습니다. 아직 사용할 준비가 되지는 않았지만, 이 기능을 확인해보세요.

API 변경사항

  • 가장자리 정보 표시 자리의 도형을 설명하는 실험용 클래스인 BoundingArc를 추가했습니다. 이 API는 ComplicationSlot에 추가되었으며 ComplicationSlotStateWatchFaceMetadataClient로 연결됩니다. (I61a40)
  • UserStyleSetting XML의 설정을 상속하는 기능을 추가했습니다. 이 기능을 사용하면 상세 출력을 줄이고 시계 화면 간에 설정을 공유할 수 있습니다. (Ief841)
  • 새로운 ComplicationData의 실험 유형이 두 개 추가되었으며 ListComplicationDataProtoLayoutComplicationData입니다. 현재 이러한 유형에는 렌더링 지원이 없으며 ComplicationDataSource's 매니페스트에 추가되었더라도 WearOS는 현재 이러한 유형을 인식하지 못합니다. (I1811c)

버그 수정

  • TimeLineEntry 유형의 직렬화 문제를 수정합니다. NoData 유형의 캐시된 TimeLineEntries가 존재하지 않는 필수 필드에 액세스했을 때 상위 정보 표시 유형이 NPE를 발생시키는 것으로 잘못 해석되어 TimeLineEntry 유형을 직렬화하지 않았습니다. (55ffdf5)
  • setComplicationData가 타임라인 필드를 누락하는 버그를 수정했습니다. (fb392f5)
  • 드물게 runBlockingWithTracing으로 인해 NPE가 발생하는 버그를 수정했습니다. (12ca62e)
  • 정보 표시를 수신할 때 가끔 ClassNotFoundException: android.support.wearable.complications.ComplicationText가 발생하는 버그를 수정했습니다. (217942d9)
  • EGL14.eglCreateContext가 호출된 경우에만 onBackgroundThreadGlContextCreated를 호출하는 GlesRenderer.backgroundThreadInitInternal의 버그를 수정했습니다. verticalFlip으로 인해 스크린샷에 시각적 결함이 발생하는 또 다른 버그를 수정했습니다. (c674ad2)
  • 잘못된 패키지에서 로드되고 있던 WatchFaceService XML 버전 확인을 수정했습니다. (dfa06f3)
  • 이제 자리표시자 와이어 형식이 내부 번들을 사용합니다. 자리표시자가 숨겨진 내부 a.s.w.c.ComplicationData를 사용할 수도 있는 기존 시계 화면을 손상하지 않는 것이 좋습니다. 이전에는 NoDataComplication 데이터의 와이어 형식이 일반 필드에 자리표시자를 저장했습니다(이는 기존 시계 화면이 의도하지 않은 자리표시자 문자열을 렌더링하므로 문제가 됨). 이제는 내부 번들을 사용하여 이를 완전히 격리합니다. (d5e7bd2)

버전 1.1.0-beta01

2022년 4월 20일

androidx.wear.watchface:watchface-*:1.1.0-beta01가 출시되었습니다. 버전 1.1.0-beta01에 포함된 커밋을 확인하세요.

API 변경사항

  • 이제 WatchFaceMetadataClient 메서드(getUserStyleSchema, getComplicationSlotMetadataMap, getUserStyleFlavors) 및 HeadlessWatchFaceClient.getUserStyleFlavors에서 WatchFaceException 대신 선택 해제된 RuntimeException이 발생합니다. (I0718a)
  • WatchFaceMetadataClient.WatchFaceException를 재사용할 수 있도록 클래스 밖으로 이동했습니다. (I4e869)

버그 수정

  • 부분 ComplicationSlotBounds를 전송할 때 WatchFaceMetadataClient가 더 이상 비정상 종료되지 않습니다(Iaafd).

버전 1.1.0-alpha05

2022년 4월 6일

androidx.wear.watchface:watchface-*:1.1.0-alpha05가 출시되었습니다. 버전 1.1.0-alpha05에 포함된 커밋을 확인하세요.

새로운 기능

  • 이제 ComplicationData.dataSource를 검사하여 ComplicationData를 전송한 데이터 소스를 확인할 수 있습니다. 일부 시계 화면에서는 이를 사용해 정보 표시 화면을 맞춤설정할 수 있습니다. (I44a73)

API 변경사항

  • Renderer.CanvasRendererRenderer.GlesRenderer를 지원 중단했으며, 렌더링 메서드로 전달되는 SharedAssets를 지원하는 Renderer.CanvasRenderer2Renderer.GlesRenderer2로 대체했습니다. 자바 상호 운용성을 위해 ListenableCanvasRenderer2ListenableGlesRenderer2를 도입했습니다. (I31ffa)
  • @WatchFaceFlavorsExperimental의 버전 정의 기능을 추가했습니다. 스타일이 지정된 시계 화면 목록이 사전 구성됩니다. (I04dd0)
  • Renderer.sharedAssets는 이제 StateFlow며, 사용되지 않는 Renderer.SharedAssetsFactory를 삭제했습니다. (I12ac5)
  • UserStyleSchema.userStyleSettings가 더 이상 지원 중단되지 않습니다. (Iba7e3)
  • 다이제스트 해시를 계산하기 전에 HeadlessWatchFaceClient가 AIDL을 통해 스키마를 전달하는 상대적으로 낮은 오버헤드를 방지할 수 있도록 HeadlessWatchFaceClient.getUserStyleSchemaDigestHash를 추가했습니다. (I33597)
  • WatchFaceMetadataClientisUserStyleSchemaStatic을 추가했습니다. 이 메서드는 시계 화면 APK가 업데이트되지 않는 한 UserStyleSchema가 바뀌지 않는다는 점이 확실한 경우에만 true입니다. (I45a3f)
  • getDigestHash를 스키마의 다이제스트 해시를 계산하는 UserStyleSchema에 추가했습니다. 이를 사용하여 UserStyleSchema가 변경되었는지 효율적으로 판단할 수 있습니다. (I2063d)
  • METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED의 이름을 METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED로 변경했습니다. (I9ba5d)
  • UserStyleSetting.OnWatchEditorData의 이름을 UserStyleSetting.WatchFaceEditorData로 변경했으며 시계 화면 편집기에서만 사용되는 데이터가 포함되어 있습니다. (If3afb)

버전 1.1.0-alpha04

2022년 3월 9일

androidx.wear.watchface:watchface-*:1.1.0-alpha04가 출시되었습니다. 버전 1.1.0-alpha04에 포함된 커밋을 확인하세요.

API 변경사항

  • 최신 ComplicationData를 경우에 따라(예: 캐시된 ComplicationData 만료) 사용할 수 없습니다. 따라서 NoDataComplication을 선택적 자리표시자 ComplicationData로 확장하고, NoDataComplicationData 자리표시자 컨텍스트 내에서만 사용할 수 있는 ComplicationText.PLACEHOLDER, MonochromaticImage.PLACEHOLDER, SmallImage.PLACEHOLDER, PhotoImage.PLACEHOLDER를 추가했습니다. 선택한 경우 이러한 자리표시자는 회색 상자/호로 렌더링되는 것이 좋습니다. (I6285d)
  • 정보 표시 필드가 변경될 수 있는 참조 인스턴트 이후의 다음 인스턴트를 알려주는 ComplicationData.getNextChangeInstant를 추가했습니다. 이는 정보 표시 업데이트 프레임을 예약하는 데 내부적으로 사용됩니다. 예를 들어 시계 화면이 보통 1분에 한 번 업데이트되는 경우 스톱워치 정보 표시를 설정하면 1초에 한 번 업데이트됩니다. (I7ceb2)
  • 이제 모든 API 수준에서 EditorSession.watchFaceId를 사용할 수 있습니다. 또한 그 값은 이제 항상 WatchState.watchFaceInstanceId와 일치합니다. (I323b9)
  • 프레임워크에서 근본적인 문제가 해결되었으므로 getPendingIntentForTouchEvent API가 더 이상 필요하지 않습니다. 따라서 모든 관련 API를 삭제했습니다. 홈 버튼을 최근에 눌렀어도 시계 화면은 PendingIntents 실행을 위해 특별한 작업을 하지 않아도 됩니다. (I1f2e8)
  • RendererParameters.isForScreenShot을 추가했으며 이는 렌더링이 스크린샷용인 경우 true입니다. 애니메이션이 포함된 일부 시계 화면은 최상의 결과를 보장하기 위해 조정하려면 이를 인식해야 합니다. (I96d99)
  • 문제에 관한 설명을 위해 WatchFaceExceptionReasonWatchFaceException에 추가했습니다. (I01d15)
  • ComplicationDataSourceService.onImmediateComplicationRequest를 삭제하고 대신 제공자가 신속하게 응답(100ms 내에 응답)해야 함을 알리기 위해 ComplicationRequest.immediateResponseRequired를 추가했습니다. 이 기능은 권한이 있는 com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE 권한으로 보호됩니다. (Ie6b23)
  • Tiramisu DP2와 일치하도록 코어 및 appcompat의 null 허용 여부를 업데이트했습니다. (I0cbb7)

버그 수정

  • 이제 스키마 유효성 검사에 실패할 경우 예외와 함께 시계 화면 앱이 비정상 종료됩니다. (Ia400f)

버전 1.1.0-alpha03

2022년 2월 9일

androidx.wear.watchface:watchface-*:1.1.0-alpha03이 출시되었습니다. 버전 1.1.0-alpha03에 포함된 커밋을 확인하세요.

API 변경사항

  • 계층적 스타일 스키마의 실험용 지원을 추가했습니다. 처음에 ListOption에서만 사용되는 childSettings인 androidx.wear.watchface.style.UserStyleSetting.Option에 새 속성을 추가했습니다. 이렇게 하면 편집기 UI에서 사용할 스타일의 계층 구조를 설명할 수 있습니다. 기본 UserStyle은 변경되지 않으므로 여전히 Map<String, ByteArray>입니다. (Iaf6f4)
  • 시계 화면에서 시스템 상태 오버레이의 렌더링을 구성할 수 있는 WatchFace.OverlayStyle을 추가했습니다. (I8520d)
  • CanvasRenderer의 새로운 선택적 생성자 매개변수 clearWithBackgroundTintBeforeRenderingHighlightLayer를 도입했습니다. 기본값은 false입니다. true로 설정하면 배경 색조 색상으로 캔버스가 지워집니다. (Ie01e5)
  • 정보 표시 데이터 소스가 구성 없이 기본값을 제공할 수 있음을 나타내는 androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED 메타데이터 키를 추가했습니다. (Icc0d4)
  • 시계 화면을 수정할 때 일반적으로는 대화형 인스턴스와 헤드리스 인스턴스가 모두 있습니다. 메모리를 절약하기 위해 시계 화면 렌더기가 변경할 수 없는 데이터(예: 텍스처, 셰이더)를 인스턴스 간에 공유할 수 있도록 Renderer.SharedAssets를 도입했습니다. GlesRenderer.setEglConfigGlesRenderer.setEglDisplay는 지원 중단되었습니다. 이러한 메서드는 설정 가능하게 만들어진 것이 아니며 설정하면 정의되지 않은 동작이 발생할 수 있습니다. (I0d9e7)
  • 문자열 리소스를 참조하는 setNameResourceIdsetScreenReaderNameResourceIdComplicationSlot.Builderandroidx.wear.watchface.client.ComplicationSlotState의 상응하는 getter에 추가했습니다. 이렇게 하면 시스템이 편집기와 스크린 리더에서 사용할 ComplicationSlot의 이름을 가져올 수 있습니다. (If6c6a)
  • 이제 WatchfaceMetadataClient.getUserStyleSchemagetComplicationSlotMetadataMapRemoteException 대신 WatchFaceException을 발생시킵니다. (I86f11)
  • onSynchronousComplicationRequestComplicationDataSourceService의 관련 함수 이름이 onImmediateComplicationRequest 등으로 변경되었습니다. (I87ba0)
  • 시계 화면 편집기는 컴패니언 편집기보다 화면 영역이 훨씬 작기 때문에 시계 화면 편집기에 다양한 아이콘을 지원하는 것이 좋습니다. 이 패치는 모든 UserStyleSettings 및 적절한 경우 그 Option 클래스에 OnWatchEditorData(현재 아이콘만 포함됨)를 추가합니다. (If1886)
  • 자바 상호 운용성을 향상하기 위해 ListenableGlesRenderer의 생성자에 @JvmOverloads를 추가했습니다. (I2974a)

버그 수정

  • 이제 ListenableGlesRenderer의 생성자가 @Throws(GlesException::class)로 올바르게 표시되고 자바에서 이 클래스를 확장할 수 있습니다. (Iac6d0)
  • PhotoImageComplicationData TapAction이 올바르게 처리되지 않는 버그가 수정되었습니다. (I1cc30)

버전 1.1.0-alpha02

2022년 1월 12일

androidx.wear.watchface:watchface-*:1.1.0-alpha02가 출시되었습니다. 버전 1.1.0-alpha02에 포함된 커밋을 확인하세요.

새로운 기능

  • 디버깅 및 테스트 작업을 더 쉽게 진행하도록 ComplicationData 및 관련 서브클래스에 해시코드, 등호, toString 메서드를 재정의했습니다.

API 변경사항

  • WatchfaceMetadataClient 메서드가 적절한 상황에서 RemoteExceptions를 다시 발생시키므로 클라이언트 코드가 시계 화면의 오류를 더 쉽게 포착할 수 있습니다. (I78785)
  • 이제 ComplicationData와 서브클래스에 해시코드, 등호, toString이 포함됩니다. (I24bc6)

버전 1.1.0-alpha01

2021년 12월 15일

androidx.wear.watchface:watchface-*:1.1.0-alpha01이 출시되었습니다. 버전 1.1.0-alpha01에 포함된 커밋을 확인하세요.

새로운 기능

  • 이제 UserStyleSchemaComplicationSlots를 XML로 정의할 수 있습니다. 이에 따라 시계 화면 구성이 간소화됩니다. 또한 WatchFaceMetadataClient 쿼리는 메타데이터를 가져오기 위해 서비스에 바인딩할 필요가 없기 때문에 더 빠르게 처리됩니다. WatchFaceMetadataClientListenableWatchFaceMetadataClient는 더 이상 실험용이 아니며 안정적인 API에 포함됩니다. 시스템은 선택적으로 여러 시계 화면 인스턴스를 지원할 수 있으며, 인스턴스마다 각각의 사용자 정의 스타일 지정 옵션이 있습니다. 이 옵션은 시계 화면 선택 도구에 표시됩니다. 옵션을 사용하려면 시계 화면에서 매니페스트에 다음과 같은 메타데이터 태그를 포함해야 합니다.

        <meta-data
            android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
            android:value="true" />
    
  • 일부 시계 화면의 경우 시계 화면 인스턴트와 여러 인스턴스를 지원하기 위해 UserStyle에 지정되지 않은 상태를 포함하며, 이제 WatchState.watchFaceInstanceId를 통해 시계 화면의 인스턴스 ID를 사용할 수 있습니다.

  • 이제 정보 표시가 로드되는 즉시 나타나도록 ComplicationData가 캐시됩니다. ComplicationData는 시스템에서 메모리에 캐시되고 시계 화면 라이브러리에 의해 직렬화되는 경우가 있습니다. 직렬화되는 경우 관련 tapAction이 모두 손실되며 이때 ComplicationData.tapActionLostDueToSerializationtrue를 반환하고 시계 화면이 탭할 수 없음을 알리기 위해 정보 표시를 다르게 렌더링합니다(예: 비활성화하거나 반투명 처리함). 시스템에서 tapAction과 함께 업데이트된 ComplicationData를 최대한 빨리 전송합니다.

  • 일부 ComplicationData는 캐시하면 안 되는 기간이 길며, 이를 지원하기 위해 더 일반적인 기능인 ComplicationDataTimeline을 추가했습니다. 이를 통해 시계 화면에 전달되어 자동으로 캐시 및 업데이트되는 시간 제한형 ComplicationData 시퀀스를 제공할 수 있습니다. 예를 들면 수차례에 걸쳐 표시되는 오늘의 일기예보 또는 예정된 여러 캘린더 일정 등이 있습니다. 이 데이터를 반환하는 데 사용할 수 있는 새로운 onComplicationDataTimeline 메서드로 ComplicationRequestListener가 확장되었습니다.

  • DefaultComplicationDataSourcePolicy가 확장되었으므로 기본 및 보조 데이터 소스의 ComplicationType을 지정할 수 있습니다.

  • 시계 화면이 표시되어 있고 대기 모드가 아닐 때 정보 표시 업데이트 빈도가 일반 수준보다 더 잦은(최대 초당 1회) 동기식 정보 표시 제공자 지원을 추가했습니다. 참고: 동기식 정보 표시 제공자는 메모리 부담 문제로 인해 사용이 제한될 수 있습니다.

  • PendingIntentTapListener가 변경되기 전으로 되돌려질 가능성이 큽니다. 홈 버튼을 누른 후 5초 동안 시계 화면이 활동을 시작할 수 없는 프레임워크 내 근본적인 문제를 해결했기 때문입니다.

API 변경사항

  • ComplicationData.isCachedtapActionLostDueToSerialization으로 변경했습니다. 탭할 수 없음을 알리기 위해 정보 표시 자리를 다르게 렌더링해야 하는지를 판단할 때 더 유용합니다. (I6de2f)
  • wear-complication-data-sourceComplicationDataTimeline을 추가했습니다. 이를 통해 시계 화면에 전달되어 자동으로 캐시 및 업데이트되는 시간 제한형 ComplicationData 시퀀스를 제공할 수 있습니다. 예를 들면 수차례에 걸쳐 표시되는 오늘의 일기예보 또는 예정된 여러 캘린더 일정 등이 있습니다. 이 데이터를 반환하는 데 사용할 수 있는 새로운 onComplicationDataTimeline 메서드로 ComplicationRequestListener가 확장되었습니다. 데이터 소스 서비스를 정지시키는 새로운 Kotlin 래퍼 SuspendingTimelineComplicationDataSourceService가 있습니다. (Idecdc)
  • PendingIntentTapListenerWatchFaceControlClient.getPendingIntentForTouchEvent를 추가했습니다. 이는 프레임워크로 인해 홈 버튼을 누른 후 5초 동안 새 활동이 시작되지 않는 문제를 해결하기 위해 탭에 응답하여 인텐트를 시작해야 하는 시계 화면에 유용할 수 있습니다. (I98074)
  • 시계 화면별 ComplicationData 캐시를 도입했습니다. 이 캐시의 목적은 시스템에서 정보 표시의 데이터 값을 업데이트할 수 있을 때까지 시계 화면이 로드된 마지막 데이터 값을 표시하기 위함입니다. OEM을 위한 새로운 API 메서드인 WatchFaceControlClient.hasComplicationCache가 제공됩니다. 이 메서드는 시계 화면에 정보 표시를 전송하는 시스템의 전략에 영향을 줄 수 있습니다. ComplicationData에는 isCached 속성도 있습니다. 또한 tapAction은 캐시할 수 없고 캐시된 정보 표시에서 null이 되므로 캐시된 정보 표시를 다르게 렌더링하는 것이 좋습니다. (I404b0)
  • 이제 WatchState.watchFaceInstanceId를 통해 시계 화면의 인스턴스 ID를 사용할 수 있습니다. 이 메서드는 대부분의 시계 화면에서 사용할 필요가 없지만, 스키마에 저장되지 않은 시계 화면별 상태가 있는 경우 시계 화면 인스턴스를 식별하는 데 사용할 키가 됩니다. 이제 WatchFaceControlClient.createHeadlessWatchFaceClient를 호출할 때 ID를 제공하여 이 작업을 지원할 수 있습니다. (I1ff98)
  • 기본/보조 제공자 및 대체 시스템 제공자를 대상으로 기본 ComplicationTypes를 설정하는 기능을 포함하여 DefaultComplicationDataSourcePolicy를 확장했습니다. 이제 ComplicationSlot.defaultDataSourceType이 지원 중단됩니다. (If0ce3)
  • 이제 ComplicationSlot.configExtras는 변경 가능하며 EditorSession.openComplicationDataSourceChooser() 호출 전에 업데이트할 수 있습니다. (I6f852)
  • WatchFace.setComplicationDeniedDialogIntentsetComplicationRationaleDialogIntent를 추가했습니다. 이러한 인텐트는 정보 표시 권한을 요청하기 전에 근거 대화상자를 표시하고, 정보 표시 권한이 거부되었을 때 정보 표시를 수정하려면 정보 표시 권한이 필요함을 설명하는 또 다른 대화상자(제공자 선택기가 열리지 않으므로 대화상자가 필요함)를 표시하기 위해 시작됩니다. (I3a29c)
  • 이제 UserStyleSchemaComplicationSlots를 XML로 정의할 수 있습니다. 이에 따라 시계 화면 구성이 간소화되며 WatchFaceMetadataClient 쿼리는 메타데이터를 가져오기 위해 서비스에 바인딩될 필요가 없기 때문에 더 빠르게 처리됩니다. (I85bfa)
  • 클라이언트가 시계 화면이 getPendingIntentForTouchEvent를 지원하는지 확인할 수 있도록 InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent를 추가했습니다. (I0b917)
  • WatchFaceMetadataClientListenableWatchFaceMetadataClient는 더 이상 실험용이 아닙니다. 가능한 경우 시계 화면 바인더를 열지 않고도 시계 화면 메타데이터를 효율적으로 가져오는 데 사용할 수 있습니다. (Ibb827)
  • 시계 화면이 표시되어 있고 대기 모드가 아닐 때 정보 표시 업데이트 빈도가 일반 수준보다 더 잦은(최대 초당 1회) 동기식 정보 표시 제공자 지원을 추가했습니다. 이 기능을 사용하려면 제공자가 매니페스트에 새 androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS 메타데이터 태그를 포함하고 onSynchronousComplicationRequest를 재정의해야 합니다. 데이터 소스의 특성에 따라 정보 표시의 대화형 모드가 시작될 때와 종료될 때 알림을 받도록 onStartSynchronousComplicationRequestsonStopInteractiveComplicationRequests를 재정의해야 할 수도 있습니다. (I8fe9d)

버전 1.0

버전 1.0.1

2022년 2월 9일

androidx.wear.watchface:watchface-*:1.0.1이 출시되었습니다. 버전 1.0.1에 포함된 커밋을 확인하세요.

버그 수정

  • PhotoImageComplicationData TapAction이 올바르게 처리되지 않는 버그가 수정되었습니다. (I1cc30)

버전 1.0.0

2021년 12월 1일

androidx.wear.watchface:watchface-*:1.0.0이 출시되었습니다. 버전 1.0.0에 포함된 커밋을 확인하세요.

1.0.0의 주요 기능

androidx.wear.watchface 패키지는 WearOS 시계 화면 개발에 권장되는 새로운 라이브러리입니다. 기존 웨어러블 지원 라이브러리에 비해 여러 새로운 기능이 있습니다.

  • 라이브러리에서 바로 사용자 스타일(예: 색상 팔레트, 시계 침 스타일, 시간 표시 모양 등의 변경)을 지정할 수 있습니다(androidx.wear.watchface.style 참고). 이제 androidx.wear.watchface.editor를 사용하여 시계 화면 편집기를 훨씬 더 쉽게 개발하고, 추가 코드를 작성할 필요 없이 시스템 호환 앱에서 시계 화면을 수정할 수 있습니다.
  • 권장사항이 통합되었습니다. 새로운 라이브러리는 정보 표시와 관련된 스크린 리더 콘텐츠 라벨을 자동으로 생성하며, 개발자가 나만의 라벨을 추가할 수도 있습니다. 배터리가 부족하고 충전 중이 아닐 때 프레임 속도가 자동으로 줄어들어 배터리 수명이 개선됩니다.
  • 특히 많은 상용구 코드가 라이브러리로 이전된 정보 표시의 경우 시계 화면을 개발하는 데 필요한 코드가 줄어듭니다.

버그 수정

  • EditorSession.userStyle.compareAndSet 수정(I6f676)
  • 매우 짧은 시계 화면 지연 문제 해결(Iffb97)
  • UI 스레드에서 InteractiveWatchFaceImpl.onDestroy 전송(I83340)
  • broadcast receiver의 몇 가지 문제 해결(I7d25f)

버전 1.0.0-rc01

2021년 11월 3일

androidx.wear.watchface:watchface-*:1.0.0-rc01이 출시되었습니다. 버전 1.0.0-rc01에 포함된 커밋을 확인하세요.

버그 수정

  • 흐름 이전으로 인해 중단되는 dump()(adb 셸 dumpsys가 호출함) 문제를 해결했습니다. (087cf9e)

  • writeDirectBootPrefs의 올바른 순서를 확인합니다. writeDirectBootPrefs가 항상 initStyleAndComplications 이후에 실행되도록 합니다. 그러지 않으면 UI 스레드 초기화가 지연될 위험이 있습니다. (37650ac)

  • Renderer.onDestroy가 호출되었는지 확인합니다. 렌더기가 생성되었지만 WF init가 완료되지 않고 Engine.onDestroy가 호출되는 시나리오에서는 Renderer.onDestroy를 호출해야 합니다. (f9952dc)

  • isBatteryLowAndNotCharging을 최적화/수정합니다. 이 패치는 isBatteryLowAndNotCharging의 초기 설정을 이전으로 이동하여 createWatchFace와 동시에 실행할 수 있습니다. 또한 이제 ACTION_POWER_DISCONNECTED를 수신 대기합니다. (ddffd80)

  • InteractiveWatchFaceClientImpl.isConnectionAlive를 닫은 후 false로 설정합니다. (ab9774e)

버전 1.0.0-beta01

2021년 10월 27일

androidx.wear.watchface:watchface-*:1.0.0-beta01이 출시되었습니다. 버전 1.0.0-beta01에 포함된 커밋을 확인하세요.

버전 1.0.0-alpha24

2021년 10월 13일

androidx.wear.watchface:watchface-*:1.0.0-alpha24가 출시되었습니다. 버전 1.0.0-alpha24에 포함된 커밋을 확인하세요.

API 변경사항

  • 패키지 androidx.wear.watchface.complications의 클래스가 새 wear:watchface:watchface-complications 프로젝트로 이동되었습니다. 따라서 이 라이브러리와 wear:watchface:watchface-complications-data의 이전 알파 버전을 포함할 수 없습니다. 중복 클래스와 관련된 오류가 발생하기 때문입니다. (I97195)
  • Renderer.dump가 Renderer.onDump로 이름이 바뀌었고 @UiThread로 주석이 달렸습니다. (I44845)
  • InteractiveWatchFaceClient.addWatchFaceReadyListener의 이름은 addOnWatchFaceReadyListener로, removeWatchFaceReadyListener의 이름은 removeOnWatchFaceReadyListener로 바뀌었습니다. (I48fea)
  • EditorSession getComplicationsPreviewDatagetComplicationsDataSourceInfo는 더 이상 정지 함수가 아닙니다. 대신 초기에 값이 null인 StateFlow<> 속성입니다. ListenableEditorSession에서 getListenableComplicationPreviewDatagetListenableComplicationsProviderInfo는 기본 클래스에서 삭제되고 새 StateFlow<> 객체로 대체되었습니다. 자바 코드의 변경사항을 수신 대기해야 하는 경우 androidx.lifecycle.FlowLiveDataConversions.asLiveData를 사용하여 LiveData<>로 변환하는 것이 좋습니다. (Ic5483)

버전 1.0.0-alpha23

2021년 9월 29일

androidx.wear.watchface:watchface-*:1.0.0-alpha23이 출시되었습니다. 버전 1.0.0-alpha23에 포함된 커밋을 확인하세요.

새로운 기능

이제 시계 화면 라이브러리가 단일 라이브러리 그룹입니다. 따라서 라이브러리가 이동되어 gradle 가져오기를 다음과 같이 업데이트해야 합니다.

변경 전 신규
androidx.wear:wear-complications-data androidx.wear.watchface:watchface-complications-data
androidx.wear:wear-complications-data-source androidx.wear.watchface:watchface-complications-data-source
androidx.wear:wear-watchface androidx.wear.watchface:watchface
androidx.wear:wear-watchface-complications-rendering androidx.wear.watchface:watchface-complications-rendering
androidx.wear:wear-watchface-client androidx.wear.watchface:watchface-client
androidx.wear:wear-watchface-client-guava androidx.wear.watchface:watchface-client-guava
androidx.wear:wear-watchface-data androidx.wear.watchface:watchface-data
androidx.wear:wear-watchface-editor androidx.wear.watchface:watchface-editor
androidx.wear:wear-watchface-editor-guava androidx.wear.watchface:watchface-editor-guava
androidx.wear:wear-watchface-guava androidx.wear.watchface:watchface-guava
androidx.wear:wear-watchface-style androidx.wear.watchface:watchface-style

API 변경사항

  • 별도의 androidx.wear 시계 화면 및 정보 표시 라이브러리를 androidx.wear.watchface 라이브러리 그룹으로 이전합니다. (b25f3c0)
  • 시계 화면 편집기에서 헤드리스 편집을 지원하는지 클라이언트가 알 수 있도록 EditorRequest.canWatchFaceSupportHeadlessEditing을 추가했습니다. asop/1756809에 지원이 추가되었으므로 여기에는 일부 거짓음성이 발생합니다. 그러나 향후 모든 시계 화면의 올바른 값을 반환합니다. (ca55590)
  • 이제 렌더기에 재정의하여 ABD 셸 dumpsys 활동 서비스 WatchFaceService에서 생성된 정보에 맞춤 데이터를 추가할 수 있는 dump() 메서드가 있습니다. (95235f9)
  • 이제 InteractiveWatchFaceClient.addWatchFaceReadyListener에서 실행자를 먼저 지정합니다. (563ac2f)
  • StateFlowCompatHelper를 삭제했습니다. 대신 asLiveData(androidx.lifecycle.asLiveData)를 사용해야 합니다. (bd35d3)
  • CurrentUserStyleRepository.userStyle은 더 이상 변경할 수 없습니다. (I44889)
  • WatchFaceReadyListener를 OnWatchFaceReadyListener로 이름을 바꿨습니다. (Ic12a9)

버그 수정

  • InteractiveInstanceManager.deleteInstance를 사용하여 onDestroy를 호출합니다. 이는 InteractiveWatchFaceImpl이 가비지 컬렉션되도록 하는 데 필요합니다. (fce4af8, b/199485839)