Thiết lập Định dạng mặt đồng hồ

Hướng dẫn này bao gồm các bước sử dụng công cụ cần thiết để định cấu hình mặt đồng hồ bằng Định dạng mặt đồng hồ, một số đề xuất về cấu trúc dự án và hướng dẫn từng bước để áp dụng các công cụ nhằm tạo ra cấu trúc đó.

Điều kiện tiên quyết

Để chuẩn bị môi trường phát triển cho việc sử dụng Định dạng mặt đồng hồ, hãy hoàn tất các bước thiết lập sau đây:

  1. Cài đặt SDK cho Android 14 (API cấp 34) trở lên. Nếu mặt đồng hồ của bạn không dựa vào các tính năng hoặc hành vi dành riêng cho phiên bản 2, bạn có thể thay vào đó, hãy cài đặt SDK cho Android 13 (API cấp 33).

    SDK cũng chứa các công cụ cần thiết khác, bao gồm cả aapt2android.jar.

  2. Ngoài ra, hãy cài đặt Android Studio. Nền tảng này cũng có thể cung cấp và các công cụ lập mô hình tuỳ chỉnh.

Cấu trúc dự án

Khi bạn tạo mặt đồng hồ tuỳ chỉnh sử dụng Định dạng mặt đồng hồ, Android App Bundle chứa tệp mặt đồng hồ tuỳ chỉnh phải hoàn toàn tách biệt với Android App Bundle chứa logic của ứng dụng Wear OS. Một số cửa hàng ứng dụng (bao gồm cả Google Play) ngăn bạn tải Android App Bundle lên, trong đó có logic Wear OS và mặt đồng hồ tuỳ chỉnh.

Tạo gói ứng dụng cho mặt đồng hồ

Để tạo tệp Android App Bundle chứa tệp mặt đồng hồ, hãy hoàn tất các bước được trình bày trong những phần sau.

Khai báo việc sử dụng Định dạng mặt đồng hồ

Trong tệp kê khai của ứng dụng mới (AndroidManifest.xml), hãy thêm một ứng dụng cho biết bạn sử dụng Định dạng mặt đồng hồ. Trừ phi bạn muốn hạn chế quyền truy cập vào mặt đồng hồ của bạn đối với thiết bị chạy Wear OS 5 trở lên, tạo 2 APK mặt đồng hồ khác nhau, một APK hỗ trợ phiên bản 2 và một APK hỗ trợ phiên bản 1. Tìm hiểu thêm về cách định cấu hình các phiên bản của ứng dụng.

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest ...>
    <!--
        Use SDK version 34 for version 2 of WFF, and SDK version 33 for version
        1 of WFF
    -->
    <uses-sdk
        android:minSdkVersion="34"
        android:targetSdkVersion="34" />

    <!--
        WFF is a resource-only format, so the hasCode attribute should be set to
        false to reflect this.
    -->
    <application
        android:label="@string/watch_face_name"
        android:hasCode="false"
        ...>
        <property
            android:name="com.google.wear.watchface.format.version"
            android:value="2" />
    </application>
</manifest>

Khai báo siêu dữ liệu mặt đồng hồ

Trong thư mục tài nguyên res/xml của ứng dụng, hãy tạo một tệp mới tên là watch_face_info.xml. Đây là nơi bạn xác định siêu dữ liệu của mặt đồng hồ:

<?xml version="1.0" encoding="utf-8"?>
<WatchFaceInfo>
    <!-- Only "Preview" is required. -->
    <Preview value="@drawable/watch_face_preview" />
    <Category value="CATEGORY_EMPTY" />
    <AvailableInRetail value="true" />
    <MultipleInstancesAllowed value="true" />
    <Editable value="true" />
</WatchFaceInfo>

Các trường trong tệp này đại diện cho các thông tin sau:

Preview
Đề cập đến đối tượng có thể vẽ chứa hình ảnh xem trước của mặt đồng hồ.
Category

Xác định danh mục của mặt đồng hồ. Phải là chuỗi hoặc tham chiếu đến chuỗi, chẳng hạn như @string/ref_name. Mỗi nhà sản xuất thiết bị có thể xác định một tập hợp danh mục mặt đồng hồ riêng.

Giá trị mặc định: empty_category_meta để nhóm mặt đồng hồ này với các mặt đồng hồ thuộc "danh mục trống" khác ở cuối chế độ xem bộ chọn mặt đồng hồ.

AvailableInRetail

Liệu mặt đồng hồ có dùng được ở chế độ giới thiệu bán lẻ của thiết bị hay không. Phải là giá trị boolean hoặc tham chiếu đến giá trị boolean như @bool/watch_face_available_in_retail.

Giá trị mặc định: false

MultipleInstancesAllowed

Liệu mặt đồng hồ có thể có nhiều mục yêu thích hay không. Phải là giá trị boolean hoặc tham chiếu đến giá trị boolean như @bool/watch_face_multiple_instances_allowed.

Giá trị mặc định: false

Editable

Liệu mặt đồng hồ có chỉnh sửa được hay không, tức là mặt đồng hồ có một chế độ cài đặt hoặc ít nhất là một chức năng không cố định. Nút này dùng để hiện hoặc ẩn nút Edit (Chỉnh sửa) cho mặt đồng hồ trong danh sách yêu thích.

Giá trị mặc định: false

Khai báo tên mặt đồng hồ

Trong tệp kê khai của ứng dụng (AndroidManifest.xml), hãy đặt thuộc tính android:label thành tên của mặt đồng hồ:

<application android:label="@string/watch_face_name" >

Khai báo tính năng hỗ trợ hình dạng mặt đồng hồ (không bắt buộc)

Bước này chỉ cần thiết nếu bạn muốn hỗ trợ hành vi khác cho kích thước khác nhau của mặt đồng hồ. Bạn có thể bỏ qua bước này nếu bạn hài lòng khi mặt đồng hồ của bạn điều chỉnh theo tỷ lệ với kích thước của đồng hồ.

Trong thư mục tài nguyên res/xml của ứng dụng, hãy khai báo nhóm mặt đồng hồ hình dạng mà bạn hỗ trợ trong watch_face_shapes.xml:

<WatchFaces>
    <!-- The default shape is "CIRCLE". -->
    <WatchFace shape="CIRCLE" width="300" height="300"
               file="@raw/watchface"/>
    <WatchFace shape="CIRCLE" width="450" height="450"
               file="@raw/watchface_large_circle"/>
    <WatchFace shape="RECTANGLE" width="380" height="400"
               file="@raw/watchface_rectangle"/>
</WatchFaces>

Khai báo thông tin chi tiết về mặt đồng hồ

Trong thư mục tài nguyên res/raw của ứng dụng, hãy tạo các tệp tương ứng với giá trị thuộc tính file dùng khi bạn khai báo tính năng hỗ trợ cho các hình dạng mặt đồng hồ.

Đây là nơi bạn xác định giao diện và hành vi của mặt đồng hồ cho từng hình dạng mặt đồng hồ. Nếu không xác định tệp hình dạng, thì bạn chỉ cần để tạo một tệp, watchface.xml.

Sử dụng ví dụ từ trang này, các tệp XML thô sẽ là:

  • res/raw/watchface.xml
  • res/raw/watchface_large_circle.xml
  • res/raw/watchface_rectangle.xml

Phần tử gốc luôn là WatchFace:

<WatchFace width="450" height="450" shape="CIRCLE">
    <!-- Remainder of your Watch Face Format definition here. -->
    <!-- If this file defines a watch face for a circular device shape, place
         resources used in this file in the "/res/drawable-nodpi" directory. -->
    <!-- If this file defines a watch face for a rectangular or other
         non-circular shape, place resources ued in this file in the
         "/res/drawable-notround-nodpi" directory. -->
</WatchFace>

Xác định nhà xuất bản mặt đồng hồ (không bắt buộc)

Trong tệp kê khai của ứng dụng, bạn có thể khai báo (không bắt buộc) một chuỗi tuỳ ý dùng để xác định nhà xuất bản của mặt đồng hồ, hoặc tên và phiên bản công cụ mà bạn đang sử dụng:

<application ...>
    ...
    <property
        android:name="com.google.wear.watchface.format.publisher"
        android:value="{toolName}-{toolVersion}" />
</application>

Kiểm tra hiệu suất và độ chính xác của mặt đồng hồ

Trong quá trình phát triển và trước khi tải lên Google Play, hãy dùng trình xác thực công cụ để kiểm tra nhằm đảm bảo rằng mặt đồng hồ của bạn không có lỗi và đảm bảo rằng tuân thủ các khuyến nghị về mức sử dụng bộ nhớ.

Tạo gói ứng dụng cho mặt đồng hồ

Để tạo Android App Bundle chứa mặt đồng hồ, hãy sử dụng Hệ thống xây dựng Gradle. Tìm hiểu thêm về cách tạo ứng dụng bằng Gradle.

Điều này được minh hoạ trong các mẫu GitHub.