Ứng dụng Wear OS độc lập so với ứng dụng Wear OS không độc lập

Ứng dụng Wear OS nên hoạt động độc lập với điện thoại để 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. Nếu ứng dụng đồng hồ yêu cầu tương tác qua điện thoại, thì bạn phải đánh dấu ứng dụng Wear OS là không độc lập và thực hiện các bước để đảm bảo người dùng có sẵn ứng dụng điện thoại.

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 Gói ứng dụng Android (APK) được tối ưu hoá cho từng cấu hình thiết bị của người dùng trong cùng một trang thông tin ứng dụng. Điều này giúp người dùng chỉ tải mã và tài nguyên cần thiết xuống để chạy ứng dụng của bạn.

Để biết thông tin về cách thiết lập ứng dụng để phân phối thông qua Cửa hàng Google Play, hãy xem bài viết Đóng gói và phân phối Ứng dụng Wear OS và hướ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. Để biết thêm thông tin, hãy xem bài viết Đáp ứng yêu cầu về cấp độ API mục tiêu của Google Play. Đặt targetSdkVersion thành API cấp 30 (Wear OS 3) để đảm bảo ứng dụng của bạn 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 bài viết Quyền truy cập mạng và hoạt động đồng bộ hoá trên Wear OS.

Xác định ứ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 của ứng dụng. Để cho biết đó là ứng dụng đồng hồ, hãy thêm một mục như sau:

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

Xác định ứng dụng là ứng dụng độc lập hoặc không độc lập

Ứng dụng đồng hồ vừa được coi là ứng dụng độc lập lẫn ứng dụng không độc lập:

  • Độc lập: là một ứng dụng hoàn toàn độc lập không cần đến ứng dụng điện thoại 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 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: là một ứng dụng phụ thuộc cần phải có một ứng dụng trên đ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.

Trong ứng dụng Wear OS, hãy đặt giá trị của phần tử meta-data com.google.android.wearable.standalone trong tệp kê khai Android để khai báo ứng dụng của bạn là độc lập hay không độc lập.

Nếu ứng dụng đồng hồ của bạn là một ứng dụng hoàn toàn độc lập, hãy cho Cửa hàng Google Play biết điều này bằng cách đặt giá trị của com.google.android.wearable.standalone thành true:

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

Nếu ứng dụng đồng hồ của bạn là một ứng dụng không độc lập, đồng thời phụ thuộc vào một ứng dụng khác cho các tính năng cốt lõi, thì hãy đặt giá trị của com.google.android.wearable.standalone thành false. Điều này cho thấy ứng dụng đồng hồ đó cần một thiết bị khác, nhưng không ảnh hưởng đến việc quảng cáo cho ứng dụng của bạn trên Cửa hàng Google Play.

Lưu ý: Ngay cả khi giá trị của com.google.android.wearable.standalonefalse, 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ồ của bạn phát hiện thấy rằng điện thoại đồng hành thiếu ứng dụng điện thoại cần thiết, như mô tả trên trang này, thì hãy 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ể dùng chung mã giữa ứng dụng Wear OS và ứng dụng điện thoại. Ví dụ: mã phổ biến để kết nối mạng có thể nằm trong thư viện chia sẻ.

Nếu muốn, mã dành riêng cho một kiểu dáng có thể nằm trong một mô-đun riêng.

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

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

Ứng dụng đồng hồ và ứng dụng điện thoại có thể dùng CapabilityClient để cho biết sự hiện diện của chúng trên một thiết bị đã ghép nối. Chúng có thể thực hiện theo cách tĩnh hoặc động.

Khi ứng dụng nằm trên một nút trong mạng lưới 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 các ứng dụng khác phát hiện thấy ứng dụng đó. Để biết thêm thông tin, hãy xem phần Quảng cáo các tính năng.

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ể nhắc người dùng mở trang thông tin trên Cửa hàng Play trên thiết bị bị ảnh hưởng. Đây là giải pháp cho các ứng dụng đồng hồ cần có ứng dụng điện thoại đồng hành để hoạt động bình thường.

Bạn phải kiểm tra xem Cửa hàng Play có hoạt động trên thiết bị hay không vì không phải điện thoại nào (chẳng hạn như iPhone) cũng hỗ trợ Cửa hàng Play.

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

  • Ứ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 ứng dụng đồng hồ độc lập.

Bạn cũng có thể xem ứng dụng mẫu minh hoạ tính năng này trên GitHub. Để biết thêm thông tin về các lớp được mô tả trong phần sau, hãy xem Tài liệu tham khảo API về Wear OS. Tài liệu tham khảo đó cũng bao gồm thông tin về lớp PhoneTypeHelper 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 tính 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ị, như đồng hồ hoặc điện thoại, hãy chỉ định một chuỗi duy nhất cho tên tính 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 tính 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 Quảng cáo các tính năng.

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. Hãy làm theo các bước sau:

  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 ứng dụng mẫu trên 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. Hãy xem phần sau để biết thông tin chi tiết.
  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 Play trên điện thoại. Hãy sử dụng URI thị trường cho ứng dụng điện thoại của bạn. URI này có thể khác với URI của ứng dụng Wear. Chẳng hạn, hãy 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ề, thì đ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 OS. Bạn có thể chỉ định URL cho iTunes của ứng dụng, chẳng hạn như https://itunes.apple.com/us/app/yourappname.

    Trên Wear OS, bạn không thể lập trình để xác định xem ứng dụng điện thoại đã được cài đặt trên thiết bị iOS hay chưa. Cách tốt nhất là cung cấp cơ chế để người dùng kích hoạt thao tác mở Cửa hàng ứng dụng theo cách thủ công.

Lưu ý: Hãy dùng API RemoteActivityHelper được mô tả trước đó để chỉ định rằng mọi URL được mở trên điện thoại qua đồng hồ và không cần có ứ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_UNKNOWN Điện thoại đồng hành là một thiết bị không xác định.
DEVICE_TYPE_ERROR Đã 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ồ. Hãy làm theo các bước sau:

  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 ứng dụng mẫu trên 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 mọi đồng hồ của người dùng, 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 bằng phương thức RemoteActivityHelper.startRemoteActivity(). Hãy sử dụng URI thị trường cho ứng dụng Wear OS (có thể khác so với URI của ứng dụng đ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, hãy 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ồ. Để biết thêm thông tin, hãy xem bài viết 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 trên 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ỉ cần thiết cho ứng dụng điện thoại.
  • Thu gọn hình ảnh lớn trước khi bạn gửi đến đồng hồ qua mạng.

Đố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.