Aplikasi yang selalu aktif dan mode standby sistem

Wear OS otomatis menangani pemindahan ke mode daya rendah untuk aplikasi aktif saat pengguna tidak ada lebih lama menggunakan smartwatch. Hal ini disebut mode standby sistem. Jika pengguna berinteraksi dengan smartwatch lagi dalam jangka waktu tertentu, Wear OS akan mengembalikan pengguna ke aplikasi mereka tinggalkan.

Untuk kasus penggunaan tertentu, misalnya, pengguna ingin melihat detak jantung dan kecepatan selama lari—Anda juga dapat mengontrol apa yang ditampilkan dalam mode standby daya rendah. Aplikasi Wear OS yang berjalan dalam mode interaktif dan mode standby disebut aplikasi yang selalu aktif.

Membuat aplikasi terus terlihat akan memengaruhi masa pakai baterai, jadi pertimbangkan dampak tersebut saat menambahkan fitur ini ke aplikasi Anda.

Mengonfigurasi project

Untuk mendukung mode standby, ikuti langkah-langkah berikut:

  1. Buat atau update project Anda berdasarkan konfigurasi di Buat dan menjalankan halaman aplikasi wearable.
  2. Tambahkan izin WAKE_LOCK ke file Manifes Android:
<uses-permission android:name="android.permission.WAKE_LOCK" />

Mengaktifkan mode selalu aktif

Untuk menggunakan AmbientLifecycleObserver, lakukan tindakan berikut:

  1. Terapkan AmbientLifecycleObserver.AmbientLifecycleCallback, seperti dalam contoh berikut. Pada tahap ini, metode akan kosong, tetapi selanjutnya panduan ini akan memberikan detail tentang perubahan apa saja Anda harus memastikan bahwa Anda membuat visualisasi untuk masuk dan keluar dari mode standby.

    Kotlin

    val ambientCallback = object : AmbientLifecycleObserver.AmbientLifecycleCallback {
        override fun onEnterAmbient(ambientDetails: AmbientLifecycleObserver.AmbientDetails) {
        // ... Called when moving from interactive mode into ambient mode.
        }
    
        override fun onExitAmbient() {
        // ... Called when leaving ambient mode, back into interactive mode.
        }
    
        override fun onUpdateAmbient() {
        // ... Called by the system in order to allow the app to periodically
        // update the display while in ambient mode. Typically the system will
        // call this every 60 seconds.
        }
    }
  2. Buat AmbientLifecycleObserver dan daftarkan observer. Biasanya, proses ini akan digunakan di onCreate() atau composable tingkat atas jika menggunakan Compose untuk Wear OS, untuk memungkinkan perilaku selalu aktif untuk diaktifkan sepanjang siklus proses aktivitas.

    Kotlin

    private val ambientObserver = AmbientLifecycleObserver(activity, callback)
    
    override fun onCreate(savedInstanceState: Bundle) {
      super.onCreate(savedInstanceState)
      lifecycle.addObserver(observer)
    
      // ...
    }
    
  3. Hapus observer dengan memanggil removeObserver(), saat selalu aktif perilaku ini tidak lagi diperlukan. Misalnya, Anda dapat memanggil metode ini di metode onDestroy() dari aktivitas Anda.

Aplikasi yang selalu aktif dapat dipindahkan ke latar belakang

Mulai Wear OS 5, sistem akan memindahkan aplikasi yang selalu aktif ke latar belakang setelah terlihat di mode standby untuk jangka waktu tertentu. Pengguna dapat mengonfigurasi waktu tunggu di setelan sistem.

Jika aplikasi yang selalu aktif menampilkan informasi tentang tugas pengguna yang sedang berlangsung—seperti pemutaran musik atau sesi olahraga—Anda mungkin ingin mempertahankan terlihat sampai tugas berakhir. Untuk melakukannya, gunakan Ongoing Activity API untuk memposting notifikasi berkelanjutan yang ditautkan ke aktivitas Anda yang selalu aktif.

Agar sistem dapat mengenali aktivitas yang sedang berlangsung, aktivitas yang sedang berlangsung intent sentuh notifikasi harus mengarah ke aktivitas yang selalu aktif, seperti yang ditunjukkan cuplikan kode berikut:

// Create a pending intent that point to your always-on activity
val touchIntent =
    PendingIntent.getActivity(
        context,
        0,
        Intent(context, MyAlwaysOnActivity::class.java),
        PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
    )

val notificationBuilder =
    NotificationCompat.Builder(this, CHANNEL_ID)
    // ...
    .setOngoing(true)

val ongoingActivity =
    OngoingActivity.Builder(
        applicationContext, NOTIFICATION_ID, notificationBuilder
    )
    // ...
    .setTouchIntent(touchIntent)
    .build()

ongoingActivity.apply(applicationContext)

notificationManager.notify(
    NOTIFICATION_ID,
    notificationBuilder.build()
)

Mengubah tampilan visual dalam mode standby

Secara default, saat mengimplementasikan mode selalu aktif, layar tidak mengubah tampil saat jam memasuki mode standby. Anda dapat mengubahnya perilaku model dengan mengganti metode di AmbientLifecycleCallback.

Untuk membantu menghemat daya, lakukan hal berikut:

  • Terangi lebih sedikit piksel, dan buat sebagian besar layar tetap hitam. Pertimbangkan hanya menampilkan informasi penting dalam mode standby, dan menyediakan saat pengguna memasuki mode interaktif.
  • Sesuaikan konten untuk update yang lebih jarang. Misalnya, tampilkan timer ke menit terdekat, bukan detik terdekat.
  • Di AmbientDetails objek yang diteruskan ke onEnterAmbient():
    • Jika deviceHasLowBitAmbient disetel, nonaktifkan anti-aliasing jika memungkinkan.
    • Jika burnInProtectionRequired ditetapkan, alihkan visualisasi sekitar secara berkala, dan hindari area putih solid.

Saat menggunakan Compose untuk Wear OS, sebaiknya gunakan metode callback ini untuk memperbarui status, yang memungkinkan sistem merekomposisi UI dengan benar.

Untuk contoh cara melakukannya, lihat berbasis compose Contoh latihan di GitHub, yang menggunakan AmbientAware composable dari library Horologist.