Lưu ý: Trang này cho bạn thấy một bước trong quy trình quản lý cấu hình mặt đồng hồ theo cách thủ công. Nếu bạn muốn thiết kế mặt đồng hồ bằng công cụ kiểu WYSIWYG (như bạn thấy là như vậy), trước tiên, hãy xem hướng dẫn về Watch Face Studio.
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:
Cài đặt SDK cho Android 14 (API cấp 34) trở lên. Nếu mặt đồng hồ 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, thì bạn có thể 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ả
aapt2
vàandroid.jar
.Ngoài ra, bạn có thể cài đặt Android Studio. Ứng dụng này cũng có thể cung cấp các công cụ này.
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 thuộc tính ứ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 mình cho các thiết bị chạy Wear OS 5 trở lên, hãy tạo 2 tệp APK mặt đồng hồ khác nhau, một tệp hỗ trợ phiên bản 2 và một tệp hỗ trợ phiên bản 1. Tìm hiểu thêm về cách định cấu hình phiên bản của ứng dụng.
<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"
...>
<meta-data android:name="com.google.android.wearable.standalone"
android:value="true" />
<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>
<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 thông tin chi tiết về mặt đồng hồ
Cấu trúc của tài liệu mặt đồng hồ WFF cơ bản như sau:
<WatchFace width="450" height="450">
<Scene>
<!-- Content to be rendered -->
</Scene>
</WatchFace>
Tạo tệp XML này dưới dạng res/raw/watchface.xml
khi tạo mặt đồng hồ, nếu bạn chỉ làm việc với một mặt đồng hồ. Để hỗ trợ nhiều hình dạng và kích thước màn hình, hãy khai báo hỗ trợ nhiều hình dạng và kích thước.
Phần tử gốc luôn là WatchFace
. height
và width
xác định phạm vi của không gian toạ độ để sử dụng trong mặt đồng hồ và mặt đồng hồ được điều chỉnh theo tỷ lệ cho phù hợp với thiết bị đang sử dụng; height
và width
không đại diện cho các pixel thực tế.
Định dạng mặt đồng hồ sắp xếp một số thông tin chi tiết về mặt đồng hồ:
- Siêu dữ liệu, chẳng hạn như thời gian và số bước hiển thị trong hình ảnh xem trước của mặt đồng hồ.
- Cấu hình người dùng, chẳng hạn như các chủ đề màu sắc khác nhau cho mặt đồng hồ, các phần tử mà người dùng có thể bật/tắt và lựa chọn trong số một số phần tử. Phiên bản 2 của Định dạng mặt đồng hồ giới thiệu phiên bản có thể xuất hiện trong cấu hình của người dùng. Mỗi phiên bản chỉ định một cấu hình người dùng đặt trước, chỉ định loại và kiểu của các phần tử xuất hiện cùng với thời gian trong mặt đồng hồ. Các chế độ cài đặt trước này giúp bạn dễ dàng tạo các nhóm thành phần có hình ảnh bắt mắt. Trong ứng dụng đồng hành Wear OS, người dùng sẽ thấy các phiên bản mặt đồng hồ của bạn dọc theo một hàng có thể cuộn.
- Cảnh chứa các thành phần hình ảnh của mặt đồng hồ. Các phần tử xuất hiện gần cuối cảnh sẽ xuất hiện ở trên các phần tử khác, vì vậy, thứ tự thông thường sẽ như sau:
- Kim đồng hồ cho đồng hồ kim hoặc văn bản cho đồng hồ số
- Các chức năng hiển thị thông tin bổ sung, chẳng hạn như ngày trong tuần hoặc số bước của người dùng
- Các hình ảnh khác tạo điểm nhấn hoặc trang trí cho mặt đồng hồ, chẳng hạn như hình ảnh một khu cắm trại
- Nhóm các phần tử, cho phép bạn sửa đổi nhiều phần tử cùng một lúc. Bạn có thể tạo biến thể của các nhóm này trong một cảnh, cho phép bạn ẩn hoặc sửa đổi nội dung một cách có chọn lọc khi hệ thống chuyển sang chế độ môi trường xung quanh tiết kiệm pin.
Nhờ các thuộc tính được định kiểu rõ ràng và có nguyên tắc về tần suất cũng như giá trị hợp lệ nên bạn tránh được hầu hết các nguồn lỗi khi tạo mặt đồng hồ.
Khai báo tính năng hỗ trợ hình dạng mặt đồng hồ (không bắt buộc)
Bạn chỉ cần thực hiện bước này nếu muốn hỗ trợ nhiều hành vi cho nhiều kích thước mặt đồng hồ. Bạn có thể bỏ qua bước này nếu muốn mặt đồng hồ điều chỉnh theo 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 tập hợp các hình dạng mặt đồng hồ mà bạn hỗ trợ trong watch_face_shapes.xml
:
<WatchFaces> <WatchFace shape="CIRCLE" width="300" height="300" file="@raw/watchface"/> <WatchFace shape="CIRCLE" width="450" height="450" file="@raw/watchface_large_circle"/> <!-- Remove any references to rectangular watch faces --><WatchFace shape="RECTANGLE" width="380" height="400" file="@raw/watchface_rectangle"/></WatchFaces>
Sau đó, hãy 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 chưa xác định tệp hình dạng, bạn chỉ cần tạo một tệp là watchface.xml
.
Sử dụng ví dụ trong phần 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
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="<var>{toolName}-{toolVersion}</var>" />
</application>
Kiểm tra độ chính xác và hiệu suất 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 sử dụng các công cụ trình xác thực để kiểm tra xem mặt đồng hồ của bạn có lỗi hay không và có tuân thủ các đề xuất về mức sử dụng bộ nhớ hay không.
- Tìm hiểu thêm về cách tối ưu hoá mức sử dụng bộ nhớ và kiểm tra mức sử dụng bộ nhớ để chuẩn bị phát hành.
- Tìm hiểu thêm về cách sử dụng trình xác thực XML trong chu kỳ phát triển.
Tạo gói ứng dụng mặt đồng hồ
Để tạo Android App Bundle chứa mặt đồng hồ, hãy sử dụng hệ thống bản 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 mẫu GitHub.
Đề xuất cho bạn
- Lưu ý: văn bản có đường liên kết sẽ hiện khi JavaScript tắt
- AAPT2
- Kiến thức cơ bản về Jetpack Compose
- Bắt đầu sử dụng CameraX