Gửi và đồng bộ hoá dữ liệu trên Wear OS

Với Wear OS by Google, đồng hồ có nhiều cách để gửi và đồng bộ hoá dữ liệu. Bạn nên gửi và đồng bộ hoá dữ liệu trực tiếp từ mạng thay vì sử dụng Data Layer API (API Lớp dữ liệu) trên thiết bị đeo.

Gửi và đồng bộ hoá dữ liệu trực tiếp từ mạng

Xây dựng các ứng dụng Wear OS để giao tiếp trực tiếp qua mạng. Bạn có thể sử dụng cùng các API mà bạn dùng để phát triển cho thiết bị di động, nhưng hãy lưu ý một số điểm khác biệt dành riêng cho thiết bị Wear OS.

Gửi và đồng bộ hoá dữ liệu bằng API Lớp dữ liệu trên thiết bị đeo

API Lớp dữ liệu trên thiết bị đeo là một phần của Dịch vụ Google Play, cung cấp một kênh liên lạc tuỳ chọn cho các ứng dụng.

API này chỉ có trên đồng hồ Wear OS và các thiết bị Android được ghép nối. Đối với đồng hồ Wear OS được ghép nối với điện thoại iOS, ứng dụng có thể truy vấn các API khác trên đám mây nếu có kết nối Internet.

API Lớp dữ liệu trên thiết bị đeo có các phần phụ thuộc sau:

Ngoài ra, bạn phải sử dụng cùng một khoá để ứng dụng dành cho đồng hồ và điện thoại.

Đưa phần phụ thuộc sau vào tệp build.gradle của mô-đun Wear:

  dependencies {
    ...
    implementation 'com.google.android.gms:play-services-wearable:18.0.0'
  }
  

Ứng dụng cho thiết bị đeo nên gửi và đồng bộ hoá dữ liệu trực tiếp từ mạng hoặc điện thoại được kết nối. Tuy nhiên, nếu muốn giao tiếp trực tiếp giữa các thiết bị ở định dạng RPC, hoặc không kết nối được mạng trực tiếp để lấy dữ liệu, bạn có thể sử dụng API Lớp dữ liệu trên thiết bị đeo theo những cách sau.

Thông báo và truy vấn các tính năng từ xa
CapabilityClient cung cấp thông tin về các nút trên mạng Wear OS hỗ trợ các chức năng của ứng dụng tuỳ chỉnh. Các nút này đại diện cho cả thiết bị di động và thiết bị đeo được kết nối mạng. Chức năng là một tính năng mà ứng dụng xác định.
Ví dụ: ứng dụng Android dành cho thiết bị di động có thể quảng cáo về việc ứng dụng này hỗ trợ điều khiển từ xa để phát lại video. Khi phiên bản của ứng dụng dành cho thiết bị đeo được cài đặt, ứng dụng đó có thể dùng CapabilityClient để kiểm tra xem phiên bản dành cho thiết bị di động của ứng dụng đó đã được cài đặt và hỗ trợ tính năng này hay chưa. Nếu có, ứng dụng cho thiết bị đeo có thể hiển thị nút phát/tạm dừng để điều khiển video trên thiết bị khác bằng một thông báo.
Quy trình này cũng có thể hoạt động theo hướng ngược lại, với tính năng được liệt kê trong ứng dụng dành cho thiết bị đeo ứng dụng hỗ trợ.
Gửi thông báo
MessageClient có thể gửi thông báo, phù hợp với các lệnh gọi quy trình từ xa (RPC), chẳng hạn như dùng thiết bị đeo để điều khiển trình phát nội dung nghe nhìn trên thiết bị cầm tay, hoặc bắt đầu một ý định trên thiết bị đeo từ thiết bị cầm tay. Tin nhắn cũng phù hợp với các yêu cầu một chiều hoặc mô hình giao tiếp yêu cầu hoặc phản hồi.
Nếu thiết bị cầm tay và thiết bị đeo được kết nối, thì hệ thống sẽ xếp thông báo vào hàng đợi để gửi và trả về mã kết quả thành công. Nếu thiết bị không được kết nối thì hệ thống sẽ trả về mã kết quả lỗi. Mã kết quả thành công không có nghĩa là thông báo được gửi thành công vì các thiết bị có thể ngắt kết nối sau khi nhận được mã kết quả.
Chuyển dữ liệu
ChannelClient có thể chuyển dữ liệu từ một thiết bị cầm tay sang một thiết bị đeo. Với ChannelClient, bạn có thể thực hiện những việc sau:
  • Chuyển các tệp dữ liệu giữa hai hoặc nhiều thiết bị được kết nối khi không có Internet mà không được cung cấp tính năng đồng bộ hoá tự động khi sử dụng các đối tượng Asset được đính kèm vào đối tượng DataItem. ChannelClient lưu dung lượng ổ đĩa qua DataClient, việc này sẽ tạo bản sao của các thành phần trên thiết bị cục bộ trước khi đồng bộ hoá với các thiết bị đã kết nối.
  • Gửi một tệp có kích thước quá lớn nên không thể gửi bằng MessageClient.
  • Chuyển dữ liệu phát trực tuyến, chẳng hạn như dữ liệu thoại từ micrô.
Đồng bộ hoá dữ liệu
DataClient hiển thị API để các thành phần đọc hoặc ghi vào DataItem hoặc Asset.
DataItem được đồng bộ hoá trên mọi thiết bị trong mạng Wear OS. Bạn có thể đặt các mục dữ liệu trong khi không kết nối với bất kỳ nút nào. Các mục dữ liệu đó được đồng bộ hoá khi các nút kết nối mạng.
Các mục dữ liệu là riêng tư đối với ứng dụng đã tạo các mục đó, và chỉ ứng dụng đó mới có thể truy cập vào các mục đó trên các nút khác. Chúng thường có kích thước nhỏ. Sử dụng Assets để chuyển các đối tượng dữ liệu lớn hơn, ổn định hơn, chẳng hạn như hình ảnh.
Wear OS hỗ trợ nhiều thiết bị đeo kết nối với một thiết bị cầm tay. Ví dụ: khi người dùng lưu ghi chú trên thiết bị cầm tay, ghi chú đó sẽ tự động xuất hiện trên mọi thiết bị Wear OS của người dùng. Để giúp đồng bộ hoá dữ liệu giữa các thiết bị, máy chủ của Google lưu trữ một nút đám mây trong mạng của thiết bị. Hệ thống này sẽ đồng bộ hoá dữ liệu với các thiết bị được kết nối trực tiếp, nút đám mây và với các thiết bị đeo kết nối với nút đám mây bằng Wi-Fi.
Hình 1. Một mạng mẫu gồm các nút với thiết bị cầm tay và thiết bị đeo.
Nghe các sự kiện lớp dữ liệu quan trọng (đối với dịch vụ)
Việc mở rộng WearableListenerService cho phép bạn nghe các sự kiện lớp dữ liệu quan trọng trong một dịch vụ. Hệ thống sẽ quản lý vòng đời của WearableListenerService, liên kết với dịch vụ khi cần gửi các mục dữ liệu hoặc thông báo, và huỷ liên kết dịch vụ khi không cần hoạt động nào.
Nghe các sự kiện lớp dữ liệu quan trọng (đối với các hoạt động trên nền trước)
Việc triển khai OnDataChangedListener trong một hoạt động cho phép bạn nghe các sự kiện quan trọng của lớp dữ liệu khi một hoạt động đang chạy ở nền trước. Việc sử dụng thuộc tính này thay vì WearableListenerService chỉ cho phép bạn nghe các thay đổi chỉ khi người dùng đang sử dụng ứng dụng của bạn.

Cảnh báo: Để thiết lập hoạt động giao tiếp giữa thiết bị cầm tay và thiết bị đeo, bạn chỉ nên sử dụng các API này vì chúng được thiết kế cho hoạt động đó. Ví dụ: đừng cố mở ổ cắm cấp thấp để tạo kênh giao tiếp.

So sánh ứng dụng

Bảng sau đây trình bày các yêu cầu và trường hợp sử dụng cho từng ứng dụng.

Ứng dụng dữ liệu Ứng dụng nhắn tin Ứng dụng kênh
Kích thước dữ liệu lớn hơn 100 kb Không
Cần có kết nối mạng, chẳng hạn như lưu dữ liệu vào đám mây Sử dụng Bluetooth Sử dụng Bluetooth
Có thể gửi thông báo đến các nút hiện chưa được kết nối Không Không
Có thể gửi từ thiết bị này sang thiết bị khác, chẳng hạn như từ thiết bị đeo sang thiết bị di động Không, từ đám mây đến tất cả các nút Có, cho cả yêu cầu một chiều và yêu cầu hai chiều
Hỗ trợ truyền dữ liệu cho tất cả các thiết bị Không Không
Độ tin cậy Có, khi kết nối Bluetooth được thiết lập

Lưu ý quan trọng: Chữ ký APK trên điện thoại và trên thiết bị Wear OS của bạn và lược đồ chữ ký phải giống nhau để API Lớp dữ liệu trên thiết bị đeo có thể giao tiếp thành công giữa các thiết bị. Điều này bao gồm việc bạn sử dụng chữ ký v1 hoặc v2. Đảm bảo lược đồ chữ ký được đặt chính xác trong build.gradle hoặc khi bạn sử dụng trình hướng dẫn Tạo APK đã ký.