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 qua mạng, vì điều này giúp ứng dụng được coi là một ứng dụng độc lập.

Gửi và đồng bộ hoá dữ liệu trực tiếp qua 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 bổ sung 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:

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

  dependencies {
    ...
    implementation 'com.google.android.gms:play-services-wearable:18.1.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 trực tiếp với mạng để lấy dữ liệu được, 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ề việc nốt (node) nào trên mạng Wear OS hỗ trợ chức năng tuỳ chỉnh nào của ứng dụng. 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 tại thời gian xây dựng hoặc định cấu hình động trong thời gian chạy.
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 video. Khi phiên bản dành cho thiết bị đeo của ứng dụng đượ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.
A 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 đó. Chỉ ứng dụng này 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, cố định, 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.

Cảnh báo: Các mục sẽ được chuyển sang mọi thiết bị Wear OS có sẵn, ngay cả những thiết bị đó chưa cài đặt ứng dụng của bạn. Nếu đồng bộ hoá nhiều dữ liệu, hãy cân nhắc kiểm tra xem ứng dụng "receiver" (trình thu nhận) đã được cài đặt chưa và có đang kết nối mạng không để tránh lãng phí tài nguyên trên cả thiết bị cầm tay lẫn thiết bị Wear OS.

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ó 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
Mẫu hoạt động kết nối Tài nguyên dựa trên mạng dùng chung Truyền tin nhắn 1:1 (có phản hồi) Truyền trực tiếp 1:1

Khả năng kết nối

Lớp dữ liệu giao tiếp qua hai cách:

  1. Trao đổi dữ liệu trực tiếp khi đã có kết nối Bluetooth giữa đồng hồ và một thiết bị khác.
  2. Trao đổi dữ liệu qua mạng có sẵn như LTE hoặc WiFi.
Hình 1. Một hệ thống mạng mẫu gồm các nút chứa thiết bị cầm tay và thiết bị đeo.

Tất cả ứng dụng Lớp dữ liệu đều có thể trao đổi dữ liệu qua Bluetooth hoặc dùng Dịch vụ đồng bộ hoá đám mây của Google (Google Cloud Sync), tuỳ thuộc vào loại kết nối có trên thiết bị. Dịch vụ đồng bộ hoá đám mây là cơ chế của Google để truyền và trao đổi dữ liệu giữa thiết bị đeo và điện thoại khi không có Bluetooth.

Bảo mật

Cả hai phương thức giao tiếp là Bluetooth và Dịch vụ đồng bộ hoá đám mây đều được mã hoá hai đầu.

Dịch vụ Google Play thực thi các hạn chế sau đây để đảm bảo việc giao tiếp giữa điện thoại và đồng hồ được bảo mật, đồng thời, chỉ giao tiếp giữa ứng dụng với ứng dụng.

  • Tên gói phải giống nhau trên các thiết bị.
  • Chữ ký của gói phải giống nhau trên các thiết bị.

Bluetooth

Khi các thiết bị được kết nối bằng Bluetooth, Lớp dữ liệu sẽ sử dụng loại kết nối này. Khi sử dụng Bluetooth, Dịch vụ Google Play quản lý một kênh mã hoá (bằng phương thức mã hoá Bluetooth tiêu chuẩn) duy nhất giữa các thiết bị.

Đám mây

Giả sử tại một thời điểm nào đó, dữ liệu được truyền tại Lớp dữ liệu có thể sử dụng máy chủ do Google sở hữu. Ví dụ: DataClient, MessageClient hoặc ChannelClient sẽ tự động định tuyến tới Google Cloud khi không có Bluetooth. Tất cả dữ liệu được chuyển thông qua Google Cloud đều được mã hoá hai đầu.

Tạo và lưu trữ khoá

Các khoá hai đầu được tạo từ điện thoại có thể hỗ trợ việc giao tiếp dựa trên đám mây và trao đổi dữ liệu trực tiếp với đồng hồ khi hai thiết bị kết nối với nhau qua Bluetooth. Điều này xảy ra trong quá trình thiết lập thiết bị. Máy chủ do Google sở hữu không nhận được các khoá này tại bất kỳ thời điểm nào.

Bạn không thể giao tiếp thông qua máy chủ do Google sở hữu cho đến khi quá trình tạo khoá hai đầu hoàn tất. Khoá được lưu trữ trong bộ nhớ tệp riêng tư của Dịch vụ Google Play trên mọi thiết bị đã ghép nối.

Sao lưu thiết bị

Các khoá sẽ không được sao lưu và chỉ tồn tại trong thiết bị. Nếu cần phải tạo khoá mới, chẳng hạn như dành cho điện thoại mới, thì hệ thống sẽ tự động tạo và chia sẻ khoá mới cho các thiết bị mà người dùng vẫn đang sử dụng.