Cung cấp dữ liệu hữu ích thông qua các chức năng

Chức năng là một tính năng của cả mặt đồng hồ vật lý và mặt đồng hồ thông minh, giúp hiển thị thêm thông tin. Thông thường, người dùng sẽ chọn thông tin hiển thị trong một chức năng.

Các chức năng thường có một số hình dạng sau:

  1. Hình chữ nhật
  2. Tròn
  3. Các vòng cung dọc theo viền mặt đồng hồ
  4. Nền, bao phủ toàn bộ mặt đồng hồ

Trong Wear OS, hệ thống Tiện ích có thể được chia thành 2 phần:

  1. Nguồn dữ liệu của chức năng
  2. Chức năng kết xuất

Ví dụ: một ứng dụng sức khoẻ và thể dục có thể triển khai nguồn dữ liệu của mặt đồng hồ Số bước hằng ngày. Mặt đồng hồ WFF có thể hiển thị thông tin này.

Nguồn dữ liệu trong các chức năng

Nguồn dữ liệu của chức năng chỉ định dữ liệu sẽ được kết xuất và loại chức năng. Nguồn dữ liệu không đóng vai trò gì trong việc xác định cách dữ liệu xuất hiện trên mặt đồng hồ.

Ví dụ: nguồn dữ liệu tiện ích Số bước hằng ngày về sức khoẻ và thể dục có thể tạo ra dữ liệu sau đây để cho biết người dùng đã thực hiện 2.400 trong số 10.000 bước mục tiêu của họ hôm nay:

Lưu ý rằng không có dữ liệu nào cho biết cách hiển thị dữ liệu này.

Mặt đồng hồ chỉ định những loại chức năng mà mặt đồng hồ có thể hiển thị. Điều này xác định những nguồn dữ liệu mà người dùng có thể chọn.

Trong trường hợp ví dụ về Số bước hằng ngày, bạn quyết định trong định nghĩa mặt đồng hồ cách hiển thị ValueTargetValue: hiển thị dưới dạng văn bản hay dưới dạng chỉ báo tiến trình? Bạn là nhà thiết kế mặt đồng hồ nên bạn có quyền quyết định.

Xác định các chức năng

Việc cung cấp khả năng hiển thị các vùng chức năng trên mặt đồng hồ có thể mang lại giá trị cho người dùng, vì điều này cho phép họ xem nhanh nhiều thông tin hơn và tuỳ chỉnh theo nhu cầu của họ.

Quyết định có hỗ trợ chức năng trên mặt đồng hồ hay không và hỗ trợ bao nhiêu chức năng, hình dạng và vị trí của các chức năng đó, cũng như loại dữ liệu mà các chức năng đó hỗ trợ.

Mỗi khoảng trống trên mặt đồng hồ dành cho một chức năng được xác định là một ComplicationSlot, trong đó một vùng giới hạn được xác định để kết xuất chức năng:

<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
    x="100" y="100" width="100" height="100">
    <BoundingOval x="0"  y="0" width="100" height="100" />
    <Complication type="SHORT_TEXT">
        <!-- Complication content for rendering SHORT_TEXT data goes here -->
    </Complication>
    <Complication type="SMALL_IMAGE">
        <!-- Complication content for rendering SMALL_IMAGE data goes here -->
    </Complication>
</ComplicationSlot>

Bạn có thể áp dụng phương pháp tương tự cho các hình dạng ranh giới khác, chẳng hạn như hình chữ nhật và hình elip.

Đặt loại và giá trị mặc định của chức năng

Hệ thống chức năng cung cấp một số loại chức năng, cho phép mặt đồng hồ thể hiện loại dữ liệu mà mặt đồng hồ có thể biểu thị trên màn hình. Ví dụ: chức năng Arc (như minh hoạ trước đó) không phù hợp với kiểu dữ liệu chức năng dựa trên hình ảnh như SMALL_IMAGE, nhưng có thể hoạt động rất tốt đối với dữ liệu dạng số như RANGED_VALUE.

Trong khai báo ComplicationSlot, hãy đặt supportedTypes thành danh sách được phân tách bằng dấu cách gồm các loại có thể được kết xuất trong vị trí này.

Bạn cũng phải đặt nguồn mặc định cho ComplicationSlot trừ phi bạn cho phép loại EMPTY. Trong trường hợp này, bạn không bắt buộc phải đặt nguồn mặc định:

<ComplicationSlot slotId="2" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
    x="250" y="100" width="100" height="100">
    <DefaultProviderPolicy
        defaultSystemProvider="STEP_COUNT"
        defaultSystemProviderType="SHORT_TEXT" />
    <!-- ... -->
</ComplicationSlot>

Ngoài việc phải chỉ định nhà cung cấp hệ thống, bạn cũng có thể chỉ định nhà cung cấp ngoài hệ thống (chẳng hạn như nhà cung cấp bên thứ ba) để sử dụng theo mặc định, nếu họ đã cài đặt.

Kết xuất dữ liệu chức năng

Sau khi xác định ComplicationSlot, ranh giới và phần tử Complication chứa, hãy sử dụng các thành phần WFF tiêu chuẩn, chẳng hạn như PartDraw, PartImagePartText để hiển thị dữ liệu Tiện ích.

Các phần tử trong dữ liệu Complication có quyền truy cập vào một nguồn dữ liệu đặc biệt: COMPLICATION. Nguồn dữ liệu này cung cấp nhiều thuộc tính dữ liệu do nguồn dữ liệu của mặt đồng hồ đặt.

Ví dụ: một tiện ích SMALL_IMAGE có thể đặt các giá trị COMPLICATION.SMALL_IMAGECOMPLICATION.SMALL_IMAGE_AMBIENT. Bạn có thể dùng các thuộc tính này thay vì tài nguyên trong phần tử Image:

<Complication type="SMALL_IMAGE">
    <PartImage x="0" y="0" width="100" height="100">
        <Image resource="[COMPLICATION.SMALL_IMAGE]" />
    </PartImage>
</Complication>

Mỗi loại chức năng đều có một nhóm thuộc tính riêng mà bạn có thể đặt; để xem danh sách đầy đủ của từng loại, hãy xem tài liệu tham khảo về Complication. Ví dụ này hiển thị văn bản từ một chức năng SHORT_TEXT:

<Complication type="SHORT_TEXT">
    <PartText x="0" y="0" width="100" height="100">
        <Text>
            <Font size="32">
                <Template>
                    <![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" />
                </Template>
            </Font>
        </Text>
    </PartText>
</Complication>

Tối đa hoá mức độ hữu ích khi hiển thị các mặt số phức tạp

Có một số thách thức khi thêm ComplicationSlots vào mặt đồng hồ:

  1. Có nhiều loại dữ liệu Chức năng. Mỗi ứng dụng có thể cung cấp một hoặc nhiều tính năng trong số này.
  2. Mỗi loại dữ liệu Chức năng, ngoài các thuộc tính bắt buộc, còn có nhiều thuộc tính không bắt buộc. Kiểm tra để đảm bảo rằng quá trình kết xuất hữu ích nhất được thực hiện từ các thuộc tính có sẵn, có tính đến các tổ hợp khác nhau.

Để giải quyết các vấn đề này, bạn có thể áp dụng một số chiến lược sau:

  1. Hỗ trợ nhiều loại chức năng cho mỗi vị trí. Ví dụ: SHORT_TEXT được các nguồn dữ liệu chức năng hỗ trợ khá rộng rãi, vì vậy, việc hỗ trợ một số loại khác nhau, chẳng hạn như SHORT_TEXT RANGED_VALUE cho một chức năng nhỏ hình tròn, sẽ làm tăng khả năng tương thích.
  2. Cung cấp nhiều loại chức năng trên mặt đồng hồ. Ví dụ: bạn có thể hỗ trợ RANGED_VALUEGOAL_PROGRESS trên các vùng chức năng Arc được đặt ở cạnh, còn SHORT_TEXTSMALL_IMAGE trên các vùng chức năng hình tròn trong phần nội dung của mặt đồng hồ.
  3. Kiểm tra các phần tử không bắt buộc cho từng loại dữ liệu. Ví dụ: SHORT_TEXT có thể hỗ trợ một thuộc tính tiêu đề và một hình ảnh. Bố cục của bạn để hiển thị dữ liệu có sẵn có thể khác nhau, tuỳ thuộc vào việc có hình ảnh hoặc tiêu đề hay không.