Các ứng dụng Wear OS độc lập hoặc không độc lập

Stay organized with collections Save and categorize content based on your preferences.

Đề xuất mặc định là ứng dụng Wear OS hoạt động độc lập với điện thoại, vì vậy, người dùng có thể hoàn thành công việc trên đồng hồ mà không cần truy cập vào điện thoại Android hoặc iOS. Tuy nhiên, nếu ứng dụng của bạn yêu cầu tương tác qua điện thoại để ứng dụng đồng hồ hoạt động, thì bạn phải đánh dấu ứng dụng Wear OS là ứng dụng phục thuộc.

Lên kế hoạch cho ứng dụng của bạn

Bạn có thể sử dụng Android App Bundle để tự động tạo các tệp APK được tối ưu hoá cho cấu hình thiết bị của từng người dùng trong cùng một trang thông tin ứng dụng. Điều này cho phép người dùng chỉ tải xuống mã và tài nguyên cần thiết để chạy ứng dụng của bạn.

Để biết thông tin về cách thiết lập ứng dụng của bạn để phân phối thông qua Cửa hàng Google Play, hãy xem phần Đóng gói và phân phối Ứng dụng Wear OSHướng dẫn bắt đầu sử dụng Android App Bundle.

Nhìn chung, cấp độ API tối thiểu cho một ứng dụng Wear OS là API cấp 25 (Wear OS 2.0). Cấp API mục tiêu phải là API cấp 28 trở lên (đọc thêm), bạn nên đặt targetSdkVersion thành API cấp 30 (Wear OS 3) để đảm bảo ứng dụng của mình hoạt động tốt trên phiên bản nền tảng mới nhất.

Để biết thông tin về các yêu cầu mạng và quyền truy cập mạng băng thông cao, vui lòng xem phần Quyền truy cập mạng và đồng bộ hoá trên thiết bị Wear OS.

Định nghĩa ứng dụng là một ứng dụng Wear OS

Bạn phải xác định thẻ <uses-feature> trong tệp kê khai Android trong ứng dụng của mình. Ví dụ: cho biết đó là ứng dụng đồng hồ, như ở ví dụ sau:

  <manifest>
  ...
  <uses-feature android:name="android.hardware.type.watch" />
  ...
  </manifest>
  

Xác định ứng dụng là một ứng dụng độc lập

Ứng dụng Wear OS phải đặt phần tử meta-data com.google.android.wearable.standalone thành true hoặc false trong tệp kê khai Android.

Phần tử này cho biết ứng dụng đồng hồ của bạn có phải là một ứng dụng độc lập (độc lập) không yêu cầu thiết bị khác vận hành nhằm phục vụ chức năng cốt lõi hay không. Trong trường hợp này, bạn cần đặt chế độ cài đặt cho phần tử thành true.

Ứng dụng đồng hồ có thể được xem là một trong những ứng dụng sau:

  • Độc lập: ứng dụng hoàn toàn độc lập, không yêu cầu ứng dụng điện thoại phải vận hành nhằm phục vụ các tính năng cốt lõi, bao gồm cả tính năng xác thực; ứng dụng điện thoại sẽ chỉ cung cấp các tính năng không bắt buộc.
  • Không độc lập: ứng dụng phụ thuộc yêu cầu phải có một ứng dụng điện thoại hoặc một thiết bị khác cho các tính năng cốt lõi, bao gồm cả tính năng xác thực.

Nếu một ứng dụng đồng hồ hoàn toàn độc lập, thì ứng dụng đó sẽ thuộc danh mục độc lập. Bạn phải chỉ ra cách phân loại này cho Cửa hàng Google Play bằng cách đặt giá trị của phần tử meta-data này thành true:

<application>
...
  <meta-data
    android:name="com.google.android.wearable.standalone"
    android:value="true" />
...
</application>

Nếu một ứng dụng đồng hồ không độc lập, hãy đặt giá trị của phần tử meta-data ở trên thành false. Việc đặt phần tử thành false cho biết ứng dụng đồng hồ đó cần một thiết bị khác, nhưng điều này sẽ không ảnh hưởng đến việc quảng bá ứng dụng của bạn trên Cửa hàng Google Play.

Lưu ý: Ngay cả khi giá trị là false, bạn có thể cài đặt ứng dụng đồng hồ trước khi cài đặt ứng dụng điện thoại. Do đó, nếu ứng dụng đồng hồ phát hiện rằng điện thoại đồng hành thiếu ứng dụng điện thoại cần thiết, thì ứng dụng đồng hồ phải nhắc người dùng cài đặt ứng dụng điện thoại.

Bộ nhớ dữ liệu và mã dùng chung

Bạn có thể chia sẻ mã giữa ứng dụng trên thiết bị Wear OS và ứng dụng trên điện thoại. Nếu muốn, mã dành riêng cho một hệ số hình dạng có thể nằm trong một mô-đun riêng.

Ví dụ: mã phổ biến cho mạng có thể nằm trong thư viện dùng chung.

Bạn có thể sử dụng các API của bộ nhớ Android tiêu chuẩn để lưu trữ dữ liệu trên máy, như khi bạn lưu trữ trên điện thoại. Ví dụ: bạn có thể sử dụng các API SharedPreferences hoặc thư viện dữ liệu cố định Room.

Phát hiện ứng dụng của bạn trên một thiết bị khác

Ứng dụng đồng hồ của bạn có thể phát hiện xem có ứng dụng điện thoại tương ứng hay không và ngược lại.

Ứng dụng điện thoại hoặc ứng dụng đồng hồ của bạn có thể dùng CapabilityClient để cho biết sự hiện diện của ứng dụng trên một thiết bị đã ghép nối. Công cụ này có thể làm việc này theo cách tĩnh và động. Khi ứng dụng nằm trên một nút trong mạng Wear OS của người dùng (chẳng hạn như trên điện thoại, đồng hồ đã ghép nối hoặc trên đám mây), CapabilityClient sẽ cho phép một ứng dụng khác phát hiện xem ứng dụng đó đã được cài đặt chưa. Để biết thêm thông tin, hãy xem phần Khả năng báo hiệu.

Nếu một trong những ứng dụng của bạn không phát hiện được ứng dụng còn lại, bạn có thể cho phép người dùng mở trang thông tin trên Cửa hàng Play trên thiết bị từ xa của họ. Đây là giải pháp cho các ứng dụng đồng hồ yêu cầu phải có ứng dụng điện thoại đồng hành để có thể hoạt động bình thường. Điều kiện tiên quyết là kiểm tra sự hiện diện của Cửa hàng Play trên thiết bị từ xa.

Xin lưu ý rằng không phải mọi điện thoại đều hỗ trợ Cửa hàng Play (chẳng hạn như iPhone, v.v.).

Phần này mô tả các phương pháp hay nhất cho những tình huống sau:

  • Ứng dụng đồng hồ độc lập của bạn cần ứng dụng điện thoại
  • Ứng dụng điện thoại của bạn cần có ứng dụng đồng hồ độc lập

Xem xét mẫu trên GitHub cũng hỗ trợ chức năng này. Để biết thêm thông tin về các lớp được mô tả ở bên dưới, hãy xem Tài liệu tham khảo API về Wear OS. Tài liệu tham khảo này cũng cung cấp thông tin về lớp PhoneDeviceType, chứa phương thức getPhoneDeviceType() cho phép ứng dụng Wear OS kiểm tra xem điện thoại đồng hành là thiết bị Android hay iOS.

Chỉ định tên chức năng để phát hiện ứng dụng

Đối với ứng dụng tương ứng với từng loại thiết bị (đồng hồ hoặc điện thoại), hãy chỉ định một chuỗi duy nhất cho tên chức năng trong tệp res/values/wear.xml.

Ví dụ: trong mô-đun dành cho thiết bị di động, tệp wear.xml có thể bao gồm nội dung sau:

<resources xmlns:tools="http://schemas.android.com/tools"
        tools:keep="@array/android_wear_capabilities">
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_phone_app</item>
    </string-array>
</resources>

Trong mô-đun dành cho thiết bị Wear OS, tệp wear.xml sẽ bao gồm một giá trị khác cho tên chức năng, chẳng hạn như sau:

<resources xmlns:tools="http://schemas.android.com/tools"
        tools:keep="@array/android_wear_capabilities">
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_wear_app</item>
    </string-array>
</resources>

Để biết thêm thông tin, hãy xem phần Khả năng báo hiệu.

Phát hiện ứng dụng và mở URL từ một đồng hồ

Ứng dụng đồng hồ của bạn có thể phát hiện xem điện thoại đồng hành của người dùng có ứng dụng điện thoại hay không:

  1. Sử dụng CapabilityClient để kiểm tra xem ứng dụng điện thoại của bạn đã được cài đặt trên điện thoại đã ghép nối hay chưa. Để biết thêm thông tin, hãy xem mẫu trên kho lưu trữ GitHub.
  2. Nếu bạn chưa cài đặt ứng dụng điện thoại trên điện thoại, hãy sử dụng phương thức PhoneDeviceType.getPhoneDeviceType() để kiểm tra loại điện thoại.
  3. Nếu PhoneDeviceType.DEVICE_TYPE_ANDROID được trả về, thì điện thoại đó là điện thoại Android. Gọi RemoteActivityHelper.startRemoteActivity() trên thiết bị Wear OS để mở cửa hàng ứng dụng trên điện thoại. Sử dụng URI thị trường cho ứng dụng dành cho điện thoại của bạn (có thể khác với URI điện thoại của bạn). Chẳng hạn sử dụng URI thị trường như: market://details?id=com.example.android.wearable.wear.finddevices
  4. Nếu PhoneDeviceType.DEVICE_TYPE_IOS được trả về, nghĩa là điện thoại đó là điện thoại iOS (không có Cửa hàng Play). Mở App Store trên iPhone bằng cách gọi RemoteActivityHelper.startRemoteActivity() trên thiết bị Wear. Bạn có thể chỉ định URL cho iTunes của ứng dụng, ví dụ: https://itunes.apple.com/us/app/yourappname. Trên iPhone, từ Wear OS, bạn không thể lập trình để xác định xem ứng dụng dành cho điện thoại đã được cài đặt hay chưa. Cách tốt nhất là cung cấp một cơ chế cho người dùng (ví dụ: một nút) để kích hoạt thao tác mở App Store theo cách thủ công.

Xin lưu ý rằng khi sử dụng API RemoteActivityHelper như mô tả ở trên, bạn có thể chỉ định mọi URL mở trên điện thoại qua đồng hồ và không yêu cầu ứng dụng điện thoại.

Thông tin chi tiết để phát hiện loại điện thoại đã ghép nối

Dưới đây là một đoạn mã sử dụng phương thức getPhoneDeviceType() để kiểm tra loại điện thoại đang ghép nối với đồng hồ:

Kotlin

var phoneDeviceType: Int = PhoneDeviceType.getPhoneDeviceType(context)

Java

int phoneDeviceType = PhoneDeviceType.getPhoneDeviceType(context);

Giá trị mà phương thức getPhoneDeviceType() trả về là một trong những giá trị sau:

Giá trị trả về Mô tả
DEVICE_TYPE_ANDROID Điện thoại đồng hành là một thiết bị Android.
DEVICE_TYPE_IOS Điện thoại đồng hành là một thiết bị iOS.
DEVICE_TYPE_ERROR_UNKNOWN Đã xảy ra lỗi khi xác định loại điện thoại đã ghép nối; bạn nên kiểm tra lại sau.

Phát hiện ứng dụng bắt đầu từ một điện thoại Android

Điện thoại Android có thể phát hiện nếu các thiết bị Wear OS của người dùng có ứng dụng đồng hồ:

  1. Sử dụng NodeClient để tìm tất cả đồng hồ được kết nối với điện thoại của người dùng. Để biết thêm thông tin, hãy xem mẫu trên kho lưu trữ GitHub.
  2. Sử dụng CapabilityClient để kiểm tra xem đồng hồ nào của người dùng đã cài đặt ứng dụng của bạn.
  3. Nếu ứng dụng của bạn chưa được cài đặt trên tất cả đồng hồ của người dùng (so sánh kết quả từ Bước 1 với kết quả từ Bước 2), hãy cho phép người dùng mở Cửa hàng Play trên các thiết bị Wear OS còn lại từ điện thoại qua phương thức RemoteActivityHelper.startRemoteActivity(). Cụ thể, hãy sử dụng URI thị trường cho ứng dụng Wear OS (có thể khác với URI của ứng dụng dành cho điện thoại). Chẳng hạn sử dụng URI thị trường như: market://details?id=com.example.android.wearable.wear.finddevices

Dữ liệu vị trí của đồng hồ đã ghép nối với iPhone

Đối với đồng hồ được ghép nối với iPhone, nhà phát triển nên sử dụng Trình cung cấp vị trí kết hợp (FLP) để nhận dữ liệu vị trí trên đồng hồ. Xem phần Phát hiện thông tin vị trí trên thiết bị Wear OS.

Nếu có sẵn điện thoại đồng hành, FLP sẽ sử dụng điện thoại đồng hành cho dữ liệu vị trí.

Chỉ thu thập dữ liệu cần thiết

Nhìn chung, khi lấy dữ liệu từ Internet, bạn chỉ nên lấy những dữ liệu cần thiết. Nếu không, bạn có thể tạo ra độ trễ, mức sử dụng bộ nhớ và mức sử dụng pin không cần thiết.

Khi đồng hồ được kết nối qua kết nối Bluetooth LE (bluetooth năng lượng thấp), ứng dụng của bạn có thể có quyền truy cập vào băng thông chỉ 4 kilobyte mỗi giây, tuỳ thuộc vào đồng hồ. Do đó, chúng tôi đề xuất các bước sau:

  • Kiểm tra các yêu cầu và phản hồi của mạng để biết thêm dữ liệu chỉ dành cho ứng dụng điện thoại
  • Thu gọn hình ảnh lớn trước khi gửi qua mạng đến đồng hồ

Đối với các trường hợp cần mạng băng thông cao, hãy xem phần Truy cập mạng băng thông cao.

Mã mẫu khác

Mẫu WearVerifyRemoteApp minh hoạ thêm về việc sử dụng các API được trình bày trên trang này.