Project: Membuat Aplikasi Bookshelf

1. Sebelum memulai

Prasyarat

  • Kemampuan untuk membuat dan menjalankan project di Android Studio.
  • Kemampuan untuk membuat tata letak di Jetpack Compose.
  • Pengalaman menggunakan coroutine di Kotlin.
  • Pengalaman menangani Retrofit, Coil, dan Gson.

Yang akan Anda bangun

  • Aplikasi Android yang membuat beberapa permintaan ke layanan web dan menampilkan gambar yang didownload secara asinkron.

Yang akan Anda butuhkan

  • Komputer yang dilengkapi Android Studio.

2. Ringkasan

Selamat Anda telah menyelesaikan unit 5!

Untuk mempraktikkan konsep yang Anda pelajari di unit ini, termasuk coroutine, Retrofit, dan Gson, Anda akan membangun aplikasi sendiri yang menampilkan daftar buku dengan gambar dari Google Books API.

Aplikasi diharapkan melakukan hal berikut:

  • Membuat permintaan ke Google Books API menggunakan Retrofit.
  • Menguraikan respons menggunakan Gson.
  • Menampilkan gambar buku yang didownload secara asinkron beserta judulnya dalam petak vertikal.
  • Menerapkan praktik terbaik, yang memisahkan UI dan lapisan data, dengan menggunakan repositori.
  • Menulis pengujian untuk kode yang memerlukan layanan jaringan, menggunakan injeksi dependensi.

Tujuan project ini dua hal. Pertama, Anda dapat mempraktikkan semua yang telah Anda pelajari di unit ini. Anda juga dapat menggunakan REST API baru, membaca dokumentasi, dan menerapkan keterampilan yang telah Anda pelajari ke dalam aplikasi baru, seperti yang Anda lakukan sebagai developer Android profesional.

Screenshot berikut menunjukkan contoh aplikasi Bookshelf yang telah selesai. Anda bebas menentukan tata letak dan buku yang akan ditampilkan oleh aplikasi. Anda akan mempelajari lebih lanjut cara mengambil data buku di bagian berikut.

9335665e21b79da1.png

3. Merencanakan aplikasi Anda

Merencanakan UI

Anda dapat mendesain UI aplikasi sesuai keinginan. Anda perlu mempertimbangkan bagaimana tata letak aplikasi beradaptasi dengan berbagai faktor bentuk perangkat.

Karena Anda menggunakan petak gambar scroll, Anda perlu memuat beberapa gambar secara bersamaan di layar. Setelah mendapatkan URL gambar, Anda dapat menggunakan composable AsyncImage yang disediakan oleh library Coil untuk mendownload data di latar belakang. Jika memungkinkan, pastikan untuk menunjukkan kepada pengguna saat aplikasi Anda menggunakan jaringan.

Merencanakan lapisan jaringan

Di jalur 1 unit ini, Anda telah mempelajari cara mendapatkan data dari jaringan dan menguraikan respons JSON. Untuk aplikasi Bookshelf, lapisan data perlu melakukan tiga hal berikut:

  • Membuat layanan Retrofit untuk mendapatkan data dari Google Books API.
  • Menambahkan metode untuk layanan guna mendapatkan daftar buku dan mendapatkan informasi tentang buku tertentu.
  • Menggunakan Gson untuk mengekstrak data yang bermakna dari respons JSON yang ditampilkan oleh API.

Mari kita bahas secara singkat metode Google Books API yang Anda perlukan untuk project ini.

Menelusuri buku

Google Books API menyediakan metode yang menampilkan daftar buku berdasarkan istilah penelusuran tertentu, seperti yang dijelaskan dalam Menggunakan API.

Misalnya, URL ini menampilkan hasil penelusuran untuk istilah "jazz history" (sejarah musik jazz).

Contoh

https://www.googleapis.com/books/v1/volumes?q=jazz+history

Ada beberapa parameter kueri untuk memfilter penelusuran Anda. Untuk aplikasi Bookshelf, parameter q (singkatan dari kueri) sudah mencukupi.

Dokumentasi juga menunjukkan respons JSON yang diharapkan. Untuk aplikasi Bookshelf, Anda perlu mengekstrak id buku.

Meminta info tentang buku tertentu

Anda perlu membuat permintaan untuk mendapatkan info tentang buku tertentu. Endpoint ini mengambil ID yang Anda ekstrak dari respons sebelumnya.

https://www.googleapis.com/books/v1/volumes/<volume_id>

Anda dapat menemukan link thumbnail pada objek imageLinks di objek volumeInfo. Untuk aplikasi ini, gambar yang ingin Anda download berada di bawah kunci thumbnail.

...
    "imageLinks": {
      "smallThumbnail": "http://books.google.com/books/publisher/content?id=EPUTEAAAQBAJ&printsec=frontcover&img=1&zoom=5&edge=curl&imgtk=AFLRE734s3CngIs16gM_Ht6GeGF4ew664I7oOGghmfk4pgfFcDYb4GlYCYdjtqqXluL2KUyfq_Ni5MSyv4JxEJ8W679zQ2Ib3okUKau3I1ruqBGrWOt2_haUauWC8sXEgjN7JHm4uOjS&source=gbs_api",
      "thumbnail": "http://books.google.com/books/publisher/content?id=EPUTEAAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&imgtk=AFLRE71N0ldzv6rliUV_K5ZACa9yPNcT8Ino6YKXJUMje_z4GsC9cp6gFql5TxlmqMoYN3CDhM3XAIO2riFeMXUnFVr5pTLq91htTtG1DDyvOdiR4yI6xu3yEEAn0dRbvNFZ5m7dUC9E&source=gbs_api",
      "small": "http://books.google.com/books/publisher/content?id=EPUTEAAAQBAJ&printsec=frontcover&img=1&zoom=2&edge=curl&imgtk=AFLRE71HmTwpoe3KR0AISYk5sDgV2Fz-F-6CDKJtFdvlXSZv3jEzFtsSXGJnEGjtCuoDMxP_6sgP8au1yadB7OmI2MhIBquel7ivcDB8e9ieLyh4HNoXnX3zmxfF_CfIfnNXDv0WHuyA&source=gbs_api",
      "medium": "http://books.google.com/books/publisher/content?id=EPUTEAAAQBAJ&printsec=frontcover&img=1&zoom=3&edge=curl&imgtk=AFLRE72LMPH7Q2S49aPeQ3Gm8jLEf6zH4ijuE0nvbOyXBUAgyL816pXzaw0136Pk8jXpfYYFY0IsqL7G7MMDMgKcJhnaoHojWNZpljZmGHeWLL_M7hxkOpmdmO7xza8dfVfPbFmBH4kl&source=gbs_api",
      "large": "http://books.google.com/books/publisher/content?id=EPUTEAAAQBAJ&printsec=frontcover&img=1&zoom=4&edge=curl&imgtk=AFLRE71w0J9EOzUzu1O5GMbwhnpI8BLWzOEtzqc9IfyxEDqimZ--H4JlNAZh_1zx8pqPNRf1qDt7FPb57lH5ip-LBlK3zjMC-MCBYcciuoPjTJOFmLv7pp5B6_-UFBap1KRfC0eG7P4d&source=gbs_api",
      "extraLarge": "http://books.google.com/books/publisher/content?id=EPUTEAAAQBAJ&printsec=frontcover&img=1&zoom=6&edge=curl&imgtk=AFLRE73t0gcxT-jzEETp8Yo5Osr15nVL7ntKL2WSe2S8kRSio7w0CGgErAq4WbPWIsH4TmOdP_EO6ZoPNSP-YGSOwqfPMw8_IlYE6hy9IKeAs5V_xaHy7drZleF0eizAQiEVg5ci7qby&source=gbs_api"
    },
...

Mendownload thumbnail buku

Setelah Anda memiliki URL thumbnail, URL tersebut dapat diberikan ke composable AsyncImage di setiap item petak.

Desain untuk kemudahan pengujian

Selain konsep jaringan, Anda juga telah mempelajari cara memfaktorkan ulang aplikasi agar menggunakan class repositori untuk lapisan data. Untuk aplikasi ini, Anda harus mendesain dengan mempertimbangkan kemudahan pengujian, menggunakan repositori agar mudah menukar sumber data dengan injeksi dependensi.

  • Sertakan antarmuka repositori untuk layanan buku.
  • Implementasikan class repositori yang mengakses layanan Retrofit.
  • Implementasikan layanan palsu yang tidak membuat permintaan sebenarnya ke Google Books API.
  • Tulis pengujian untuk repositori menggunakan layanan palsu.

Data buku perlu diambil dari jaringan menggunakan repositori, sehingga Anda dapat dengan mudah menukar sumber data dengan injeksi dependensi.

4. Membangun aplikasi Bookshelf

Setelah Anda memiliki ringkasan Google Books API, kini saatnya membuat Bookshelf API. Meskipun Anda menggunakan layanan web yang berbeda, Anda telah mempelajari semua konsep yang diperlukan untuk menyelesaikan project ini. Anda selalu dapat melihat codelab dan aplikasi contoh sebelumnya dari unit ini jika memerlukan pengingat. Codelab dalam unit ini mungkin berguna untuk Anda saat mengerjakan project.

Sebaiknya selesaikan semua project dalam kursus. Meskipun Anda merasa yakin dengan semua yang telah dipelajari dalam unit ini, kemungkinan Anda perlu lebih sering melihat kembali codelab daripada yang Anda kira. Ini terjadi pada semua orang—bahkan instruktur kursus ini! Jadi, nikmatilah project ini, dan praktikkan semua yang telah Anda pelajari sebelum melanjutkan ke unit berikutnya.