Aplikasi Wear OS mandiri versus non-mandiri

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Rekomendasi default-nya adalah agar aplikasi Wear OS dapat berfungsi secara terpisah dari ponsel sehingga pengguna dapat menyelesaikan tugas pada smartwatch, tanpa perlu mengakses ponsel Android atau iOS. Namun, jika aplikasi memerlukan interaksi ponsel agar aplikasi smartwatch dapat berfungsi, aplikasi Wear OS harus ditandai sebagai dependen.

Merencanakan aplikasi Anda

Anda dapat menggunakan Android App Bundle secara otomatis untuk membuat APK yang dioptimalkan untuk setiap konfigurasi perangkat pengguna pada listingan aplikasi yang sama. Tindakan ini memungkinkan pengguna untuk hanya mendownload kode dan resource yang dibutuhkan untuk menjalankan aplikasi Anda.

Untuk mengetahui informasi tentang cara menyiapkan aplikasi untuk didistribusikan melalui Google Play Store, lihat Memaketkan dan mendistribusikan Aplikasi Wear OS dan Panduan memulai Android App Bundle.

Umumnya, API level minimum untuk aplikasi Wear OS adalah API level 25 (Wear OS 2.0). API level target harus berupa API level 28 atau yang lebih tinggi (baca selengkapnya), sebaiknya tetapkan targetSdkVersion ke API level 30 (Wear OS 3) untuk memastikan aplikasi Anda berfungsi dengan baik di versi platform terbaru.

Untuk mengetahui informasi tentang permintaan jaringan dan akses jaringan bandwidth tinggi, lihat Akses dan sinkronisasi jaringan di Wear OS.

Menetapkan aplikasi sebagai aplikasi Wear OS

Anda harus menentukan tag <uses-feature> dalam file Manifes Android di aplikasi Anda. Misalnya, tunjukkan bahwa itu adalah aplikasi smartwatch, seperti yang ditunjukkan dalam contoh berikut:

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

Mengidentifikasi aplikasi sebagai mandiri

Aplikasi Wear OS harus menetapkan elemen meta-data, com.google.android.wearable.standalone, ke true atau false dalam file manifes Android.

Elemen ini menunjukkan apakah aplikasi smartwatch Anda adalah aplikasi mandiri (independen) yang tidak memerlukan perangkat lain untuk beroperasi untuk fungsi inti. Dalam hal ini, Anda perlu menetapkan setelan untuk elemen ke true.

Aplikasi smartwatch dapat dianggap sebagai salah satu dari berikut ini:

  • Mandiri: aplikasi yang sepenuhnya independen dan tidak memerlukan aplikasi telepon untuk fitur inti, termasuk autentikasi; aplikasi telepon hanya akan menyediakan fitur opsional.
  • Non-standalone: aplikasi dependen yang memerlukan aplikasi telepon atau perangkat lain untuk fitur inti, termasuk autentikasi.

Jika sepenuhnya independen, aplikasi smartwatch termasuk dalam kategori mandiri. Anda harus menunjukkan kategorisasi ini ke Google Play Store dengan menetapkan nilai elemen meta-data ini ke true:

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

Jika aplikasi smartwatch tidak mandiri, tetapkan nilai elemen meta-data di atas ke false. Menetapkan elemen ini ke false menandakan bahwa aplikasi smartwatch memerlukan perangkat lain, tetapi tidak akan memengaruhi promosi aplikasi Anda di Google Play Store.

Catatan: Meskipun nilainya false, aplikasi smartwatch dapat diinstal sebelum aplikasi ponsel diinstal. Oleh karena itu, jika aplikasi smartwatch mendeteksi bahwa ponsel pendamping tidak memiliki aplikasi ponsel yang diperlukan, aplikasi smartwatch akan meminta pengguna untuk menginstal aplikasi ponsel tersebut.

Kode dan penyimpanan data bersama

Kode dapat digunakan bersama antara aplikasi Wear OS dan aplikasi ponsel. Kode khusus faktor bentuk juga dapat berada dalam modul terpisah.

Misalnya, kode umum untuk jaringan dapat berada dalam library bersama.

Anda dapat menggunakan API penyimpanan Android standar untuk menyimpan data secara lokal, seperti yang dilakukan di ponsel. Misalnya, Anda dapat menggunakan API SharedPreferences atau library persistensi Room.

Mendeteksi aplikasi di perangkat lain

Aplikasi smartwatch dapat mendeteksi apakah aplikasi ponsel terkait tersedia, begitu pula sebaliknya.

Aplikasi smartwatch atau aplikasi ponsel dapat menggunakan CapabilityClient untuk memberitahukan kehadiran aplikasi ke perangkat yang disambungkan. Hal ini dapat dilakukan secara statis dan dinamis. Saat aplikasi berada di node dalam jaringan Wear OS pengguna (misalnya di ponsel, smartwatch yang disambungkan, atau di cloud), CapabilityClient memungkinkan aplikasi lain mendeteksi apakah aplikasi tersebut diinstal. Untuk mengetahui informasi selengkapnya, lihat Memberitahukan kapabilitas.

Jika salah satu aplikasi tidak dapat mendeteksi aplikasi lainnya, Anda dapat memungkinkan pengguna membuka listingan Play Store di perangkat jarak jauh. Solusi ini ditujukan untuk aplikasi smartwatch yang memerlukan kehadiran aplikasi ponsel pendamping agar dapat berfungsi dengan baik. Prasyaratnya adalah memeriksa kehadiran Play Store di perangkat jarak jauh.

Perlu diketahui bahwa tidak semua ponsel mendukung Play Store (misalnya iPhone, dsb.).

Bagian ini menjelaskan praktik terbaik untuk skenario berikut:

  • Aplikasi smartwatch mandiri memerlukan aplikasi ponsel
  • Aplikasi ponsel memerlukan aplikasi smartwatch mandiri

Tinjau contoh di GitHub yang menampilkan fungsi ini. Untuk mengetahui informasi selengkapnya tentang class yang dijelaskan di bawah, lihat Referensi API Wear OS. Dalam referensi tersebut juga terdapat informasi tentang class PhoneDeviceType, yang berisi metode getPhoneDeviceType() yang memungkinkan aplikasi Wear OS untuk memeriksa apakah ponsel pendamping adalah perangkat Android atau iOS.

Menentukan nama kapabilitas untuk mendeteksi aplikasi

Untuk aplikasi terkait setiap jenis perangkat (smartwatch atau ponsel), tentukan string unik untuk nama kapabilitas dalam file res/values/wear.xml.

Misalnya, dalam modul seluler, file wear.xml dapat berisi:

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

Dalam modul Wear OS, file wear.xml akan berisi nilai yang berbeda untuk nama kapabilitas, seperti berikut:

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

Untuk mengetahui informasi selengkapnya, lihat Memberitahukan kapabilitas.

Pendeteksian aplikasi dan membuka URL dari smartwatch

Aplikasi smartwatch dapat mendeteksi apakah ponsel pendamping pengguna memiliki aplikasi ponsel:

  1. Gunakan CapabilityClient untuk memeriksa apakah aplikasi ponsel diinstal pada ponsel yang disambungkan. Untuk mengetahui informasi selengkapnya, lihat contoh di GitHub.
  2. Jika aplikasi ponsel tidak diinstal di ponsel, gunakan metode PhoneDeviceType.getPhoneDeviceType() untuk memeriksa jenis ponsel.
  3. Jika PhoneDeviceType.DEVICE_TYPE_ANDROID ditampilkan, berarti ponsel adalah ponsel Android. Panggil RemoteActivityHelper.startRemoteActivity() di perangkat Wear OS untuk membuka app store di ponsel. Gunakan URI market untuk aplikasi ponsel (yang mungkin berbeda dari URI ponsel). Misalnya, gunakan URI market seperti: market://details?id=com.example.android.wearable.wear.finddevices
  4. Jika PhoneDeviceType.DEVICE_TYPE_IOS ditampilkan, berarti ponsel adalah ponsel iOS (Play Store tidak tersedia). Buka App Store di iPhone dengan memanggil RemoteActivityHelper.startRemoteActivity() di perangkat Wear. Anda dapat menentukan URL iTunes aplikasi, misalnya, https://itunes.apple.com/us/app/yourappname. Dari Wear OS di iPhone, Anda tidak dapat menentukan secara terprogram apakah aplikasi ponsel sudah diinstal. Sebagai praktik terbaik, sediakan mekanisme bagi pengguna (misalnya tombol) untuk memicu pembukaan App Store secara manual.

Perlu diketahui bahwa dengan menggunakan RemoteActivityHelper API yang dijelaskan di atas, Anda dapat menentukan agar semua URL dibuka di ponsel dari smartwatch, dan aplikasi ponsel tidak diperlukan.

Detail untuk mendeteksi jenis ponsel yang tersambung

Berikut adalah cuplikan yang menggunakan metode getPhoneDeviceType() untuk memeriksa jenis ponsel yang tersambung ke smartwatch:

Kotlin

var phoneDeviceType: Int = PhoneDeviceType.getPhoneDeviceType(context)

Java

int phoneDeviceType = PhoneDeviceType.getPhoneDeviceType(context);

Nilai yang ditampilkan oleh metode getPhoneDeviceType() adalah salah satu dari berikut:

Nilai yang ditampilkan Deskripsi
DEVICE_TYPE_ANDROID Ponsel pendamping adalah perangkat Android.
DEVICE_TYPE_IOS Ponsel pendamping adalah perangkat iOS.
DEVICE_TYPE_ERROR_UNKNOWN Terjadi error saat menentukan jenis ponsel yang tersambung; pemeriksaan harus dilakukan kembali nanti.

Pendeteksian aplikasi mulai dari ponsel Android

Ponsel Android dapat mendeteksi apakah perangkat Wear OS pengguna memiliki aplikasi smartwatch:

  1. Dengan NodeClient, temukan semua smartwatch yang tersambung ke ponsel pengguna. Untuk mengetahui informasi selengkapnya, lihat contoh di GitHub.
  2. Dengan CapabilityClient, periksa smartwatch pengguna mana yang sudah menginstal aplikasi.
  3. Jika aplikasi tidak diinstal di semua smartwatch pengguna (bandingkan hasil dari Langkah 1 dengan hasil dari Langkah 2), izinkan pengguna untuk membuka Play Store di perangkat Wear OS yang tersisa dari ponsel melalui metode RemoteActivityHelper.startRemoteActivity(). Secara khusus, gunakan URI market untuk aplikasi Wear OS (yang mungkin berbeda dari URI aplikasi ponsel). Misalnya, gunakan URI market seperti: market://details?id=com.example.android.wearable.wear.finddevices

Data lokasi untuk smartwatch yang tersambung ke iPhone

Untuk smartwatch yang tersambung ke iPhone, developer harus menggunakan Penyedia Lokasi Gabungan (FLP) untuk mendapatkan data lokasi di smartwatch. Lihat Mendeteksi lokasi di Wear OS.

Jika ponsel pendamping tersedia, FLP akan menggunakannya untuk mendapatkan data lokasi.

Mendapatkan hanya data yang diperlukan

Secara umum, saat mendapatkan data dari internet, sebaiknya hanya ambil data yang diperlukan. Jika tidak, Anda dapat menyebabkan latensi, penggunaan memori, dan penggunaan baterai yang tidak perlu.

Bila smartwatch terhubung melalui koneksi Bluetooth LE, aplikasi mungkin hanya dapat mengakses bandwidth sebesar 4 kilobyte per detik, tergantung pada smartwatch. Oleh karena itu, langkah-langkah berikut direkomendasikan:

  • Audit permintaan dan respons jaringan untuk data tambahan yang hanya ditujukan untuk aplikasi ponsel
  • Perkecil gambar besar sebelum mengirimkannya melalui jaringan ke smartwatch

Untuk kasus yang memerlukan jaringan bandwidth tinggi, lihat Akses jaringan bandwidth tinggi.

Contoh kode lainnya

Contoh WearVerifyRemoteApp lebih lanjut menunjukkan penggunaan API yang dibahas di halaman ini.