Thêm các chức năng vào mặt đồng hồ

Chức năng mặt đồng hồ hiển thị dữ liệu từ một nguồn dữ liệu. Với Complications API (API Chức năng), các mặt đồng hồ có thể chọn nguồn dữ liệu mà chúng muốn sử dụng để lấy dữ liệu cơ bản. API này giúp mặt đồng hồ hiển thị thông tin ngoài thời gian trong ngày mà không cần có mã để nhận dữ liệu.

Sử dụng ComplicationSlotsManager

Để thêm các chức năng vào mặt đồng hồ, hãy dùng ComplicationSlotsManager.

ComplicationSlotsManager xác định số lượng chức năng mà mặt đồng hồ hỗ trợ cũng như vị trí của các chức năng đó trên màn hình. Để hỗ trợ việc thay đổi vị trí hoặc số lượng các chức năng, ComplicationSlotsManager cũng sử dụng CurrentUserStyleRepository như minh hoạ trong ví dụ sau:

 override fun createComplicationSlotsManager(
        currentUserStyleRepository: CurrentUserStyleRepository
    ): ComplicationSlotsManager {
        val defaultCanvasComplicationFactory =
            CanvasComplicationFactory { watchState, listener ->
                // ...
            }

        val leftComplicationSlot = ComplicationSlot.createRoundRectComplicationSlotBuilder(
            id = 100,
            canvasComplicationFactory = defaultCanvasComplicationFactory,
            // ...
        )
            .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
            .build()

        val rightComplicationSlot = ComplicationSlot.createRoundRectComplicationSlotBuilder(
            id = 101,
            canvasComplicationFactory = defaultCanvasComplicationFactory,
            // ...
        )
            .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
            .build()

        return ComplicationSlotsManager(
            listOf(leftComplicationSlot, rightComplicationSlot),
            currentUserStyleRepository
        )
 }

Loại và trường

Bảng sau đây mô tả các loại và trường của đối tượng ComplicationData. Nếu mặt đồng hồ yêu cầu một trường không hợp lệ cho một loại chức năng, thì giá trị mặc định cho trường đó sẽ được trả về. Chẳng hạn như nếu mặt đồng hồ cố gắng truy cập vào trường LONG_TEXT trong loại SHORT_TEXT, thì giá trị mặc định cho trường LONG_TEXT là rỗng sẽ bị trả về.

Loại Trường bắt buộc Trường không bắt buộc Ghi chú
SHORT_TEXT Văn bản ngắn Biểu tượng
Biểu tượng bảo vệ chống pixel bị hỏng
Tiêu đề ngắn
Chỉ hiển thị một biểu tượng hoặc tiêu đề ngắn nếu bạn cung cấp một trong hai hoặc cả hai.
ICON Biểu tượng Biểu tượng bảo vệ chống pixel bị hỏng Được dùng khi không cần văn bản. Biểu tượng dự kiến sẽ có một màu và có thể được phủ màu theo mặt đồng hồ.
RANGED_VALUE Giá trị
Giá trị tối thiểu
Giá trị tối đa
Biểu tượng
Biểu tượng bảo vệ chống pixel bị hỏng
Văn bản ngắn
Tiêu đề ngắn
Các trường không bắt buộc không đảm bảo sẽ được hiển thị. Nếu muốn vẽ thanh tiến trình của riêng mình, bạn có thể sử dụng phương thức isRangedValueProgressHidden() để ẩn thanh tiến trình do lớp ComplicationDrawable cung cấp.
LONG_TEXT Văn bản dài Tiêu đề dài
Biểu tượng
Biểu tượng bảo vệ chống pixel bị hỏng
Hình ảnh nhỏ
Hiển thị tiêu đề dài nếu có.
SMALL_IMAGE Hình ảnh nhỏ Hình ảnh nhỏ có một trong 2 kiểu: kiểu ảnh hoặc kiểu biểu tượng. Kiểu ảnh có nghĩa là ảnh sẽ lấp đầy không gian và có thể bị cắt. Kiểu biểu tượng có nghĩa là biểu tượng không được cắt bớt và có thể dùng làm khoảng đệm. Sự thay đổi hình ảnh có thể dẫn đến tình trạng hình ảnh không phù hợp để hiển thị ở chế độ môi trường xung quanh trên các thiết bị có tính năng bảo vệ chống pixel bị hỏng hoặc ở chế độ môi trường xung quanh có bit thấp. Khi bật tính năng bảo vệ chống pixel bị hỏng hoặc chế độ môi trường xung quanh có bit thấp, mặt đồng hồ có thể sử dụng hình ảnh nhỏ được bảo vệ chống pixel bị hỏng vì hình ảnh này an toàn. Nếu không, mặt đồng hồ sẽ khó xác định được mức độ phù hợp nên sẽ không hiển thị hình ảnh.
LARGE_IMAGE Hình ảnh lớn Hình ảnh này phải đủ lớn để lấp đầy mặt đồng hồ. Sự thay đổi hình ảnh có thể dẫn đến tình trạng hình ảnh không phù hợp để hiển thị ở chế độ môi trường xung quanh trên các thiết bị có tính năng bảo vệ chống pixel bị hỏng hoặc ở chế độ môi trường xung quanh có bit thấp. Vì mặt đồng hồ khó xác định được mức độ phù hợp để hiển thị hình ảnh, nên mặt đồng hồ sẽ không hiển thị hình ảnh ở chế độ môi trường xung quanh nếu bật tính năng bảo vệ chống pixel bị hỏng hoặc chế độ môi trường xung quanh có bit thấp.

Bảng sau đây mô tả các loại chức năng cho dữ liệu trống có thể được gửi cho bất kỳ khu vực hiển thị chức năng nào. Những loại này không có trường và không cần đưa vào danh sách các loại được hỗ trợ. Những loại này cho phép mặt đồng hồ phân biệt giữa 3 trường hợp sau:

  • Không có nguồn nào được chọn
  • Người dùng đã chọn tuỳ chọn "trống" cho một khu vực
  • Nguồn không có dữ liệu để gửi

Nguồn không gửi được TYPE_EMPTY theo yêu cầu cập nhật. Thay vào đó, hãy gửi TYPE_NO_DATA.

Loại chức năng Nội dung mô tả
TYPE_NOT_CONFIGURED Do hệ thống gửi khi một chức năng được kích hoạt nhưng người dùng chưa chọn nguồn và chưa đặt giá trị mặc định.

Không thể do nguồn gửi.

TYPE_EMPTY Do hệ thống gửi khi một chức năng được kích hoạt và người dùng chọn "trống" thay vì chọn nguồn hoặc khi mặt đồng hồ chọn không có nguồn và chọn loại chức năng này làm loại mặc định.

Không thể do nguồn gửi.

TYPE_NO_DATA Do hệ thống gửi khi một chức năng (có nguồn) được kích hoạt để xoá chức năng đó trước khi nhận được dữ liệu thực tế từ nguồn.

Có thể do nguồn gửi nếu nguồn không có dữ liệu thực để gửi.

Để biết thêm thông tin chi tiết, vui lòng xem mẫu mặt đồng hồ trên GitHub.