Ứ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.

Đối với ứng dụng mới, cấp độ API mục tiêu phải từ 30 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à một ứ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: một ứng dụng hoàn toàn độc lập, không cần đến ứng dụng điện thoại làm cốt lõi các tính năng AI mới. Mặc dù "Mở trên điện thoại" câu lệnh được chấp nhận, ứng dụng phải cung cấp câu lệnh thay thế có nghĩa là người dùng hoàn tất một chức năng của ứng dụng—chẳng hạn như đường liên kết ngắn hoặc mã QR—mà không phụ thuộc vào trên điện thoại được chia sẻ Internet.
  • Không độc lập: một ứng dụng phụ thuộc cần có một ứng dụng trên điện thoại hoặc một thiết bị khác để các tính năng cốt lõi. Đây là lựa chọn phù hợp nhất cho những ứng dụng không thể dễ dàng cung cấp một phương tiện thay thế—chẳng hạn như mã QR hoặc đường liên kết ngắn—cho hoàn thành một chức năng cốt lõi của ứng dụng, chẳng hạn như xác thực.

Lưu ý: Ngay cả đối với các ứng dụng không độc lập, người dùng vẫn có thể cài đặt ứng dụng Wear OS trước ứng dụng dành cho thiết bị di động. Vì vậy, nếu ứng dụng Wear OS phát hiện thấy thiết bị cầm tay ở gần thiếu ứng dụng đồng hành cần thiết, nhắc người dùng để cài đặt ứng dụng đồng hành.

Google kiểm tra tính chính xác của trạng thái độc lập của ứng dụng trong quá trình phát hành ứng dụng đầu cuối. Giá trị này ảnh hưởng đến khả năng hiển thị của các ứng dụng trong Cửa hàng Play trên thiết bị không chia sẻ Internet, chẳng hạn như thiết bị Wear OS không được ghép nối với thiết bị cầm tay thiết bị. Ứng dụng không độc lập — cũng như các ứng dụng mà nhà phát triển sử dụng sai chỉ định là "độc lập"—người dùng không sử dụng được trên các ứng dụng không chia sẻ Internet này thiết bị.

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 Mẫu trình trợ giúp Datalayer, cho biết cách sử dụng Các thư viện trình trợ giúp Datalayer, một phần của Thợ làm đồng hồ. Các trình trợ giúp này cho phép bạn giám sát kết nối giữa một thiết bị cầm tay và một thiết bị Wear OS. Thông tin khác về lớp được mô tả trong phần sau, hãy xem Tài liệu tham khảo về API cho Wear OS. Tài liệu tham khảo đó cũng bao gồm thông tin về Lớp PhoneTypeHelper chứa một lớp 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 Mẫu trình trợ giúp Datalayer 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 Mẫu trình trợ giúp Datalayer 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

Chiến lược phát hành đĩa đơn Mẫu trình trợ giúp Datalayer minh hoạ thêm về cách sử dụng các API được trình bày trên trang này.