Advertisement
  1. Code
  2. Android SDK

Bagaimana Menggunakan Layanan Google Cloud Machine Learning untuk Android

Scroll to top
Read Time: 10 min

Indonesian (Bahasa Indonesia) translation by Kurniawan Sugi Purwanto (you can also view the original English article)

Berbagai berita pada hari-hari ini dipenuhi dengan kata kunci semacam automasi, kecerdasan buatan, dan pembelajaran mesin (machine learning). Itulah mengapa semakin banyak pengguna smartphone yang mulai mencari aplikasi yang lebih cerdas. Sebagai pengembang rutin aplikasi Android, mungkin Anda kekurangan sumber daya yang dibutuhkan untuk membuat aplikasi semacam itu dari nol.

Untungnya baru-baru ini Google meluncurkan platform Cloud Machine Learning, yang menawarkan jaringan syaraf yang telah dilatih sebelumnya untuk menjalankan berbagai tugas. Sebagian modelnya tidak hanya sangat akurat, tetapi terus menerus ada peningkatan. Dan tebak, Anda bisa menggunakannya hanya dengan membuat beberapa panggilan REST API!

Dalam tutorial ini, akan saya perkenalkan Anda pada platform Cloud Machine Learning dan menunjukkan Anda cara menggunakannya untuk membuat aplikasi cerdas Android yang bisa mengenali objek-objek dunia nyata dan menyebutkan namanya dalam berbagai bahasa.

Prasyarat

Untuk bisa maksimal mengikuti tutorial ini, yang Anda butuhkan adalah:

1. Mendapatkan kunci API

Untuk mampu menggunakan layanan pembelajaran mesin Google di aplikasi Android Anda, dibutuhkan suatu kunci API. Anda bisa mendapatkannya dengan membuat proyek baru di konsol Google Cloud Platform.

Mulailah dengan masuk ke konsol dan menekan tombol Create New Project. Pada dialog yang muncul, berikan nama yang bermakna untuk proyeknya.

Create new projectCreate new projectCreate new project

Begitu proyeknya dibuat, buka API Manager > Dashboard dan tekan tombol Enable API.

Di layar berikutnya, di bawah kepala teks Google Cloud Machine Learning, Anda akan bisa melihat semua API pembelajaran mesin yang tersedia untuk Anda. Dalam tutorial ini, kita hanya akan menggunakan Vision dan Translation API.

Machine learning libraryMachine learning libraryMachine learning library

Untuk mengaktifkan Vision API, klik tautannya dan tekan tombol Enable.

Enable Vision APIEnable Vision APIEnable Vision API

Dengan cara serupa, untuk mengaktifkan Translation API, klik tautannya dan tekan tombol Enable.

Anda hanya butuh satu kunci untuk menggunakan kedua API tersebut. Untuk mendapatkannya buka tab Credentials, tekan tombol Create credentials, dan pilih API key.

Select API keySelect API keySelect API key

Sekarang Anda akan melihat popup yang berisi kunci API Anda.

2. Membuat Proyek Android Baru

Buka Android Studio dan buat proyek baru dengan activity yang kosong. Saya sarankan Anda memilih setidaknya API level 19 untuk SDK minimal yang didukung.

Meskipun Anda tidak harus melakukannya, selalu lebih baik untuk menggunakan pustaka jaringan yang kokoh dalam berkomunikasi dengan platform Google Cloud Machine Learning. Dalam tutorial ini, kita akan menggunakan salah satu pustaka (library) yang bernama Fuel. Tambahkan sebagai dependensi compile di file build.gradle modul app:

Tekan Sync Now untuk memperbarui proyek Anda.

Berikutnya aplikasi kita akan membutuhkan izin INTERNET untuk berkomunikasi dengan server Google. Oleh karena itu, tambahkan baris berikut di dalam manifest file proyeknya:

Yang terakhir, tambahkan kunci API Anda ke file values/strings.xml:

3. Menggunakan Vision API

Vision API membantu Anda membuat aplikasi yang bisa melihat dan mengerti lingkungan pengguna. Deteksi wajah, deteksi emosi, pengenalan karakter optik, dan anotasi gambar adalah sebagian dari sekian banyak fitur yang dimilikinya. Untuk saat ini, kita hanya berfokus pada fitur anotasi gambar yang hebat, disebut juga deteksi label—yang saya pikir ini sangat bermanfaat.

Seperti yang Anda harapkan, API ini mengekspektasikan gambar sebagai salah satu masukannya. Oleh karena itu, mari membuat layar yang pengguna bisa mengambil gambar dengan kamera perangkat.

Langkah 1: Buat Suatu Tata Letak

Tata letak layar kita akan memiliki widget Button yang pengguna bisa menekannya untuk mengambil gambar, widget ImageView untuk menampilkan gambar, dan widget TextView untuk menampilkan label, atau anotasi yang dihasilkan oleh API. Oleh karena itu, tambahkan kode berikut ke file XML tata letak activity Anda:

Perhatikan bahwa kita telah mengasosiasikan suatu handler onClick dengan tombolnya. Akan kita definisikan itu di langkah berikutnya.

Langkah 2: Membuat Intent

Dengan membuat intent baru dengan aksi ACTION_IMAGE_CAPTURE dan memasukkannya ke metode startActivityForResult(), Anda bisa meminta aplikasi kamera default pengguna untuk mengambil gambar dan memasukkannya ke aplikasi Anda. Oleh karena itu tambahkan kode berikut ke kelas  Activity Anda:

Untuk menerima gambar yang ditangkap dengan aplikasi kamera default, Anda harus mengesampingkan metode onActivityResult() kelas Activity Anda. Di dalam metodenya, Anda akan mengakses objek Bundle yang berisi semua data gambar. Anda bisa merender data gambar dengan sekedar mengonversinya menjadi Bitmap dan memasukkannya ke widget ImageView.

Jika Anda menjalankan aplikasinya sekarang dan mengambil gambar, Anda akan melihat gambarnya lumayan kecil. Itu tidak masalah—Cloud Vision API sangatlah akurat meskipun dengan gambar keluku (thumbnail).

Langkah 3: Kodekan Gambarnya

Vision API tidak bisa menggunakan objek Bitmap secara langsung, melainkan mengekspektasikan string data gambar dikompresi yang berkode Base64.

Untuk kompresi data gambar, Anda dapat menggunakan metode compress() kelas Bitmap. Sebagai argumennya, metode itu mengekspektasikan format kompresi yang digunakan, kualitas keluaran yang diharapkan, dan suatu objek ByteArrayOutputStream. Kode berikut mengompresi bitmap dengan menggunakan format JPG dan memastikan bahwa kualitas gambar yang dihasilkan cukup tinggi:

Sekarang Anda bisa memroduksi string Base64 dengan menggunakan metode encodeToString() kelas Base64.

Langkah 4: Proses Gambarnya

Setelah semua kerja keras itu, Anda memiliki semua yang dibutuhkan untuk berinteraksi dengan Vision API. Mulailah dengan membuat string yang berisi URL API dan kunci API:

Untuk mengirimkan data ke API, Anda harus membuat permintaan HTTP POST. Badan permintaan harus berupa dokumen JSON yang berisi data gambar berkode Base64. Untuk deteksi label, dokumen juga harus memiliki array features yang mengandung nilai LABEL_DETECTION. Berikut adalah format dokumen JSON.

Meskipun memungkinkan untuk menulis sendiri kode dokumen JSON, membuatnya secara terprogram akan mengurangi kemungkinan kesalahan. Kode berikut menunjukkan Anda cara melakukannya dengan kelas JSONObject dan JSONArray:

Di titik ini, kita bisa menggunakan metode post() kelas Fuel untuk membuat permintaan HTTP POST. Sebagai satu-satunya argumennya, metode ini mengekspektasikan URL API. Anda juga harus memasukkan header content-length dan content-type di permintaannya. Untuk melakukan itu gunakan metode header(). Dengan cara serupa, untuk menambahkan dokumen JSON ke badan permintaan POST, gunakan metode post().

Yang terakhir, dengan memanggil metode responseString() dan memasukkan instance baru kelas Handler ke dalamnya, Anda bisa secara asinkron mendapatkan respon permintaan sebagai string. Oleh karena itu, tambahkan kode berikut:

Ketika Anda menggunakan fitur deteksi label, Vision API mengembalikan dokumen JSON yang berisi label. Pada tiap label, Anda juga mendapatkan skor yang menetapkan seberapa akurat labelnya. Dokumennya akan terlihat seperti ini:

Untuk saat ini, mari memutar ulang semua objek di array labelAnnotations dan menambahkan nilai tiap kunci description ke widget TextView tata letak kita. Berikut adalah cara melakukannya di dalam metode success() kelas Handler:

Sekarang Anda bisa menjalankan aplikasinya, ambil gambar objek apa saja di dekat Anda dan meihat label yang dihasilkan Vision API untuknya.

Labels generated for a laptopLabels generated for a laptopLabels generated for a laptop

4. Menggunakan Translation API

Cloud Translation API, sebagaimana namanya, bisa menerjemahkan teks dari dan ke lebih 100 bahasa. Dengan menggunakannya secara efektif, Anda bisa membuat aplikasi cerdas yang bisa berkomunikasi dengan para pengguna Anda dalam bahasa mereka sendiri.

Di langkah sebelumnya, Anda melihat bahwa label yang dihasilkan aplikasi kita berbahasa Inggris. Sekarang mari menambahkan tombol untuk menerjemahkan label-label tersebut ke bahasa Jerman.

Langkah 1: Perbarui Tata Letaknya

Tambahkan widget Button di akhir tata letak activity Anda dengan menggunakan kode berikut:

Perhatikan bahwa tombol ini juga memiliki event handler onClick yang harus didefinisikan dalam kelas Activity Anda.

Langkah 2: Terjemahkan Labelnya

Menggunakan Translation API jauh lebih mudah daripada menggunakan Vision API, terutama karena Anda tidak harus membuat dokumen JSON untuk mendefinisikan permintaan Anda. Sebaliknya, Anda bisa memasukkan berbagai parameter dalam suatu string kueri.

Buat metode translateToGerman() dan, di dalamnya, buat suatu string yang berisi URL Translation API.

Untuk menambahkan isian (field) ke string kueri URL di atas, kita bisa menggunakan objek List dari Pair. Isian-isian berikut penting:

  • key, menentukan kunci rahasia API Anda.
  • source, menentukan bahasa sumber yang akan Anda terjemahkan
  • target, menentukan bahasa sasaran terjemahan
  • q, menentukan teks yang Anda ingin terjemahkan

Kode berikut menunjukkan Anda cara mengonfigurasi API untuk menerjemahkan dari bahasa Inggris ke bahasa Jerman:

Dikarenakan string kueri bisa berisi banyak isian q, kita akan bisa menambahkan satu untuk tiap label yang ada dalam tata letak TextView kita. Berikut bagaimana melakukannya:

Terakhir, Anda bisa memanggil metode get() dari kelas Fuel untuk membuat permintaan HTTP GET ke Translation API. Kali ini juga, Anda bisa menggunakan metode responseString() untuk mendapatkan respon dalam bentuk string secara asinkron.

Respon Translation API adalah dokumen JSON yang mengandung sekumpulan terjemahan. Formatnya adalah sebagai berikut:

Untuk kali ini, di dalam metode success() kelas Handler, mari memutar ulang array translations dokumen JSON di atas, dan memperbarui konten widget TextView dengan menggunakan nilai yang diasosiasikan dengan kunci-kunci translatedText.

Jika Anda menjalankan aplikasinya sekarang, menghasilkan label untuk suatu gambar, dan menekan tombol kedua, Anda akan melihat labelnya dalam bahasa Jerman.

Labels in GermanLabels in GermanLabels in German

Kesimpulan

Dalam tutorial ini, Anda belajar cara menggunakan Cloud Vision dan Cloud Translation API, yang merupakan bagian dari platform Google Cloud Machine Learning, di aplikasi Android. Ada banyak lagi API yang ditawarkan oleh platform ini. Anda bisa memppelajarinya lebih lanjut dengan merujuk ke dokumentasi resmi.

Senyampang Anda masih di sini, pelajari beberapa tutorial kami yang lain tentang bagaimana menggunakan machine learning dan cloud service di aplikasi Android Anda!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.