1. Sebelum memulai
Codelab ini memperkenalkan aplikasi baru bernama Water Me yang akan Anda bangun 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 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.
Pengingat akan ditampilkan sebagai notifikasi di perangkat meskipun aplikasi Water Me! sedang tidak berjalan. Mengetuk notifikasi akan meluncurkan aplikasi Water Me!.
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
- Klik URL yang diberikan. Tindakan ini akan membuka halaman GitHub project di browser.
- Di halaman GitHub project, klik tombol Code yang akan menampilkan dialog.
- Di dialog, klik tombol Download ZIP untuk menyimpan project di komputer. Tunggu download selesai.
- Temukan file di komputer Anda (mungkin di folder Downloads).
- Klik dua kali pada file ZIP untuk mengekstraknya. Tindakan ini akan membuat folder baru yang berisi file project.
Membuka project di Android Studio
- Mulai Android Studio.
- Di jendela Welcome to Android Studio, klik Open an existing Android Studio project.
Catatan: Jika Android Studio sudah terbuka, pilih opsi menu File > New > Import Project.
- Di dialog Import Project, buka lokasi folder project yang telah diekstrak (kemungkinan ada di folder Downloads).
- Klik dua kali pada folder project tersebut.
- Tunggu Android Studio membuka project.
- Klik tombol Run untuk membangun dan menjalankan aplikasi. Pastikan aplikasi dibangun seperti yang diharapkan.
- 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 worker). 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
.
- Buat variabel bernama
data
menggunakanData.Builder
. Data harus terdiri dari nilai string tunggal denganWaterReminder.Worker.nameKey
sebagai kuncinya danplantName
yang diteruskan kescheduleReminder()
sebagai nilainya. - Buat permintaan pekerjaan satu kali yang menggunakan
WaterReminderWorker
, menggunakandelay
danunit
yang diteruskan ke fungsischeduleReminder()
, dan menetapkan data input ke variabeldata
yang Anda buat. - Panggil metode
enqueueUniqueWork()
workManager
, yang meneruskan nama tanaman, menggunakanREPLACE
sebagaiExistingWorkPolicy
, 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.
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.