Wear Watchface
Lưu ý: Bắt buộc phải sử dụng Định dạng mặt đồng hồ để cài đặt mặt đồng hồ trên các thiết bị cài đặt sẵn Wear OS 5 kể từ ngày 10 tháng 7 năm 2024 và cho tất cả mặt đồng hồ mới được phát hành trên Google Play kể từ ngày 27 tháng 1 năm 2025.
Tìm hiểu thêm về những thay đổi mà người dùng sẽ thấy trong bài viết này trên Trung tâm trợ giúp.
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 18 tháng 9 năm 2024 | 1.2.1 | - | - | 1.3.0-alpha04 |
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 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.2.1" // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation "androidx.wear.watchface:watchface-editor:1.2.1" // 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.2.1" }
Kotlin
dependencies { // Use to implement wear watchfaces implementation("androidx.wear.watchface:watchface:1.2.1") // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation("androidx.wear.watchface:watchface-editor:1.2.1") // 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.2.1" }
Để 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.3
Phiên bản 1.3.0-alpha04
Ngày 18 tháng 9 năm 2024
Phát hành androidx.wear.watchface:watchface-*:1.3.0-alpha04
. Phiên bản 1.3.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
- Thêm tính năng hỗ trợ tải lười biểu tượng trong
UserStyleSettings
vàUserStyleOptions
. Đây là một lợi thế về hiệu suất khi tải mặt đồng hồ. (Iaf43d) - Thêm một tuỳ chọn để chụp ảnh chụp màn hình mới mỗi khi cấu hình hệ thống thay đổi (ví dụ: nếu ngôn ngữ thay đổi) thông qua
Watchface.setUpdateScreenshotOnConfigurationChange
mới. Theo mặc định, chế độ cài đặt này sẽ tắt. (I765a1)
Sửa lỗi
- Xoá phần trình bày quyền truy cập vào API nền tảng mới theo cách thủ công vì việc này diễn ra tự động thông qua tính năng tạo mô hình API khi sử dụng R8 với AGP 7.3 trở lên (ví dụ: R8 phiên bản 3.3) và cho tất cả các bản dựng khi sử dụng AGP 8.1 trở lên (ví dụ: D8 phiên bản 8.1). Những ứng dụng không sử dụng AGP nên cập nhật lên D8 phiên bản 8.1 trở lên. Hãy xem bài viết này để biết thêm thông tin. (Ia60e0, b/345472586)
Phiên bản 1.3.0-alpha03
Ngày 17 tháng 4 năm 2024
Phát hành androidx.wear.watchface:watchface-*:1.3.0-alpha03
. Phiên bản 1.3.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
- Chúng tôi đã thêm
EditorSession#setOverrideComplications
để tạm thời đặtComplicationData
của thực thể mặt đồng hồ cơ bản trong khi chỉnh sửa. Nếu các vùng chức năng thay đổi không thường xuyên, thì cách này sẽ hiệu quả hơn so với việc truyền các chế độ ghi đè thông quaEditorSession#renderWatchFaceToBitmap
. (I19384)
Sửa lỗi
- Trước đây,
selectComplicationDataForInstant
gọitoApiComplicationData
cho mọi tiến trình, nghĩa là kiểm thử bằng cách so sánh giá trị tham chiếu === tiếp theo sẽ luôn không thành công. Điều này có nghĩa là các chức năng được tải lại mỗi khung hình, dẫn đến tình trạng hao pin. (717406)
Phiên bản 1.3.0-alpha02
Ngày 3 tháng 4 năm 2024
Phát hành androidx.wear.watchface:watchface-*:1.3.0-alpha02
. Phiên bản 1.3.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
- Bây giờ, chúng ta sử dụng đẳng thức tham chiếu để so sánh best và
selectedData
vì toán tử bằng tốn kém. (446b00)
Thay đổi về API
- Chúng tôi đã thêm một API động không có phương án dự phòng cho
GoalProgressComplicationData
. (c33264)
Phiên bản 1.3.0-alpha01
Ngày 7 tháng 2 năm 2024
Phát hành androidx.wear.watchface:watchface-*:1.3.0-alpha01
. Phiên bản 1.3.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
WatchFaceServices
có thể được khởi chạy đồng thời và do đó, chúng phải không có trạng thái. Để hỗ trợ việc này, chúng tôi đã thêmStatefulWatchFaceService
, trong đó một phần bổ sung do người dùng xác định docreateExtra()
tạo được truyền vào tất cả các lệnh ghi đè được gọi trong quá trình khởi chạy.GlesRenderer2
hiện có một hàm khởi tạo nạp chồng cho phép bạn chỉ định danh sách các thuộc tính để thử lần lượt vớieglChooseConfig
.
Thay đổi về API
StatefulWatchFaceService
hiện hỗ trợ ghi đègetComplicationSlotInflationFactory
, trong đó phần bổ sung do người dùng xác định docreateExtra()
tạo sẽ được truyền. (I82d9f)- Một số mặt đồng hồ cần chia sẻ dữ liệu phụ được tạo trong
createUserStyleSchema
với các phương thức khởi chạy khác. Vì không có giải pháp thay thế nào tốt hơn, nên các nhà phát triển thường tạoWatchFaceServices
có trạng thái. Điều này rất nguy hiểm vì có thể tạo nhiều thực thể đồng thời, dẫn đến lỗi. Để giải quyết vấn đề này, chúng tôi đã giới thiệuStatefulWatchFaceService
vàStatefulWatchFaceRuntimeService
, trong đócreateExtra()
tạo một loại do người dùng xác định và truyền loại này dưới dạng tham số đến nhiều phương thức tạo. (If8a99) - Chúng tôi đã thêm
getUserStyleFlavors
vàoInteractiveWatchFaceClient
, chủ yếu dành cho các nhà sản xuất thiết bị gốc (OEM). (I0f5d8) GlesRenderer2
hiện có một hàm khởi tạo nạp chồng cho phép bạn chỉ định danh sách các thuộc tính để thử lần lượt vớieglChooseConfig
. Ví dụ: điều này cho phép bạn thử một cấu hình có tính năng khử răng cưa trước tiên và quay lại một cấu hình không có tính năng này nếu cần. (I1ba74)- Kể từ Android U, tính năng hỗ trợ
SystemDataSources.DATA_SOURCE_HEART_RATE
sẽ được thêm vào WearOS. Chức năng này chỉ đảm bảo hỗ trợ các chức năngSHORT_TEXT
, nhưng bạn cũng nên chấp nhậnSMALL_IMAGE
choComplicationSlot
vì nhà sản xuất thiết bị gốc (OEM) có thể chọn phân phát lối tắt đến ứng dụng sức khoẻ thay vì giá trị trực tiếp. (I34223) - Chúng tôi đã thêm
METADATA_KEY_CONFIG_RESTORE_SUPPORTED
từ Android U trở lên, kiểm soát những gì xảy ra khi hệ thống được khôi phục từ bản sao lưu cho nguồn dữ liệu chức năng bằngMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
. Theo mặc định, hệ thống giả định rằng dịch vụ nguồn dữ liệu chức năng hỗ trợ sao lưu mọi dữ liệu cấu hình, nhưng nếu không thì hệ thống có thể thêm chế độ cài đặt siêu dữ liệuMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
thành false (sai). Thao tác này sẽ đánh dấu ô chức năng là chưa được định cấu hình. (I6c505)
Phiên bản 1.2
Phiên bản 1.2.1
Ngày 24 tháng 1 năm 2024
Phát hành androidx.wear.watchface:watchface-*:1.2.1
. Phiên bản 1.2.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố trên Samsung Galaxy Watch 4, 5 và 6. (43f0b0)
Phiên bản 1.2.0
Ngày 29 tháng 11 năm 2023
Phát hành androidx.wear.watchface:watchface-*:1.2.0
. Phiên bản 1.2.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.1.0
- Chúng tôi đã thêm tính năng hỗ trợ cho một số loại chức năng mới có thể sử dụng trên Android T:
GoalProgressComplicationData
tương tự nhưRangedValueComplicationData
, ngoại trừ việc hướng tới mục tiêu có giá trị ngầm ẩn tối thiểu là 0 và giá trị được phép lớn hơntargetValue
.WeightedElementsComplicationData
bao gồm một loạt các Phần tử (các cặp trọng số và màu sắc) cùng với văn bản/tiêu đề/hình ảnh không bắt buộc. Chúng có thể được thể hiện dưới dạng biểu đồ hình tròn, trong đó màu sắc cần phải có ý nghĩa dựa trên ngữ cảnh vì thường không có chỗ trong chức năng để hiển thị nhãn.
- Chúng tôi thêm tính năng hỗ trợ không bắt buộc cho
ColorRanges
vàoRangedValueComplicationData
. Thông thường, các chức năng sẽ được kết xuất bằng màu sắc theo lựa chọn của mặt đồng hồ, nhưng đôi khiComplicationDataSource
là vị trí tốt nhất để đặt màu sắc, ví dụ như khi chúng có ý nghĩa ngữ nghĩa cụ thể. Chẳng hạn như từ màu đỏ sang màu xanh dương để xác định nhiệt độ. - Giờ đây, hầu hết các loại
ComplicationData
đều hỗ trợSmallImages
. - Chúng tôi thêm
ComplicationDisplayPolicy
trong đóDO_NOT_SHOW_WHEN_DEVICE_LOCKED
hướng dẫn mặt đồng hồ tương thích không hiển thị chức năng này khi thiết bị bị khoá. - Trên Android T, OEM (Nhà sản xuất thiết bị gốc) sẽ có thể xác định xem một yêu cầu chức năng có xuất phát từ mặt đồng hồ trong danh sách do siêu dữ liệu
android.support.wearable.complications.SAFE_WATCH_FACES
xác định ở tệp kê khai của nhà cung cấp bằngComplicationRequest#isForSafeWatchFace
hay không. Nhà cung cấp này sẽ cần có quyềncom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
để nhận được mọi dữ liệu khác ngoài TargetWatchFaceSafety.UNKNOWN`. UserStyleFlavors
đã trở thành tính năng không thử nghiệm.
Phiên bản 1.2.0-rc01
Ngày 18 tháng 10 năm 2023
Phát hành androidx.wear.watchface:watchface-*:1.2.0-rc01
. Phiên bản 1.2.0-rc01 bao gồm các thay đổi sau.
Phiên bản 1.2.0-beta02
Ngày 6 tháng 9 năm 2023
Phát hành androidx.wear.watchface:watchface-*:1.2.0-beta02
. Phiên bản 1.2.0-beta02 bao gồm các thay đổi sau.
Tính năng mới
SuspendingComplicationDataSourceService#onDestroy
hiện đang mở. Xin lưu ý rằng tính năng hỗ trợ chức năng thời tiết mặc định của hệ thống đã bị xoá.
Thay đổi về API
- Huỷ bỏ chế độ "Hiển thị nguồn dữ liệu mới cho các chức năng thời tiết". (I6f335)
Phiên bản 1.2.0-beta01
Ngày 23 tháng 8 năm 2023
Phát hành androidx.wear.watchface:watchface-*:1.2.0-beta01
. Phiên bản 1.2.0-beta01 bao gồm các thay đổi sau.
Tính năng mới
- Kể từ Android T, WearOS sẽ hỗ trợ chức năng thời tiết mặc định của hệ thống.
Thay đổi về API
- Thêm tính năng dự phòng hệ thống mặc định về thời tiết cho các chức năng. (Ia0994)
- Bản vá này thêm
WatchFaceRuntimeService
vàWatchFaceControlClient.createWatchFaceRuntimeControlClient
cùng với trình bao bọc guava. Các gói này hỗ trợ thêm cho thời gian chạy mặt đồng hồ, đây là một loại mặt đồng hồ đặc biệt tải định nghĩa của mặt đồng hồ từ một gói khác. Hiện tại, WearOS chỉ hỗ trợ thời gian chạy cho Định dạng mặt đồng hồ Android. (I2799f) - Bản vá này là phần tiếp theo của aosp/2636578, trong đó chúng ta đổi tên các định nghĩa int để mọi mã phụ thuộc vào
WatchFaceType
,CanvasType
,TapType
hoặcComplicationsSlotBoundsType
không cần thay đổi. (I4098b) - Cập nhật các tệp API để chú thích việc tạm ngưng khả năng tương thích. (I8e87a, b/287516207)
- Bản vá này hiển thị các hằng số
WatchFaceType
trongWatchFaceTypes
, hằng sốCanvasType
trongCanvasTypes
, hằng sốTapType
trongTapTypes
và hằng sốComplicationsSlotBoundsType
trongComplicationsSlotBoundsType
. (I3b85a, b/288750666) WatchFace.OverlayStyle
có mức sử dụng rất thấp và không được các nhà sản xuất thiết bị gốc (OEM) hỗ trợ tốt. Vì vậy, chúng tôi sẽ ngừng sử dụngWatchFace.OverlayStyle
và dự định xoá tính năng này sau này. (I7344a)
Phiên bản 1.2.0-alpha09
Ngày 21 tháng 6 năm 2023
Phát hành androidx.wear.watchface:watchface-*:1.2.0-alpha09
. Phiên bản 1.2.0-alpha09 bao gồm các thay đổi sau.
Tính năng mới
RangedValueComplicationData.Builder
hiện chấp nhậnDynamicFloat
vàDynamicComplicationText
mới có sẵn dưới dạng lớp con củaComplicationText
, cả hai đều có thể sử dụng biểu thức động cũng như các liên kết nền tảng được cập nhật ở tốc độ 1hz trên các thiết bị Wear 4 được hỗ trợ.
Thay đổi về API
- Thêm các loại động cho quãng đường hằng ngày, lượng calo hằng ngày và số tầng hằng ngày. Các khoá cho nguồn thông tin về trạng thái của nền tảng hiện nằm trong
PlatformHealthSources.Keys
(Ib7637) - Triển khai
PlatformDataProvider
để cung cấp nhịp tim và số bước hằng ngày. Xoá giao diệnSensorGateway
khỏi API công khai. (I55b84) - Đổi tên
StateEntryValue
thànhDynamicDataValue
và cập nhật các API trạng thái để sử dụngDynamicDataKey
. (If1c01) - Thêm
AppDataKey
để truy cập trạng thái đẩy ứng dụng; ThêmPlatformDataKey
để truy cập dữ liệu nền tảng; Thêm tính năng hỗ trợ không gian tên trongStateStore
. (I7985e) - Các phương thức
enable
/disablePlatformSource
đã bị xoá khỏiDynamicTypeEvaluator
. Phương thức gọi phải chịu trách nhiệm về nội dung cập nhật. (I78c6d) - Cho phép giới hạn kích thước của các loại dữ liệu liên kết. (Ie2966)
Phiên bản 1.2.0-alpha08
Ngày 19 tháng 4 năm 2023
Phát hành androidx.wear.watchface:watchface-*:1.2.0-alpha08
. Phiên bản 1.2.0-alpha08 bao gồm các thay đổi sau.
Tính năng mới
- Trên Android T, các nhà cung cấp chức năng có
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
đặc quyền có thể đăng ký siêu dữ liệuandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
ghi đèandroid.support.wearable.complications.SUPPORTED_TYPES
cho mặt đồng hồ an toàn. Điều này có nghĩa là nhà cung cấp chức năng có thể chọn phân phát các loại chức năng khác nhau cho mặt đồng hồ đáng tin cậy và không đáng tin cậy.
Thay đổi về API
- Truyền lớp
@Deprecated
đến thuộc tính (I882d1, b/271441831) - Thay đổi tên tham số giá trị cho
Enum.valueOf
(Ia9b89) - Nhiều ngoại lệ được gửi từ enum valueOf (I818fe)
- Chúng tôi đã xoá
renderWatchFaceToSurface
để chuyển sangcreateRemoteWatchFaceView
được tạo trên SurfaceControlViewHost và cho phép phương thức gọi nhúng một thành phần hiển thị từ mặt đồng hồ. Thành phần hiển thị này được kết xuất khi ứng dụng gọiRemoteWatchFaceViewHost#renderWatchFace
. (Ib311d) - Chúng tôi thêm
renderWatchFaceToSurface
vàoInteractiveWatchFaceClient
,HeadlessWatchFaceClient
vàEditorSession
. Thông thường, cách này sẽ hiệu quả hơn so với việc kết xuất sang bitmap. (Ieacad) ObservableStateStore
đổi tên thànhStateStore
. (Ieb0e2)- Thêm
DynamicTypeEvaluator.Builder
thay vì đối số hàm khởi tạo để cho phép thêm các đối số không bắt buộc, bao gồm cảObservableStateStore
hiện mặc định là một cửa hàng trống. (I6f832) - Sắp xếp lại thứ tự các tham số trong
DynamicTypeEvaluator
. (Ic1ba4) - Trình thực thi đã được thêm vào các phương thức
DynamicTypeEvaluator.bind
. (I346ab) - Chúng tôi đã thêm phương thức
startEvaluation
vàoBoundDynamicType
để kích hoạt quá trình đánh giá sau khi liên kết loại động. (I19908) - Nhà cung cấp chức năng có
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
đặc quyền có thể đăng ký siêu dữ liệuandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
ghi đèandroid.support.wearable.complications.SUPPORTED_TYPES
cho mặt đồng hồ an toàn. (Id1c73) - Chúng tôi đã đổi tên
CustomValueUserStyleSettings2
thànhLargeCustomValueUserStyleSettings
. (Ic17ac)
Sửa lỗi
- Xoá
DynamicTypeValueReceiver#onPreUpdate
. (I2dc35)
Phiên bản 1.2.0-alpha07
Ngày 22 tháng 2 năm 2023
Phát hành androidx.wear.watchface:watchface-*:1.2.0-alpha07
. Phiên bản 1.2.0-alpha07 bao gồm các thay đổi sau.
Tính năng mới
Trên Android T, OEM (Nhà sản xuất thiết bị gốc) sẽ có thể xác định xem một yêu cầu chức năng có xuất phát từ mặt đồng hồ trong danh sách do siêu dữ liệu
android.support.wearable.complications.SAFE_WATCH_FACES
xác định ở tệp kê khai của nhà cung cấp bằngComplicationRequest#isForSafeWatchFace
hay không. Nhà cung cấp này sẽ cần có quyềncom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
để nhận được mọi dữ liệu khác ngoàiTargetWatchFaceSafety.UNKNOWN
.Cũng trên Android T,
CustomValueUserStyleSetting2
có thể sử dụng với dung lượng lên tới 12,5 kb. Hạn mức trước đây choCustomValueUserStyleSetting
là 1 kb. Mặc dù giới hạn kích thước tăng lên, nhưng các nhà phát triển mặt đồng hồ vẫn nên duy trì dữ liệu ở quy mô nhỏ vì chế độ cài đặt được gửi qua Bluetooth trong quá trình chỉnh sửa và băng thông Bluetooth bị hạn chế.
Thay đổi về API
- Chúng tôi thêm tham số không bắt buộc
eglContextAttribList
vàoGlesRenderer
vàGlesRenderer2
, qua đó cho phép bạn đặtEGL14.EGL_CONTEXT_CLIENT_VERSION
đã truyền vàoEGL14.eglCreateContext
. (I2a83e) - Chúng tôi di chuyển các thư viện mặt đồng hồ sang
androidx.core.util.Consumer
thay vìjava.util.function.Consumer
. (I273f5) - Nhiều ngoại lệ được gửi từ trình truy cập thuộc tính KT (Iff9d9)
- Chúng tôi thêm
InteractiveWatchFaceClient.isComplicationDisplayPolicySupported
để ứng dụng có thể xác định xem có phải mô phỏng hoạt động hỗ trợ thay cho mặt đồng hồ cũ hay không. (I24c89) - Chúng tôi quyết định
isForSafeWatchFace
phải là mộtIntDef
gồm ba trạng thái. (Ief2f7) - Đối với Android T, chúng tôi ra mắt
ComplicationRequest.isForSafeWatchFace
để OEM sử dụng và phiên bản này yêu cầucom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
. Đối với các nguồn dữ liệu trong hình ảnh hệ thống, yêu cầu này sẽ trả về giá trị true nếu mặt đồng hồ yêu cầu nằm trong danh sách các mặt đồng hồ an toàn do nguồn dữ liệu nêu trong tệp kê khai. (I0cbb6) - Đối với Android T, chúng tôi thêm
CustomValueUserStyleSetting2
có thể chứa tối đa 12,5 kb. Hạn mức trước đây choCustomValueUserStyleSetting
là 1 kb. (I0b100)
Phiên bản 1.2.0-alpha06
Ngày 25 tháng 1 năm 2023
Phát hành androidx.wear.watchface:watchface-*:1.2.0-alpha06
. Phiên bản 1.2.0-alpha06 bao gồm các thay đổi sau.
Tính năng mới
- Chúng tôi đang cố gắng thực hiện công việc của mình để thêm tính năng hỗ trợ cho các liên kết nền tảng chức năng. Tính năng này chưa có sẵn, nhưng bạn hãy chú ý theo dõi nhé!
- Chúng tôi thêm tính năng hỗ trợ XML
ComplicationSlot
cho các loại chức năng mới, GOAL_PROGRESS và WEIGHTED_ELEMENTS.
Sửa lỗi
- Khắc phục lỗi rò rỉ trong đó trình chỉnh sửa mặt đồng hồ không được phát hành đúng cách trên các thiết bị Samsung. (3b5987)
- Khắc phục lỗi khi các chức năng đôi khi không hiển thị chính xác khi chuyển đổi giữa mặt đồng hồ với nhiều mục yêu thích. (b38ece)
- Khắc phục lỗi chuyển đổi tuần tự bằng perOptionScreenReaderNames dẫn đến sự cố với mặt đồng hồ. (e9f466)
Phiên bản 1.2.0-alpha05
Ngày 7 tháng 12 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.2.0-alpha05
. Phiên bản 1.2.0-alpha05 bao gồm các thay đổi sau.
Tính năng mới
Cách đây không lâu, chúng tôi đã thêm chế độ hỗ trợ cho
UserStyleSettings
phân cấp. Giờ đây, từ Android T, bạn có thể có nhiềuComplicationSlotsUserStyleSetting
trong một hệ phân cấp. Sẽ chỉ có mộtComplicationSlotsUserStyleSetting
hoạt động, tuỳ theo các lựa chọn của người dùng về kiểu.Chúng tôi đang cải thiện chế độ hỗ trợ trình đọc màn hình cho
ListOption
vàComplicationSlotsOption
bằng cách thêm trườngscreenReaderName
. Lưu ý: trước Android T, trình chỉnh sửa đồng hành sẽ bỏ qua trường này.
Các thay đổi về API
- Chúng tôi đã thêm một trường
screenReaderName
mới (không bắt buộc) vàoListOption
vàComplicationSlotsOption
để trình chỉnh sửa có thể sử dụng. Trên các thiết bị chạy hệ điều hành trước Android T, trình chỉnh sửa đồng hành sẽ bỏ qua trường này. (I75326) - Từ Android T, nhiều
ComplicationSlotsUserStyleSettings
hiện được hỗ trợ trong hệ phân cấp kiểu, miễn là chỉ có một trong số đó được hoạt động tại một thời điểm. Chúng tôi đã thêm một hàm tiện íchfindComplicationSlotsOptionForUserStyle
vàoUserStyleSchema
để giúp tìmComplicationSlotsOption
đang hoạt động (nếu có). (Ic2b06) - Kéo
RangedValuesTypes
vào đối tượng đồng hành củaRangedValueComplicationData
và đổi tên thànhTYPE_UNDEFINED
, thêmTYPE_RATING
và mộtTYPE_PERCENTAGE
mới. (I55d02) - Chúng tôi đã đổi tên
DynamicFloat
thử nghiệm thànhFloatExpression
và đánh dấu là@hide
. (Idf4f1) - Thêm chú thích
@JvmDefaultWithCompatibility
(I8f206)
Phiên bản 1.2.0-alpha04
Ngày 9 tháng 11 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.2.0-alpha04
. Phiên bản 1.2.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
- Đối với Android T, chúng tôi thêm tính năng hỗ trợ cho 2 kiểu chức năng mới là
GoalProgressComplicationData
vàWeightedElementsComplicationData
. GoalProgressComplicationData
tương tự nhưRangedValueComplicationData
nhưng giá trị của nó được phép vượt quá mục tiêu (đối vớiRangedValueComplicationData
, giá trị được giới hạn trong phạm vi [tối thiểu .. tối đa]) có ảnh hưởng đến thiết kế hình ảnh có thể không phù hợp với mọi mặt đồng hồ.GoalProgressComplicationData
thêm tính năng hỗ trợ cho biểu đồ hình tròn và bảng chi tiết tương tự về dữ liệu đơn giản.- Chúng tôi thêm tính năng hỗ trợ không bắt buộc cho
ColorRamps
vàoRangedValueComplicationData
. - Đối với Android T, chúng tôi thêm
ComplicationPersistencePolicy
vàsetCachePolicy
vàoComplicationData
. Việc này hiện cho phép nhà cung cấp kiểm soát việc chức năng có tiếp tục hoạt động hay không (tức là có được lưu vào bộ nhớ đệm trước khi khởi động lại hay không). Hầu hết các chức năng sẽ không cần đặt chế độ kiểm soát bộ nhớ đệm, nhưng làm như vậy có thể khắc phục các trường hợp ngách với dữ liệu cũ cho một số chức năng được cập nhật thường xuyên (ví dụ: các chức năng liên quan đến dữ liệu sức khoẻ). Chúng tôi cũng thêmComplicationDisplayPolicy
trong đóDO_NOT_SHOW_WHEN_DEVICE_LOCKED
hướng dẫn mặt đồng hồ tương thích không hiển thị chức năng này khi thiết bị bị khoá. (Ic9574)
Các thay đổi về API
GoalProgressComplicationData
,WeightedElementsComplicationData
vàColorRamp
không còn ở chế độ thử nghiệm nữa. (Ica9e2)ComplicationPersistencePolicy
vàComplicationDisplayPolicy
hiện được đánh dấu đúng cách là API T. (I31d88)- Hàm khởi tạo
ComplicationSlotOverlay
không dùng nữa hiện cóDeprecationLevel.WARNING
cho phép gọi lại qua Java. (Ib308c) - Chúng tôi khắc phục một số vấn đề về khả năng tương thích của Java với
ComplicationRequestListener
,CanvasComplication
,ComplicationTapFilter
vàInteractiveWatchFaceClient
bằng cách chú thích các vấn đề đó bằng@JvmDefaultWithCompatibility
(Id94fc) - Chúng tôi xoá
ProtoLayoutComplicationData
vàListComplicationData
thử nghiệm. Câu chuyện của nhà phát triển về những điều này không rõ ràng, chúng tôi hy vọng sẽ trở lại trong tương lai. (I9df05) - Chúng tôi thêm
ValueType
trở lạiRangedValueComplicationData
.WeightedElementsComplicationData
hiện hỗ trợ màu nền. Chúng tôi xoáDiscreteRangedValueComplicationData
vì chức năng này là một tập hợp con củaWeightedElementsComplicationData
. (I6446c)
Sửa lỗi
- Đưa
isForScreenShot
vào mã bằng và hàm băm. Đảm bảoonRenderParametersChanged
nhận được giá trịisForScreenshot
chính xác (I04a41) - Sửa lỗi rò rỉ
WatchFaceControlService
từ các ứng dụng không có giao diện người dùng. (e90e00)
Phiên bản 1.2.0-alpha03
Ngày 5 tháng 10 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.2.0-alpha03
. Phiên bản 1.2.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
- Không có tính năng mới nào nhưng chúng tôi đã khắc phục một số lỗi của trình chỉnh sửa mặt đồng hồ.
Các thay đổi về API
- Ngừng sử dụng
UserStyleSchema.userStyleSettings
vìrootUserStyleSettings
trở thành API không thử nghiệm (Ie96e3) - Ngừng thử nghiệm
rootUserStyleSettings
(I8d6b3) - Chúng tôi đã đánh dấu
WatchFaceColors
là API thử nghiệm vì nó không được một số hệ thống hỗ trợ (I6d75d) - Hiển thị
DisconnectReasons
trong API công khai để API này hoạt động vớiIntDef
. (I791f8)
Sửa lỗi
- Đóng mọi trình chỉnh sửa đang mở trên đồng hồ nếu
SysUI
ngừng hoạt động. NếuSysUI
ngừng hoạt động và trình chỉnh sửa mặt đồng hồ không đóng, mặt đồng hồ có thể ở trạng thái không nhất quán vì hệ thống dựa vàoSysUI
để duy trì bất kỳ thay đổi nào về kiểu người dùng.(ba762a - Khắc phục sự cố rò rỉ bộ nhớ trong
ComplicationDataSourceInfoRetriever
, trong đó phần tiếp nối của coroutine Kotlin đang đóng vai trò là một gốc gc và giữ lại hoạt động của trình chỉnh sửa.(33ee06)
Phiên bản 1.2.0-alpha02
Ngày 21 tháng 9 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.2.0-alpha02
. Phiên bản 1.2.0-alpha02 bao gồm các thay đổi sau.
Tính năng mới
Một số mặt đồng hồ có cấu hình bên ngoài
UserStyle
, có ảnh hưởng đến phần hình ảnh (ví dụ: chọn ảnh nền). Chúng tôi đã thêmRenderer.sendPreviewImageNeedsUpdateRequest
để cho phép mặt đồng hồ yêu cầu hình ảnh xem trước đã cập nhật. Xin lưu ý rằng bạn phải có một hệ thống đã cập nhật tương ứng thì mới dùng được.Chúng tôi cũng thêm một API cho các mặt đồng hồ để giúp hệ thống thấy được màu của mặt đồng hồ đó nhằm chọn bảng màu tương ứng. XIn lưu ý rằng chúng tôi đã thử nghiệm tính năng này trong một bản vá tiếp theo.
Giờ đây, mọi loại
ComplicationData
đều hỗ trợSmallImages
.
Các thay đổi về API
- Trình quản lý hình nền đôi khi có thể tách rời công cụ và tạo một công cụ khác. Chúng tôi đã thêm một int def
DisconnectReason
và mở rộngClientDisconnectListener
bằng một phương thức mới bao gồm cả mộtDisconnectReason
, cho phép trình nghe quan sát các quá trình tách rời công cụ. (I45cce) - Thêm hai thông số không bắt buộc
nameResourceId
vàscreenReaderResourceId
vào hàm khởi tạoComplicationSlotOverlay
(I157e8) - Chúng tôi đã thêm một trình bao bọc guava cho trường hợp quá tải mới của
getOrCreateInteractiveWatchFaceClient
bằng mộtPreviewImageUpdateRequestedListener
. (Ic31f0) - Chúng tôi đã thêm
Renderer.sendPreviewImageNeedsUpdateRequest
, hữu ích cho các mặt đồng hồ có trạng thái bên ngoàiUserStyleSchema
. Giá trị này ảnh hưởng đến giao diện của đồng hồ (ví dụ: mặt đồng hồ có hình nền có thể chọn). Ở phía máy khách, chúng tôi đã thêmPreviewImageUpdateRequestedListener
làm thông số không bắt buộc vàogetOrCreateInteractiveWatchFaceClient
để quan sát các yêu cầu này. (Iff44a) - Chúng tôi đơn giản hoá API để cho thấy
WatchFaceColors
, nay có một thuộc tính đơn giản tên làwatchFaceColors
trên Trình kết xuất mà mặt đồng hồ có thể đặt. Bạn cần cập nhật thuộc tính này khi cần thiết để đáp ứng mọi thay đổi về kiểu. Thay vì dùngWallpaperManager
để quan sát các thay đổi về màu sắc, chúng tôi đã thêmOnWatchFaceColorsListener
vàoInteractiveWatchFaceClient
. (I490bc) - Chúng tôi thêm một lớp
WatchFaceColors
chứa 3 màu nổi bật nhất của mặt đồng hồ, cũng như thêm các phương thức mởwatchfaceColors
vànotifyWatchFaceColorsChanged
vào Trình kết xuất. Các phương thức này cho phép hệ thống lấy màu của mặt đồng hồ quaWallpaperManager.getWallpaperColors
. (I3d611) ShortTextComplicationData
,RangedValueComplicationData
,NoPermissionComplicationData
(vàDiscreteRangedValueComplicationData
thử nghiệm,GoalProgressComplicationData
vàWeightedElementsComplicationData
) nay đều hỗ trợSmallImages
. Nếu mặt đồng hồ chọn hiển thị một chức năng có nhiều màu, thì giờ đây, mặt đồng hồ đó có tuỳ chọn để sử dụngSmallImage
nhiều màu, trong khi trước đó phải dùng hình ảnh đơn sắc. (I257df)- Tái cấu trúc
PreviewImageUpdateRequestedListener
thànhConsumer<>
(Ia875d) - Thay thế loại Phương thức trừu tượng đơn (SAM) tuỳ chỉnh
OnWatchfaceColorsListener
bằng loại SAM Java chung (Người tiêu dùng) (I0c489) - Chúng tôi đã ngừng sử dụng những phương thức
getOrCreateInteractiveWatchFaceClient
vàlistenableGetOrCreateInteractiveWatchFaceClient
cũ không chỉ địnhPreviewImageUpdateRequestedListener
. (Iec502)
Sửa lỗi
DisconnectReason.BINDER_DIED
đổi tên thànhDisconnectReason.ENGINE_DIED
(I4eb0e)
Phiên bản 1.2.0-alpha01
Ngày 10 tháng 8 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.2.0-alpha01
. Phiên bản 1.2.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
- Chúng tôi đã thêm tính năng hỗ trợ thử nghiệm cho nhiều định dạng chức năng mới. Đây là khía cạnh đang trong quá trình phát triển; các định dạng mới này có thể thay đổi mà không cần thông báo trước và hiện không có hỗ trợ trình kết xuất nào từ
CanvasComplicationDrawable
. - Chúng tôi cũng đã thêm lề không bắt buộc vào các khu vực hiển thị chức năng để giúp việc nhấn vào các vùng chức năng nhỏ trở nên dễ dàng hơn.
Thay đổi về API
- Lớp
BoundingArc
thử nghiệm hiện không thể thay đổi. (If624a) - Các khu vực hiển thị chức năng nhỏ có thể khó nhấn. Để giúp giảm thiểu điều này, chúng tôi ra mắt tính năng hỗ trợ lề để tăng diện tích cho thao tác nhấn mà không làm ảnh hưởng đến quá trình kết xuất. Trừ phi được chỉ định (trong mã hoặc qua XML), lề của
ComplciationSlots
có kích thước bằng 0. (I14089) - Thay đổi chữ ký
getComplicationSlotInflationFactory(CurrentUserStyleRepository)
để trả về một thực thể ban đầu không rỗng. Trước đây việc trả về giá trị rỗng sẽ tạo ra lỗi, nên việc này chỉ để giúp hợp đồng API trở nên rõ ràng hơn. (I0fcc0) - Chúng tôi đã thêm đối số
currentUserStyleRepository
vào phương thứcWatchFaceService.getComplicationSlotInflationFactory
để nhất quán vớicreateComplicationSlotsManager
. (I2ddd2) UserStyleFlavors
đã trở thành tính năng không thử nghiệm. (I69cdc)- Chúng tôi xoá
ValueType
thử nghiệm khỏiRangedValueComplicationData
, thay vào đó ra mắtDiscreteRangedValueComplicationData
thử nghiệm giống nhưRangedValueComplicationData
, ngoại trừ phạm vi và giá trị số nguyên. Chúng tôi cũng ra mắtGoalProgressComplicationData
thử nghiệm, tương tự nhưRangedValueComplicationData
, ngoại trừ việc hướng tới mục tiêu có giá trị ngầm ẩn tối thiểu là 0 và giá trị được phép lớn hơntargetValue
. Vui lòng lưu ý đối với mọi biến thểRangedValue
, bạn phải chỉ định ít nhất một trong các hình ảnh đơn sắc, văn bản hoặc tiêu đề. (I9590c) - Chúng tôi đã xoá
boundsWithMargins
khỏiComplicationSlotState
vì phần mềm hệ thống chưa có trường hợp sử dụng này. (I42e26) - Chúng tôi thêm tính năng hỗ trợ thử nghiệm cho
WeightedElementsComplicationData
, bao gồm một loạt các Thành phần (các cặp trọng số và màu sắc) cùng với văn bản/tiêu đề/hình ảnh không bắt buộc. Chúng có thể được thể hiện dưới dạng biểu đồ hình tròn, trong đó màu sắc cần phải có ý nghĩa dựa trên ngữ cảnh vì thường không có chỗ trong chức năng để hiển thị nhãn. (I87eea) - Hiện tại,
ColorRamps
thử nghiệm màRangedValueComplicationData
vàGoalProgressComplicationData
sử dụng (không bắt buộc) cho phép bạn chỉ định một trình tự gồm tối đa 7 màu và 1 cờ cho biết liệu các màu có được chỉnh sửa mượt mà hay không hoặc có nên hiển thị các bước màu đồng nhất có kích thước bằng nhau hay không. (I9f5bf) RangedValueComplicationData.drawSegmented
đã được thay đổi thànhvalueType
, là một số nguyên cóValueType IntDef
tương ứng, cung cấp ý nghĩa ngữ nghĩa cho giá trị theo phạm vi và có thể được trình kết xuất chức năng sử dụng để tác động đến việc tạo kiểu. (I0616b)- Chúng tôi thêm tính năng hỗ trợ thử nghiệm cho
ColorRanges
(không bắt buộc) vàoRangedValueComplicationData
. Thông thường, các chức năng sẽ được kết xuất bằng màu sắc theo lựa chọn của mặt đồng hồ, nhưng đôi khiComplicationDataSource
là vị trí tốt nhất để đặt màu sắc, ví dụ như khi chúng có ý nghĩa ngữ nghĩa cụ thể. Chẳng hạn như từ màu đỏ sang màu xanh dương để xác định nhiệt độ. (I5153a) - Chúng tôi đã thêm một gợi ý
drawSegmented
thử nghiệm vàoRangedValueComplicationData
. Điều này sẽ báo hiệu cho trình kết xuất vẽ chỉ báo giá trị theo phạm vi bằng các phân đoạn, trong đó 1 phân đoạn = 1 đơn vị. (I7d7c1)
Sửa lỗi
- Chúng tôi thêm tính năng xác định
ComplicationSlotBounds
liên quan đến một toạ độ màn hình được xác định trước. (I0985d)
Phiên bản 1.1
Phiên bản 1.1.1
Ngày 10 tháng 8 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.1.1
. Phiên bản 1.1.1 bao gồm các thay đổi sau.
- Đây là bản phát hành sửa lỗi và người dùng nên nâng cấp lên phiên bản 1.1.0.
Sửa lỗi
Việc khởi động mặt đồng hồ mang tính không đồng bộ, và nếu bạn nhận được một chức năng trước khi mặt đồng hồ sẵn sàng, thì mặt đồng hồ đó sẽ được đưa vào danh sách
pendingInitialComplications
và được áp dụng sau đó. Thật không may rằngpendingInitialComplications
được áp dụng quá sớm, nghĩa là có một khoảng thời gian trong khi khởi chạy mặt đồng hồ mà các chức năng vẫn được đặt vàopendingInitialComplications
và bị bỏ qua. Vấn đề này hiện đã được khắc phục. Ngoài ra, bản vá này còn sửa một lỗi khiếnComplicationRenderer
nhầm lẫn khi cố tải các phần giữ chỗ không đồng bộ, dẫn đến việc đồ hoạ biên dịch không bao giờ cập nhật. Cuối cùng, hy vọng rằng bản vá này sẽ khắc phục một lỗi lý thuyết, trong đó cần hợp nhất nhiềupendingInitialComplications
. (0d03ba3)Khắc phục tình trạng tắc nghẽn tiềm ẩn trong
InteractiveInstanceManager
khigetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance
đang giữ khoá lâu hơn mức cần thiết. Thông thường, chúng ta mong đợiengine.setUserStyle
sẽ nhanh chóng, nhưng nếu vì lý do nào đó, việc này không như mong đợi thì chúng ta có thể gặp phải tình trạng tắc nghẽn/ANR. Bản vá này di chuyển các công việc không cần thiết ra khỏi khoá, loại bỏ khả năng gây tắc nghẽn.(5a2adca)Khắc phục một số vấn đề giữ lại
WatchFaceService
. Đôi khi, WakeLock có thể giữ lạiWatchFaceService
, lỗi này được khắc phục bằng cách thêm một lệnh gọirelease()
. Ngoài ra,StateFlows
có thể giữ lạiWatchFaceService
, việc huỷ cácCoroutineScopes
ngầm sẽ khắc phục điều đó.(fd48138)Thêm thời gian chờ vào
awaitDeferredWatchFace
* và khắc phụcwatchfaceOverlayStyle
NullPointerException
. Trong các trường hợp thông thường, quá trình này không dùng hết thời gian chờ, kể cả sau khi cài đặt mới và các trường hợpDirectBoot
có mức tải CPU cao. Chúng tôi cũng đã khắc phục lỗi NPE nếugetWatchfaceOverlayStyle
được gọi sauclose()
.(a4c3a5a)
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 tuỳ 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.
- Hỗ trợ khả năng 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 mã nhận dạng 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à con người 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 "phiên bản", một lựa chọn các kiểu được hiển thị từ trình chỉnh sửa đồng hành.
- Khi chỉnh sửa hai phiên bản của mặt đồng hồ, các phiên bản mặt đồng hồ nay có thể dùng chung tài nguyên, nhờ đó 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 hoá 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 thử nghiệm với chức năng cạnhBoundingArc
, đưa nó quadrawHighlight
mặc dù bạn không nên dùng nó vào thời điểm đó.
Thay đổi về 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 (chẳng hạn như 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
ở chế độ đồng bộ. Vấn đề khiếnBaseEditorSession.close
không đồng bộ là do chúng tôi huỷ bỏComplicationDataSourceInfoRetriever
quá muộn dẫn đến cảnh báo nội dung rác 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 về 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 chế độ cài đặt trong
UserStyleSetting
XML. Nó cho phép bạn giảm độ chi tiết và chia sẻ chế độ 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
, tức làTimeLineEntries
đã lưu vào bộ nhớ đệm của loại NoData sẽ bị diễn giải nhầm thành loại thuộc chức năng chính dẫn đến NPE khi các trường bắt buộc không tồn tại được sử dụng. (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 có dây 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ũ sẽ vô tình 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 4 năm 2022
Phát hành androidx.wear.watchface:watchface-*:1.1.0-beta01
. Phiên bản 1.1.0-beta01 bao gồm các thay đổi sau.
Thay đổi về API
- Giờ đây, các phương thức
WatchFaceMetadataClient
(getUserStyleSchema
,getComplicationSlotMetadataMap
,getUserStyleFlavors
) vàHeadlessWatchFaceClient.getUserStyleFlavors
sẽ trả về RuntimeException chưa đánh dấu, thay vìWatchFaceException
. (I0718a) WatchFaceMetadataClient.WatchFaceException
đã được di chuyển khỏi lớp để 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 để tuỳ chỉnh giao diện hiển thị phức tạp. (I44a73)
Thay đổi về API
Renderer.CanvasRenderer
vàRenderer.GlesRenderer
hiện không dùng nữa, thay vào đó làRenderer.CanvasRenderer2
vàRenderer.GlesRenderer2
hỗ trợSharedAssets
. Các phương thức này được truyền sang phương thức hiển thị. Đối với khả 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 phiên bản cho
@WatchFaceFlavorsExperimental
– danh sách các mặt đồng hồ được định cấu hình sẵn (I04dd0) Renderer.sharedAssets
nay là một StateFlow và chúng tôi đã xoá 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
để giúpHeadlessWatchFaceClient
chịu mức hao tổn tương đối thấp khi truyề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 khi và chỉ khiUserStyleSchema
có thể dựa vào để không thay đổi trừ phi tệp 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à chỉ có trình chỉnh sửa mặt đồng hồ sử dụ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 về API
- Đến nay,
ComplicationData
không phải lúc nào cũng dùng được (ví dụ: ComplicationData đã 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 cho 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 về API
- Chúng tôi thêm tính năng 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ỳ 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 ra mắt
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à chương trình đổ 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à kiểm thử,
ComplicationData
và các lớp con có liên quan hiện đã ghi đè mã băm, giá trị bằng và phương thức toString để giúp bạn dễ dàng xử lý hơn.
Thay đổi về 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 bao gồm các thay đổi sau.
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 hệ thống lưu vào bộ nhớ đệm và đôi khi đượ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ị huỷ 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 đổi về 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ố khiến khung chặn khởi 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ẽ là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 các quyền về chức năng, đồng thời một hộp thoại khác giải thích rằng người dùng cần có quyền sử dụng 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ồ qua ứ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à đang không cắm sạc, giúp 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 về 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 là các hàm tạm ngưng nữa, giờ đây chúng 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 về 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)