Tạo dịch vụ mặt đồng hồ

Mặt đồng hồ là một dịch vụ được đóng gói trong ứng dụng Wear OS. Khi người dùng chọn một mặt đồng hồ có sẵn, hệ thống sẽ hiển thị mặt đồng hồ đó và gọi các phương thức gọi lại dịch vụ.

Khi người dùng cài đặt một ứng dụng Wear có mặt đồng hồ, thì mặt đồng hồ đó sẽ có mặt trên đồng hồ bằng cách sử dụng bộ chọn mặt đồng hồ. Ngoài ra, người dùng có thể chọn mặt đồng hồ trong ứng dụng đồng hành trên điện thoại đã được ghép nối.

Trang này mô tả cách định cấu hình dự án Wear OS để đưa vào mặt đồng hồ và cách triển khai dịch vụ mặt đồng hồ.

Tạo một dự án mặt đồng hồ

Lưu ý: Bạn nên sử dụng Android Studio để phát triển Wear OS, vì phần mềm này hỗ trợ việc thiết lập dự án, đưa vào thư viện và đóng gói thuận tiện.

Hãy hoàn tất các bước sau để tạo một dự án trong Android Studio cho mặt đồng hồ của bạn:

  1. Nhấp vào File > New > New project (Tệp > Mới > Dự án mới).
  2. Trong cửa sổ Select a project template (Chọn mẫu dự án), hãy chọn thẻ Wear, chọn Watch Face (Mặt đồng hồ) trong danh sách tuỳ chọn rồi nhấp vào Next (Tiếp theo).
  3. Trong cửa sổ Configure your project (Định cấu hình dự án của bạn), hãy chấp nhận giá trị mặc định rồi nhấp vào Finish (Hoàn tất).

Android Studio tạo dự án bằng mô-đun app cho dịch vụ mặt đồng hồ.

Phần phụ thuộc

Android Studio sẽ tự động thêm phần phụ thuộc cần thiết vào các tệp build.gradle của bạn. Thư viện mặt đồng hồ AndroidX cũng nằm trong phần phụ thuộc này; xem mã mẫu trên GitHub để biết thông tin chi tiết về thư viện này.

Tài liệu tham khảo API cho thư viện hỗ trợ Thiết bị đeo

Tài liệu tham khảo cung cấp thông tin chi tiết về các lớp bạn sử dụng để triển khai mặt đồng hồ. Duyệt xem tài liệu tham khảo API cho thư viện hỗ trợ Thiết bị đeo.

Khai báo quyền

Mặt đồng hồ cần có quyền WAKE_LOCK. Thêm quyền sau đây vào các tệp kê khai của cả ứng dụng Wear OS và ứng dụng dành cho điện thoại trong phần tử manifest:

<manifest ...>
    <uses-permission
        android:name="android.permission.WAKE_LOCK" />

    <!-- Required for complications to receive complication data and open the provider chooser. -->
    <uses-permission
        android:name="com.google.android.wearable.permission.RECEIVE_COMPLICATION_DATA"/>
    ...
</manifest>

Hỗ trợ khởi động trực tiếp

Bạn phải cung cấp mặt đồng hồ trước khi mở khoá người dùng bằng cách làm theo hướng dẫn Khởi động trực tiếp:

  1. Đặt thuộc tính android:directBootAware thành true cho dịch vụ của bạn trong tệp kê khai.
  2. Mặt đồng hồ của bạn phải lưu trữ thông tin trong bộ nhớ đã mã hoá trên thiết bị.

Triển khai dịch vụ và phương thức gọi lại

Các mặt đồng hồ trong Wear OS được triển khai dưới dạng WatchFaceService. Để triển khai WatchFaceService, bạn cần tạo 3 đối tượng: UserStyleSchema, ComplicationSlotsManagerWatchFace.

Ba đối tượng này được chỉ định bằng cách ghi đè 3 phương thức trừu tượng của WatchFaceService, như trong ví dụ sau:

Kotlin

class CustomWatchFaceService : WatchFaceService() {

    /**
     * The specification of settings the watch face supports.
     * This is similar to a database schema.
     */
    override fun createUserStyleSchema(): UserStyleSchema = // ...

    /**
     * The complication slot configuration for the watchface.
     */
    override fun createComplicationSlotsManager(
        currentUserStyleRepository: CurrentUserStyleRepository
    ): ComplicationSlotsManager = // ...

    /**
     * The watch face itself, which includes the renderer for drawing.
     */
    override suspend fun createWatchFace(
        surfaceHolder: SurfaceHolder,
        watchState: WatchState,
        complicationSlotsManager: ComplicationSlotsManager,
        currentUserStyleRepository: CurrentUserStyleRepository
    ): WatchFace = // ...

}

Đăng ký dịch vụ mặt đồng hồ

Sau khi bạn triển khai dịch vụ mặt đồng hồ, hãy đăng ký phương thức triển khai trong tệp kê khai của ứng dụng dành cho thiết bị đeo. Khi người dùng cài đặt ứng dụng này, hệ thống sẽ sử dụng thông tin về dịch vụ để cung cấp mặt đồng hồ trong ứng dụng đồng hành Wear OS và trong bộ chọn mặt đồng hồ trên thiết bị đeo.

Mẫu sau đây cho biết cách đăng ký triển khai mặt đồng hồ trong phần tử <application>:

<service
    android:name=".AnalogWatchFaceService"
    android:label="@string/analog_name"
    android:permission="android.permission.BIND_WALLPAPER" >
    <meta-data
        android:name="android.service.wallpaper"
        android:resource="@xml/watch_face" />
    <meta-data
        android:name="com.google.android.wearable.watchface.preview_circular"
        android:resource="@drawable/preview_analog_circular" />
    <intent-filter>
        <action android:name="android.service.wallpaper.WallpaperService" />
        <category
            android:name=
            "com.google.android.wearable.watchface.category.WATCH_FACE" />
    </intent-filter>
</service>

Ứng dụng đồng hành Wear OS by Google và bộ chọn mặt đồng hồ trên thiết bị đeo sử dụng hình ảnh xem trước do mục siêu dữ liệu com.google.android.wearable.watchface.preview_circular xác định khi trình bày cho người dùng tất cả mặt đồng hồ được cài đặt trên thiết bị. Để nhận đối tượng có thể vẽ này, hãy chạy mặt đồng hồ trên thiết bị Wear OS hoặc trong một phiên bản trình mô phỏng rồi chụp ảnh màn hình. Trên thiết bị Wear có màn hình HDPI, hình ảnh xem trước thường có kích thước 320 x 320 pixel.

Mục siêu dữ liệu android.service.wallpaper chỉ định tệp tài nguyên watch_face.xml có chứa phần tử wallpaper như trong mẫu sau:

<?xml version="1.0" encoding="UTF-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android" />

Ứng dụng dành cho thiết bị đeo có thể chứa nhiều mặt đồng hồ. Bạn phải thêm mục dịch vụ vào tệp kê khai của ứng dụng dành cho thiết bị đeo đối với từng hoạt động triển khai mặt đồng hồ.

Hãy tham khảo các tài nguyên có liên quan sau đây: