Project: aplikasi Water Me!

1. Sebelum memulai

Codelab ini memperkenalkan aplikasi baru bernama Water Me yang akan Anda build sendiri. Codelab ini memandu Anda melakukan langkah-langkah untuk menyelesaikan project aplikasi Water Me, termasuk penyiapan dan pengujian project dalam Android Studio.

Prasyarat

  • Project ini ditujukan bagi siswa yang telah menyelesaikan Unit 6 kursus Dasar-Dasar Android di Kotlin.

Yang akan Anda build

  • Menjadwalkan notifikasi menggunakan Worker kustom di aplikasi yang sudah ada.

Yang akan Anda butuhkan

  • Komputer yang dilengkapi Android Studio.

2. Ringkasan aplikasi yang sudah selesai

Aplikasi Water Me! terdiri dari daftar tanaman, beberapa informasi tentang tanaman tersebut, dan deskripsi seberapa sering setiap tanaman harus disiram. Untuk setiap tanaman tersebut, aplikasi yang sudah selesai akan menjadwalkan pengingat saat tanaman harus disiram.

90be029855bc3111.png

Pengingat akan ditampilkan sebagai notifikasi di perangkat meskipun aplikasi Water Me! sedang tidak berjalan. Mengetuk notifikasi akan meluncurkan aplikasi Water Me!.

df244d6749f69085.png

Agar fungsi ini berjalan, tugas Anda adalah menjadwalkan tugas latar belakang menggunakan Worker kustom yang menampilkan notifikasi.

3. Memulai

Mendownload kode project

Perhatikan bahwa nama folder adalah android-basics-kotlin-water-me-app. Pilih folder ini saat Anda membuka project di Android Studio.

Untuk mendapatkan kode codelab ini dan membukanya di Android Studio, lakukan hal berikut.

Mendapatkan kode

  1. Klik URL yang diberikan. Tindakan ini akan membuka halaman GitHub project di browser.
  2. Di halaman GitHub project, klik tombol Code yang akan menampilkan dialog.

5b0a76c50478a73f.png

  1. Di dialog, klik tombol Download ZIP untuk menyimpan project di komputer. Tunggu download selesai.
  2. Temukan file di komputer Anda (mungkin di folder Downloads).
  3. Klik dua kali pada file ZIP untuk mengekstraknya. Tindakan ini akan membuat folder baru yang berisi file project.

Membuka project di Android Studio

  1. Mulai Android Studio.
  2. Di jendela Welcome to Android Studio, klik Open an existing Android Studio project.

36cc44fcf0f89a1d.png

Catatan: Jika Android Studio sudah terbuka, pilih opsi menu File > New > Import Project.

21f3eec988dcfbe9.png

  1. Di dialog Import Project, buka lokasi folder project yang telah diekstrak (kemungkinan ada di folder Downloads).
  2. Klik dua kali pada folder project tersebut.
  3. Tunggu Android Studio membuka project.
  4. Klik tombol Run 11c34fc5e516fb1c.png untuk mem-build dan menjalankan aplikasi. Pastikan aplikasi di-build seperti yang diharapkan.
  5. Cari file project di jendela alat Project untuk melihat cara aplikasi disiapkan.

4. Menjadwalkan notifikasi menggunakan WorkManager

Semua fungsi untuk aplikasi Water Me! sudah diimplementasikan, kecuali untuk bagian yang akan dijadwalkan dan notifikasi. Kode untuk menampilkan notifikasi ada di WaterReminderWorker.kt (dalam paket pekerja). Hal ini terjadi dalam metode doWork() dari class Worker kustom. Karena notifikasi dapat menjadi topik baru, kode ini sudah diimplementasikan.

override fun doWork(): Result {
    val intent = Intent(applicationContext, MainActivity::class.java).apply {
        flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
    }

    val pendingIntent: PendingIntent = PendingIntent
        .getActivity(applicationContext, 0, intent, 0)

    val plantName = inputData.getString(nameKey)

    val builder = NotificationCompat.Builder(applicationContext, BaseApplication.CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_android_black_24dp)
        .setContentTitle("Water me!")
        .setContentText("It's time to water your $plantName")
        .setPriority(NotificationCompat.PRIORITY_HIGH)
        .setContentIntent(pendingIntent)
        .setAutoCancel(true)

    with(NotificationManagerCompat.from(applicationContext)) {
        notify(notificationId, builder.build())
    }

    return Result.success()
}

Tugas Anda adalah membuat OneTimeWorkRequest yang akan memanggil metode ini dengan parameter yang benar dari PlantViewModel.

Membuat permintaan pekerjaan.

Untuk menjadwalkan notifikasi, Anda harus mengimplementasikan metode scheduleReminder() di PlantViewModel.kt.

  1. Buat variabel bernama data menggunakan Data.Builder. Data harus terdiri dari nilai string tunggal dengan WaterReminder.Worker.nameKey sebagai kuncinya dan plantName yang diteruskan ke scheduleReminder() sebagai nilainya.
  2. Buat permintaan pekerjaan satu kali yang menggunakan WaterReminderWorker, menggunakan delay dan unit yang diteruskan ke fungsi scheduleReminder(), dan menetapkan data input ke variabel data yang Anda buat.
  3. Panggil metode enqueueUniqueWork() workManager, yang meneruskan nama tanaman, menggunakan REPLACE sebagai ExistingWorkPolicy, dan permintaan pekerjaan.

Aplikasi Anda sekarang seharusnya sudah berfungsi seperti yang diharapkan. Karena setiap pengingat akan memerlukan waktu lama untuk muncul, sebaiknya jalankan pengujian yang disertakan untuk memverifikasi bahwa notifikasi berfungsi seperti yang diharapkan.

5. Petunjuk pengujian

Menjalankan pengujian

Untuk menjalankan pengujian, Anda dapat melakukan salah satu dari hal berikut.

Untuk satu kasus pengujian, buka class kasus pengujian dan klik panah hijau di sebelah kiri deklarasi class. Kemudian Anda dapat memilih opsi Run dari menu. Tindakan ini akan menjalankan semua pengujian dalam kasus pengujian.

a32317d35c77142b.png

Sering kali Anda hanya ingin menjalankan satu pengujian, misalnya, jika hanya ada satu pengujian yang gagal dan yang lainnya lulus pengujian. Anda dapat menjalankan satu pengujian seperti halnya seluruh kasus pengujian. Gunakan panah hijau dan pilih opsi Run.

ac6244434cfafb60.png