Wear Watchface
Bản cập nhật mới nhất | Bản phát hành ổn định | Bản phát hành dùng thử | Bản phát hành beta | Bản phát hành alpha |
---|---|---|---|---|
Ngày 15 tháng 6 năm 2022 | 1.1.0 | - | - | - |
Khai báo phần phụ thuộc
Để thêm một phần phụ thuộc trên Wear, bạn phải thêm kho lưu trữ Maven của Google vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.
Thêm các phần phụ thuộc cho cấu phần mềm bạn cần trong tệp build.gradle
cho ứng dụng hoặc mô-đun:
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" }
Để biết thêm thông tin về các phần phụ thuộc, hãy xem bài viết Thêm phần phụ thuộc vào bản dựng.
Ý kiến phản hồi
Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.
Hãy xem tài liệu về công cụ theo dõi lỗi để biết thêm thông tin.
Phiên bản 1.1
Phiên bản 1.1.0
Ngày 15 tháng 6 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.1.0
. Phiên bản 1.1.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.0.0
Cải thiện tính năng chỉnh sửa:
- Chúng tôi đã thêm tùy chọn hỗ trợ cho lược đồ phân cấp, cho phép phân cấp các kiểu được ghi chép bởi giao diện người dùng của trình chỉnh sửa. Giờ đây bạn đã có thể chỉ định các biểu tượng riêng biệt để sử dụng trên mặt đồng hồ và trình chỉnh sửa đồng hành.
- Có hỗ trợ tùy chọn tham gia cho nhiều phiên bản của mặt đồng hồ, mỗi phiên bản có sẵn một ID duy nhất trên tất cả các nền tảng API.
- Giờ đây bạn đã có thể chỉ định tên mà người dùng có thể đọc được của
ComplicationSlots
để sử dụng trong trình chỉnh sửa. - Hỗ trợ thử nghiệm để tạo kiểu cho "hương vị", một lựa chọn các kiểu được hiển thị từ trình chỉnh sửa đồng hành.
- Giờ đây, khi chỉnh sửa 2 phiên bản của mặt đồng hồ, các phiên bản mặt đồng hồ đã có thể chia sẻ tài nguyên và tiết kiệm bộ nhớ.
- Khi chọn một chức năng trong trình chỉnh sửa mặt đồng hồ, nhà cung cấp hiện tại đã được chọn trước
Chức năng được cải thiện:
- Giờ đây, bạn có thể chỉ định
ComplicationType
cho nguồn dữ liệu chính và phụ, qua đó giúp các nhà phát triển có trải nghiệm linh hoạt hơn khi sử dụng. - Chúng tôi đã thêm
ComplicationDataTimeline
để cung cấp một chuỗi dữ liệu định thời gian được gửi đến mặt đồng hồ, dữ liệu này sẽ được lưu vào bộ nhớ đệm và cập nhật tự động. Ví dụ: dự báo thời tiết hôm nay tại nhiều thời điểm hoặc nhiều sự kiện sắp tới trên lịch. ComponentName
của nhà cung cấp chức năng là một phần củaComplicationData
.- Giờ đây, các chức năng đã được lưu vào bộ nhớ đệm sẽ mang lại trải nghiệm tốt hơn khi bạn chuyển đổi giữa các mặt đồng hồ.
Thay đổi khác
- Hiện tại, bạn có thể định nghĩa
UserStyleSchema
vàComplicationSlots
ở định dạng XML. Việc này giúp đơn giản hóa cấu trúc mặt đồng hồ và cho phép hệ thống truy vấn siêu dữ liệu nhanh hơn. - Giờ đây, mặt đồng hồ có thể ảnh hưởng đến các màu dùng để hiển thị lớp phủ hệ thống.
Phiên bản 1.1.0-rc01
Ngày 18 tháng 5 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.1.0-rc01
. Phiên bản 1.1.0-rc01 bao gồm các thay đổi sau.
Tính năng mới
- Chúng tôi đã điều chỉnh một số tính năng hữu dụng để hỗ trợ mặt đồng hồ XML, giúp bạn dễ dàng hơn trong việc chỉ định
ComplicationSlotBounds
và hỗ trợ các tài liệu tham chiếu. Tiếp tục cung cấp chodrawHighlight
thử nghiệm với các vùng chức năng cạnhBoundingArc
mặc dù bạn không nên sử dụng thử nghiệm tại thời điểm đó.
Thay đổi API
- Chúng tôi đã thêm một tình trạng quá tải thử nghiệm là
drawHighlight
, trong đó chấp nhận tham sốBoundingArc
. (I705f8) - Mặt đồng hồ XML hiện hỗ trợ các tham chiếu tài nguyên. Tạo điều kiện cho bạn sử dụng cùng một hằng số ở cả XML và mã. (I3ef61)
- Chúng tôi đã bổ sung khả năng xác định
ComplicationSlotBounds
trong biểu mẫucenter_x
,center_y
,size_x
,size_y
. Giờ đây, bạn cũng có thể sử dụng các đơn vị khác nhau (tức là dp) bằng cách sử dụng tài liệu tham chiếu tài nguyên. (Iace98)
Sửa lỗi
- Sửa
runBlockingWithTracing
đang chạy tác vụ trên ngữ cảnh không chính xác.(4f595fe) - Đặt
BaseEditorSession.close
đồng bộ. Vấn đề vớiBaseEditorSession.close
không đồng bộ là do chúng tôi hủy bỏComplicationDataSourceInfoRetriever
quá muộn dẫn đến cảnh báo spam trong logcat. Điều này có thể vô hại nhưng cần tránh vì spam logcat gây mất tập trung.(35a5308)
Phiên bản 1.1.0-beta02
Ngày 11 tháng 5 năm 2022
androidx.wear.watchface:watchface-*:1.1.0-beta02
đã phát hành. Phiên bản 1.1.0-beta02 bao gồm các thay đổi sau.
Tính năng mới
- Chúng tôi đã thêm hỗ trợ thử nghiệm cho các loại
ComplicationData
mới. Các loại này chưa sẵn sàng để sử dụng nhưng hãy để mắt đến không gian này nhé.
Thay đổi API
- Chúng tôi đã thêm
BoundingArc
, một lớp thử nghiệm mô tả hình dạng của một góc khu vực hiển thị chức năng. Nó đã được thêm vàoComplicationSlot
và được chuyển quaComplicationSlotState
vàWatchFaceMetadataClient
. (I61a40) - Chúng tôi đã thêm tính năng kế thừa các tùy chọn cài đặt trong
UserStyleSetting
XML. Nó cho phép bạn giảm độ chi tiết và chia sẻ tùy chọn cài đặt giữa các mặt đồng hồ. (Ief841) - Chúng tôi đã thêm hai loại thử nghiệm mới của
ComplicationData
:ListComplicationData
vàProtoLayoutComplicationData
. Hiện tại, chúng tôi không hỗ trợ tính năng hiển thị nội dung thuộc một trong hai loại này, và WearOS hiện không nhận ra các loại này nếu nó được thêm vào một tệp kê khaiComplicationDataSource's
. (I1811c)
Sửa lỗi
- Khắc phục chuyển đổi tuần tự của loại
TimeLineEntry
. Chúng tôi không chuyển đổi tuần tự loạiTimeLineEntry
có nghĩa làTimeLineEntries
đã lưu vào bộ nhớ đệm của loại NoData sẽ bị diễn giải là loại có chức năng mẹ dẫn đến NPE khi các trường bắt buộc không tồn tại. (55ffdf5) - Khắc phục lỗi của
setComplicationData
các trường có trình thả dòng thời gian(fb392f5) - Khắc phục lỗi đôi khi
runBlockingWithTracing
sẽ dẫn đến NPE(12ca62e) - Khắc phục lỗi đôi khi chúng tôi gặp phải
ClassNotFoundException: android.support.wearable.complications.ComplicationText
khi nhận được sự phức tạp.(217942d9) - Sửa lỗi trong
GlesRenderer.backgroundThreadInitInternal
nơi chỉ gọionBackgroundThreadGlContextCreated
nếuEGL14.eglCreateContext
được gọi. Khắc phục một lỗi khác khiến ảnh chụp màn hình bị lỗi doverticalFlip
.(c674ad2) - Sửa lỗi kiểm tra phiên bản XML
WatchFaceService
, nó đang tải từ gói không chính xác.(dfa06f3) - Định dạng lưới phần giữ chỗ hiện sử dụng gói bên trong. Chúng tôi không muốn phần giữ chỗ làm hỏng các mặt đồng hồ hiện có, có thể sử dụng bên trong a.s.w.c.ComplicationData ẩn Trước đây, định dạng lưới của dữ liệu
NoDataComplication
lưu trữ phần giữ chỗ trong các trường thông thường (có vấn đề vì mặt đồng hồ cũ không có mục đích hiển thị chuỗi phần giữ chỗ). Thay vào đó, chúng ta hiện sử dụng gói bên trong để tách riêng toàn bộ dữ liệu này.(d5e7bd2)
Phiên bản 1.1.0-beta01
Ngày 20 tháng Tư, 2022
Phát hành androidx.wear.watchface:watchface-*:1.1.0-beta01
. Phiên bản 1.1.0-beta01 chứa các thao tác lưu trữ thay đổi này.
Thay đổi API
- Giờ đây, các phương thức
WatchFaceMetadataClient
(getUserStyleSchema
,getComplicationSlotMetadataMap
,getUserStyleFlavors
) vàHeadlessWatchFaceClient.getUserStyleFlavors
sẽ gửi chế độ chạy môi trường thời gian chạy chưa chọn thay vìWatchFaceException
. (I0718a) WatchFaceMetadataClient.WatchFaceException
đã được di chuyển khỏi lớp học để có thể sử dụng lại. (I4e869)
Sửa lỗi
WatchFaceMetadataClient
sẽ không còn gặp sự cố khi được gửi một phầnComplicationSlotBounds
.(Iaafd)
Phiên bản 1.1.0-alpha05
Ngày 6 tháng 4 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.1.0-alpha05
. Phiên bản 1.1.0-alpha05 bao gồm các thay đổi sau.
Tính năng mới
- Giờ đây, bạn có thể biết nguồn dữ liệu nào đã gửi
ComplicationData
bằng cách kiểm traComplicationData.dataSource
. Một số mặt đồng hồ có thể sử dụng tính năng này để tùy chỉnh giao diện hiển thị phức tạp. (I44a73)
Thay đổi API
Renderer.CanvasRenderer
vàRenderer.GlesRenderer
đã ngừng hoạt động, thay vào đó làRenderer.CanvasRenderer2
vàRenderer.GlesRenderer2
hỗ trợSharedAssets
. Các phương thức này được chuyển sang phương thức hiển thị. Đối với tính năng tương tác java, chúng tôi đã ra mắtListenableCanvasRenderer2
vàListenableGlesRenderer2
. (I31ffa)- Thêm chức năng xác định hương vị cho
@WatchFaceFlavorsExperimental
– danh sách các mặt đồng hồ được định cấu hình sẵn (I04dd0) Renderer.sharedAssets
hiện là một StateFlow và chúng tôi đã xóa nhữngRenderer.SharedAssetsFactory
(I12ac5) không dùng đến.UserStyleSchema.userStyleSettings
không còn được dùng nữa (Iba7e3)- Chúng tôi đã thêm
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash
để cho phépHeadlessWatchFaceClient
tránh chi phí tương đối thấp khi chuyển giản đồ qua AIDL trước khi tính toán hàm băm thông báo. (I33597) - Chúng tôi đã thêm
isUserStyleSchemaStatic
vàoWatchFaceMetadataClient
, điều này đúng nếu và chỉ khiUserStyleSchema
có thể dựa vào để không thay đổi trừ khi APK mặt đồng hồ được cập nhật. (I45a3f) - Chúng tôi đã thêm
getDigestHash
vàoUserStyleSchema
để tính toán hàm băm thông báo của giản đồ. Thông tin này có thể được dùng để xác định một cách hiệu quả về việcUserStyleSchema
có thay đổi hay không. (I2063d) METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED
được đổi tên thànhMETADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED
(I9ba5d)UserStyleSetting.OnWatchEditorData
đã được đổi tên thànhUserStyleSetting.WatchFaceEditorData
, chứa dữ liệu mà trình chỉnh sửa mặt đồng hồ chỉ sử dụng riêng. (If3afb)
Phiên bản 1.1.0-alpha04
Ngày 9 tháng 3 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.1.0-alpha04
. Phiên bản 1.1.0-alpha04 bao gồm các thay đổi sau.
Thay đổi API
- Đến nay,
ComplicationData
không phải lúc nào cũng dùng được (ví dụ: ComversionData đã hết hạn lưu vào bộ nhớ đệm). Vì vậy, chúng tôi đã gia hạnNoDataComplication
bằng một phần giữ chỗ không bắt buộc ComplicationData và thêmComplicationText.PLACEHOLDER
,MonochromaticImage.PLACEHOLDER
,SmallImage.PLACEHOLDER
,PhotoImage.PLACEHOLDER
, vốn chỉ được phép sử dụng trong bối cảnh của phần giữ chỗNoDataComplicationData
. Nếu được chọn, các phần giữ chỗ này sẽ được đề xuất hiển thị với các hộp/miếng giữ xám. (I6285d) - Chúng tôi đã thêm
ComplicationData.getNextChangeInstant
để cho bạn biết phiên bản tức thì tiếp theo sau giá trị tham chiếu tức thì mà tại đó mọi trường của chức năng có thể thay đổi. Yếu tố này được sử dụng nội bộ để lên lịch khung nhằm mục đích cập nhật chức năng. Ví dụ: nếu mặt đồng hồ thường cập nhật 1 lần/phút thì việc đặt chức năng trên đồng hồ bấm giờ khiến đồng hồ cập nhật 1 lần/giây. (I7ceb2) EditorSession.watchFaceId
hiện có thể dùng được trên mọi cấp độ API. Ngoài ra, giờ đây, giá trị của yếu tố này sẽ luôn nhất quán vớiWatchState.watchFaceInstanceId
. (I323b9)- API
getPendingIntentForTouchEvent
không còn cần thiết vì vấn đề liên quan đã được khắc phục trong khung này, vì vậy tất cả API liên quan đã bị xoá. Mặt đồng hồ không cần làm gì đặc biệt đểPendingIntents
kích hoạt, ngay cả khi gần đây nút màn hình chính đã được nhấn vào. (I1f2e8) - Chúng tôi đã thêm
RendererParameters.isForScreenShot
. Yếu tố này sẽ đúng nếu sự kết xuất là cho ảnh chụp màn hình. Một số mặt đồng hồ có ảnh động cần biết yếu tố này để điều chỉnh nhằm đảm bảo kết quả tốt nhất. (I96d99) - Chúng tôi đã thêm
WatchFaceExceptionReason
vàoWatchFaceException
để cung cấp bối cảnh cho sự cố. (I01d15) ComplicationDataSourceService.onImmediateComplicationRequest
đã bị xoá. Thay vào đó,ComplicationRequest.immediateResponseRequired
đã được thêm vào để thông báo rằng trình cung cấp cần phản hồi nhanh (tốt nhất là trả lời trong vòng < 100 mili giây). Xin lưu ý rằng chức năng này được bảo vệ theo quyềncom.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE
đặc quyền. (Ie6b23)- Cập nhật tính chất rỗng trong lõi và appcompat để phù hợp với Tiramisu DP2 (I0cbb7)
Sửa lỗi
- Bây giờ, ứng dụng mặt đồng hồ sẽ gặp sự cố ngoại lệ nếu việc xác thực giản đồ không thành công (Ia400f)
Phiên bản 1.1.0-alpha03
Ngày 9 tháng 2 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.1.0-alpha03
. Phiên bản 1.1.0-alpha03 bao gồm các thay đổi sau.
Thay đổi API
- Chúng tôi đã thêm sự hỗ trợ thử nghiệm cho giản đồ kiểu phân cấp. Chúng tôi đã thêm một thuộc tính mới vào
androidx.wear.watchface.style.UserStyleSetting.Option
, childSettings, vốn ban đầu chỉ đượcListOption
sử dụng. Việc này cho phép hệ thống phân cấp kiểu được sử dụng trong giao diện người dùng của Trình chỉnh sửa, UserStyle liên quan không thay đổi và vẫn làMap<String, ByteArray>
. (Iaf6f4) - Chúng tôi đã thêm
WatchFace.OverlayStyle
cho phép mặt đồng hồ định cấu hình việc hiển thị lớp phủ trạng thái hệ thống. (I8520d) - Chúng tôi đã giới thiệu
clearWithBackgroundTintBeforeRenderingHighlightLayer
, một thông số hàm khởi tạo không bắt buộc mới choCanvasRenderer
(mặc định là false). Nếu bạn đặt thông số này thành true thì canvas sẽ bị xoá bằng màu sắc nhạt của nền. (Ie01e5) - Thêm khoá siêu dữ liệu
androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED
cho phép các nguồn dữ liệu phức tạp cho biết rằng các nguồn đó có thể cung cấp giá trị mặc định mà không cần bất kỳ chế độ cấu hình nào (Icc0d4) - Thông thường, khi chỉnh sửa mặt đồng hồ, bạn sẽ thấy cả thực thể tương tác và không có giao diện người dùng. Để giúp tiết kiệm bộ nhớ, chúng tôi đã giới thiệu
Renderer.SharedAssets
, cho phép trình kết xuất mặt đồng hồ chia sẻ dữ liệu không thể thay đổi (ví dụ: kết cấu và bóng đổ) giữa các thực thể.GlesRenderer.setEglConfig
vàGlesRenderer.setEglDisplay
không được dùng nữa. Chúng tôi không bao giờ có ý định làm cho các yếu tố này có thể đặt được vì làm như vậy sẽ dẫn đến hành vi không xác định. (I0d9e7) - Chúng tôi đã thêm
setNameResourceId
vàsetScreenReaderNameResourceId
(tham chiếu đến tài nguyên chuỗi) vàoComplicationSlot.Builder
và các phương thức getter tương ứng trongandroidx.wear.watchface.client.ComplicationSlotState
. Hoạt động này cho phép hệ thống tìm nạp tên của ComplicationSlots để sử dụng trong trình chỉnh sửa và trình đọc màn hình. (If6c6a) WatchfaceMetadataClient.getUserStyleSchema
vàgetComplicationSlotMetadataMap
hiện đang gửiWatchFaceException
thay vìRemoteException
. (I86f11)onSynchronousComplicationRequest
và các chức năng liên quan trongComplicationDataSourceService
đã được đổi tên thànhonImmediateComplicationRequest
, v.v. (I87ba0)- Trình chỉnh sửa mặt đồng hồ có ít không gian trên màn hình hơn so với trình chỉnh sửa đồng hành, vì vậy việc hỗ trợ nhiều biểu tượng cho trình chỉnh sửa mặt đồng hồ là hợp lý. Bản vá này thêm
OnWatchEditorData
(hiện chỉ chứa một biểu tượng) vào tất cả UserStyleSettings và tại các lớp Tuỳ chọn thích hợp trong đó. (If1886) - Chúng tôi đã thêm
@JvmOverloads
vào hàm khởi tạo của ListenableGlesRenderer để tăng khả năng tương tác bằng Java. (I2974a)
Sửa lỗi
- Hàm khởi tạo của
ListenableGlesRenderer
hiện được đánh dấu chính xác là@Throws(GlesException::class)
. Do đó, bạn hiện có thể mở rộng lớp này trong Java. (Iac6d0) - Khắc phục lỗi tapAction
PhotoImageComplicationData
không được xử lý chính xác (I1cc30)
Phiên bản 1.1.0-alpha02
Ngày 12 tháng 1 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.1.0-alpha02
. Phiên bản 1.1.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
- Để hỗ trợ việc gỡ lỗi và thử nghiệm,
ComplicationData
và các lớp con có liên quan hiện đã ghi đè mã băm, giá trình bằng và phương thức toString để giúp bạn dễ dàng xử lý hơn.
Thay đổi API
- Phương thức
WatchfaceMetadataClient
một lần nữa lại gửiRemoteExceptions
khi thích hợp, giúp mã ứng dụng dễ dàng phát hiện lỗi trên mặt đồng hồ hơn. (I78785) ComplicationData
và các lớp con hiện có mã băm, giá trình bằng và phương thức toString. (I24bc6)
Phiên bản 1.1.0-alpha01
Ngày 15 tháng 12 năm 2021
Phát hành androidx.wear.watchface:watchface-*:1.1.0-alpha01
. Phiên bản 1.1.0-alpha01 chứa những cam kết này.
Tính năng mới
Hiện tại, bạn có thể định nghĩa
UserStyleSchema
vàComplicationSlots
ở định dạng XML. Việc này giúp đơn giản hoá cấu trúc mặt đồng hồ. Ngoài ra, các lượt truy vấnWatchFaceMetadataClient
nhanh hơn vì không cần liên kết với dịch vụ để lấy siêu dữ liệu.WatchFaceMetadataClient
vàListenableWatchFaceMetadataClient
không còn thử nghiệm nữa và sẽ trở thành một phần của API ổn định. Hệ thống có thể tuỳ ý hỗ trợ nhiều thực thể mặt đồng hồ, mỗi thực thể có các tuỳ chọn tạo kiểu riêng cho người dùng. Những lựa chọn này sẽ hiển thị trong bộ chọn mặt đồng hồ. Để sử dụng tính năng này, mặt đồng hồ phải bao gồm thẻ meta dữ liệu sau trong tệp kê khai.<meta-data android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED" android:value="true" />
Một số mặt đồng hồ có trạng thái chưa được ghi lại trong
UserStyle
. Để hỗ trợ giải quyết vấn đề này và nhiều thực thể khác, mã thực thể của mặt đồng hồ hiện đã có sẵn quaWatchState.watchFaceInstanceId
.ComplicationData
hiện đang được lưu vào bộ nhớ đệm để cho phép hiển thị các chức năng ngay khi tải. Đôi khi,ComplicationData
được lưu vào bộ nhớ đệm trong hệ thống và đôi khi, yếu tố này được các thư viện mặt đồng hồ chuyển đổi tuần tự. Khi tapAction được chuyển đổi tuần tự và liên kết sẽ bị mất, nếu điều này xảy ra,ComplicationData.tapActionLostDueToSerialization
sẽ trả vềtrue
và mặt đồng hồ sẽ hiển thị chức năng theo cách khác (ví dụ: chuyển sang màu xám hoặc bán trong suốt) để thông báo rằng không thể nhấn vào đó. Hệ thống sẽ gửiComplicationData
đã cập nhật cùng vớitapAction
sớm nhất có thể.Một số
ComplicationData
không nên lưu vào bộ nhớ đệm trong thời gian dài, để hỗ trợ việc này, chúng tôi đã thêm một tính năng khái quát hơnComplicationDataTimeline
. Bạn có thể dùng yếu tố này để cung cấp một trình tựComplicationData
có giới hạn thời gian gửi đến mặt đồng hồ. Trình tự này có thể được lưu vào bộ nhớ đệm và cập nhật tự động. Ví dụ: dự báo thời tiết hôm nay tại nhiều thời điểm hoặc nhiều sự kiện sắp tới trên lịch.ComplicationRequestListener
đã được gia hạn bằng một phương thứconComplicationDataTimeline
mới mà bạn có thể dùng để trả về dữ liệu này.DefaultComplicationDataSourcePolicy
đã được mở rộng để bạn có thể chỉ địnhComplicationType
cho nguồn dữ liệu chính và phụ.Chúng tôi đã hỗ trợ thêm các trình cung cấp chức năng đồng bộ mà chức năng được cập nhật ở tần suất cao hơn bình thường, lên đến một lần/giây khi mặt đồng hồ hiển thị và không có môi trường xung quanh. Lưu ý: các trình cung cấp chức năng đồng bộ có thể hạn chế sử dụng do lo ngại về áp lực bộ nhớ.
Các thay đổi của
PendingIntentTapListener
có thể bị hủy bỏ vì chúng tôi đã khắc phục sự cố liên quan xảy ra (tức là mặt đồng hồ không thể khởi chạy các hoạt động trong 5 giây sau khi nhấn vào nút màn hình chính) trong khung thay thế.
Thay đổi API
ComplicationData.isCached
đã được thay đổi thànhtapActionLostDueToSerialization
để hữu ích hơn khi xác định xem có nên hiển thị khu vực hiển thị chức năng khác nhau để thông báo rằng không thể nhấn vào đó hay không. (I6de2f)- Đã thêm
ComplicationDataTimeline
vàowear-complication-data-source
. Bạn có thể dùng yếu tố này để cung cấp một trình tựComplicationData
có giới hạn thời gian gửi đến mặt đồng hồ. Trình tự này có thể được lưu vào bộ nhớ đệm và cập nhật tự động. Ví dụ: dự báo thời tiết hôm nay tại nhiều thời điểm hoặc nhiều sự kiện sắp tới trên lịch.ComplicationRequestListener
đã được gia hạn bằng một phương thứconComplicationDataTimeline
mới mà bạn có thể dùng để trả về dữ liệu này. Có một trình bao bọc Kotlin mớiSuspendingTimelineComplicationDataSourceService
để tạm ngưng các dịch vụ nguồn dữ liệu. (Idecdc) - Thêm
PendingIntentTapListener
vàWatchFaceControlClient.getPendingIntentForTouchEvent
. Điều này có thể giúp mặt đồng hồ cần khởi chạy ý định để phản hồi các lượt nhấn nhằm khắc phục sự cố trong đó khung chặn chạy hoạt động mới trong 5 giây sau khi nhấn vào nút màn hình chính. (I98074) - Giới thiệu bộ nhớ đệm
ComplicationData
cho mỗi mặt đồng hồ. Mục đích bộ nhớ đệm này là cho phép mặt đồng hồ hiển thị các giá trị dữ liệu chức năng đã biết gần đây nhất khi tải cho đến khi hệ thống có cơ hội cập nhật các giá trị đó. Có một phương thức API mớiWatchFaceControlClient.hasComplicationCache
dành cho các OEM (Nhà sản xuất thiết bị gốc). Điều này có thể ảnh hưởng đến chiến lược của hệ thống để gửi các chức năng phức tạp đến mặt đồng hồ. Ngoài ra,ComplicationData
có một thuộc tínhisCached
và bạn nên hiển thị các chức năng đã lưu vào bộ nhớ đệm theo cách khác vìtapAction
không thể lưu vào bộ nhớ đệm và sẽnull
trong một chức năng đã lưu vào bộ nhớ đệm. (I404b0) - Mã bản sao của mặt đồng hồ hiện đã có trong
WatchState.watchFaceInstanceId
. Hầu hết các mặt đồng hồ sẽ không cần sử dụng mã này. Tuy nhiên, nếu trạng thái mặt đồng hồ không được lưu trữ trong Giản đồ thì đây là khoá nên dùng để xác định thực thể mặt đồng hồ. Để hỗ trợ yếu tố này, giờ đây, bạn có thể cung cấp mã khi gọiWatchFaceControlClient.createHeadlessWatchFaceClient
. (I1ff98) - Mở rộng
DefaultComplicationDataSourcePolicy
với khả năng đặtComplicationTypes
mặc định cho trình cung cấp chính, phụ và trình cung cấp hệ thống dự phòng.ComplicationSlot.defaultDataSourceType
hiện không dùng nữa. (If0ce3) ComplicationSlot.configExtras
hiện có thể thay đổi và cập nhật trước khi gọiEditorSession.openComplicationDataSourceChooser()
. (I6f852)- Thêm
WatchFace.setComplicationDeniedDialogIntent
vàsetComplicationRationaleDialogIntent
. Các ý định này được triển khai để hiển thị hộp thoại lý do trước khi yêu cầu quyền chức năng và một hộp thoại khác giải thích rằng người dùng cần có quyền chức năng khi chỉnh sửa chức năng nhưng quyền lại bị từ chối (trình chọn nhà cung cấp sẽ không mở được nên cần có hộp thoại). (I3a29c) - Hiện tại, bạn có thể định nghĩa
UserStyleSchema
vàComplicationSlots
ở định dạng XML. Việc này giúp đơn giản hoá cấu trúc mặt đồng hồ và giúpWatchFaceMetadataClient
truy vấn nhanh hơn vì không cần liên kết với dịch vụ để lấy siêu dữ liệu. (I85bfa) - Thêm
InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent
để ứng dụng có thể xác định xem mặt đồng hồ có hỗ trợgetPendingIntentForTouchEvent
hay không. (I0b917) WatchFaceMetadataClient
vàListenableWatchFaceMetadataClient
không còn thử nghiệm nữa. Bạn có thể sử dụng các yếu tố này để lấy siêu dữ liệu mặt đồng hồ một cách hiệu quả (khi có thể) mà không cần mở một trình liên kết với mặt đồng hồ. (Ibb827)- Hỗ trợ thêm các nhà cung cấp chức năng đồng bộ hoá khi chức năng được cập nhật ở tần suất cao hơn bình thường, lên đến một lần mỗi giây khi mặt đồng hồ hiển thị và không có môi trường xung quanh. Để sử dụng thẻ này, trình cung cấp phải đưa thẻ siêu dữ liệu
androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS
mới vào tệp kê khai và ghi đèonSynchronousComplicationRequest
. Tuỳ thuộc vào bản chất của nguồn dữ liệu, bạn cũng có thể cần ghi đèonStartSynchronousComplicationRequests
vàonStopInteractiveComplicationRequests
để nhận được thông báo khi chức năng này chuyển sang và thoát khỏi chế độ tương tác. (I8fe9d)
Phiên bản 1.0
Phiên bản 1.0.1
Ngày 9 tháng 2 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.0.1
. Phiên bản 1.0.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi tapAction
PhotoImageComplicationData
không được xử lý chính xác (I1cc30)
Phiên bản 1.0.0
Ngày 1 tháng 12 năm 2021
Phát hành androidx.wear.watchface:watchface-*:1.0.0
. Phiên bản 1.0.0 bao gồm các thay đổi sau.
Các tính năng chính của phiên bản 1.0.0
Gói androidx.wear.watchface
là thư viện đề xuất mới để phát triển mặt đồng hồ WearOS. Thư viện này có một số tính năng mới so với Thư viện hỗ trợ cũ dành cho thiết bị đeo.
- Thư viện hỗ trợ trực tiếp việc tạo kiểu cho người dùng, ví dụ: thay đổi bảng màu, kiểu kim đồng hồ, kiểu dấu giờ, v.v. (xem
androidx.wear.watchface.style
). Giờ đây, việc phát triển trình chỉnh sửa trên mặt đồng hồ bằng cách sử dụng androidx.wear.watchface.editor sẽ dễ dàng hơn và bạn có thể chỉnh sửa mặt đồng hồ từ ứng dụng đồng hành hệ thống mà không cần viết thêm mã. - Các phương pháp hay nhất đã được áp dụng. Thư viện này sẽ tự động tạo nhãn nội dung trình đọc màn hình cho chức năng (bạn cũng có thể thêm nhãn của riêng mình) và tốc độ khung hình tự động giảm khi pin yếu và không sạc để cải thiện thời lượng pin.
- Cần ít mã hơn để phát triển mặt đồng hồ, đặc biệt đối với những chức năng có nhiều mẫu soạn sẵn đã được chuyển vào thư viện.
Sửa lỗi
- Sửa
EditorSession.userStyle.compareAndSet
(I6f676) - Khắc phục lỗi chậm trễ rất ngắn đối với mặt đồng hồ (Iffb97)
- Điều phối
InteractiveWatchFaceImpl.onDestroy
trên chuỗi giao diện người dùng (I83340) - Khắc phục một số sự cố với broadcast receiver (I7d25f)
Phiên bản 1.0.0-rc01
Ngày 3 tháng 11 năm 2021
Phát hành androidx.wear.watchface:watchface-*:1.0.0-rc01
. Phiên bản 1.0.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
Khắc phục sự cố dump() (do adb shell dumpsys gọi) bị hỏng do di chuyển luồng. (087cf9e)
Đảm bảo thứ tự đúng của writeDirectBootPrefs. Chúng ta muốn writeDirectBootPrefs luôn chạy sau initStyleAndComosss, nếu không thì có nguy cơ trì hoãn sự khởi tạo chuỗi giao diện người dùng.(37650ac)
Đảm bảo Renderer.onDestroy được gọi. Trong trường hợp trình kết xuất đã được tạo nhưng sự khởi tạo WF chưa hoàn tất và Engine.onDestroy được gọi, chúng ta cần gọi Renderer.onDestroy. (f9952dc)
Tối ưu hoá/khắc phục sự cố isBatteryLowAndNotCharging. Bản vá này di chuyển cách thiết lập ban đầu của isBatteryLowAndNotCharging trước đó, nghĩa là bạn có thể thực hiện song song với createWatchFace. Ngoài ra, bây giờ chúng ta còn nghe ACTION_POWER_DISCONNECTED. (ddffd80
InteractiveWatchFaceClientImpl.isConnectionAlive đặt thành false sau khi đóng (ab9774e)
Phiên bản 1.0.0-beta01
Ngày 27 tháng 10 năm 2021
Phát hành androidx.wear.watchface:watchface-*:1.0.0-beta01
. Phiên bản 1.0.0-beta01 bao gồm các thay đổi sau.
Phiên bản 1.0.0-alpha24
Ngày 13 tháng 10 năm 2021
Phát hành androidx.wear.watchface:watchface-*:1.0.0-alpha24
. Phiên bản 1.0.0-beta24 bao gồm các thay đổi sau.
Thay đổi API
- Các lớp trong gói
androidx.wear.watchface.complications
đã được chuyển sang dự ánwear:watchface:watchface-complications
mới. Lưu ý rằng bạn không thể đưa thư viện này cũng như bất kỳ phiên bản alpha trước đó nào củawear:watchface:watchface-complications-data
vào vì bạn sẽ gặp lỗi về các lớp trùng lặp. (I97195) - Renderer.dump đổi tên thành Renderer.onDump và được chú thích bằng @UiThread. (I44845)
InteractiveWatchFaceClient.addWatchFaceReadyListener
đã đổi tên thànhaddOnWatchFaceReadyListener
vàremoveWatchFaceReadyListener
đã đổi tên thànhremoveOnWatchFaceReadyListener
. (I48fea)- EditorSession
getComplicationsPreviewData
vàgetComplicationsDataSourceInfo
không còn tạm ngưng hàm nữa, thay vào đó đây là các thuộc tínhStateFlow<>
có giá trị ban đầu rỗng. Trong ListenableEditorSession,getListenableComplicationPreviewData
vàgetListenableComplicationsProviderInfo
đã bị xoá, thay vào đó là các đối tượngStateFlow<>
mới từ lớp cơ sở. Nếu bạn cần nghe các thay đổi trong mã JavaScript, hãy xem xét sử dụngandroidx.lifecycle.FlowLiveDataConversions.asLiveData
để chuyển đổi thànhLiveData<>
. (Ic5483)
Phiên bản 1.0.0-alpha23
Ngày 29 tháng 9 năm 2021
Phát hành androidx.wear.watchface:watchface-*:1.0.0-alpha23
. Phiên bản 1.0.0-alpha23 bao gồm các thay đổi sau.
Tính năng mới
Thư viện mặt đồng hồ giờ đây là một nhóm thư viện, do đó, các thư viện đã di chuyển và bạn cần cập nhật các mục nhập gradle như sau:
Cũ | Mới |
---|---|
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 |
Thay đổi API
- Di chuyển các thư viện
androidx.wear
và mặt đồng hồ riêng sang nhóm thư việnandroidx.wear.watchface
. (b25f3c0) - Thêm EditorRequest.canWatchFaceSupportHeadlessEditing để cho ứng dụng biết trình chỉnh sửa mặt đồng hồ có hỗ trợ tính năng chỉnh sửa không có giao diện người dùng hay không. Xin lưu ý rằng sẽ có một số thông tin âm tính giả về vấn đề này vì sự hỗ trợ đã được thêm vào asop/1756809. Tuy nhiên, yếu tố sẽ trả về giá trị chính xác cho tất cả mặt đồng hồ trong tương lai. (ca55590)
- Trình kết xuất hiện có một phương thức dump() có thể được ghi đè để thêm dữ liệu tuỳ chỉnh vào thông tin do WatchFaceService dịch vụ hoạt động ABD shell dumpsys tạo. (95235f9)
- InteractiveWatchFaceClient.addWatchFaceReadyListener hiện chỉ định trình thực thi trước tiên. (563ac2f)
- StateFlowCompatHelper đã bị xoá. Bạn nên sử dụng asLiveData (androidx.lifecycle.asLiveData). (bd35d3)
- CurrentUserStyleRepository.userStyle sẽ không thể thay đổi nữa. (I44889)
- Đổi tên WatchFaceReadyListener thành OnWatchFaceReadyListener. (Ic12a9)
Sửa lỗi
- InteractiveInstanceManager.deleteInstance để gọi onDestroy. Điều này là cần thiết để đảm bảo InteractiveWatchFaceImpl được thu thập rác.(fce4af8, b/199485839)