Selamat datang kembali di seri postingan blog "Membangun aplikasi Android cerdas" tempat kami mengambil aplikasi Android dasar dan mengubahnya menjadi pengalaman yang dipersonalisasi, cerdas, dan agentic. Dalam postingan sebelumnya, kami memperkenalkan Jetpacker, aplikasi demo yang akan kami gunakan di seluruh seri ini.
Dalam postingan blog ini, kami akan membagikan cara menggunakan Gemini Nano melalui Prompt API ML Kit untuk membangun fitur cerdas di perangkat.
Membangun fitur cerdas di perangkat mengacu pada kemampuan untuk memproses perintah dan data langsung di perangkat tanpa mengirim data ke server. Hal ini memberikan beberapa keuntungan:
- Data pengguna dapat diproses secara lokal di perangkat, sehingga menjaga privasi pengguna
- Fungsi model dapat diandalkan meskipun dengan koneksi internet yang tidak stabil atau tidak ada koneksi internet
- Tidak ada biaya inferensi cloud tambahan, karena semuanya berjalan di hardware pengguna
Dengan mempertimbangkan manfaat di perangkat, kami mengidentifikasi tiga fitur yang akan ditambahkan di Jetpacker yang dapat meningkatkan pengalaman pengguna: meringkas rencana perjalanan, mengelola pengeluaran, dan merekam catatan suara.
Peringkasan teks pendek yang disesuaikan dan berkualitas tinggi
Layar rencana perjalanan memberi pengguna ringkasan singkat tentang semua aktivitas untuk perjalanan tertentu. Karena berisi banyak informasi, layar ini dapat dengan cepat membuat Anda kewalahan. Untuk membantu pengguna bersiap tanpa merasa kewalahan, kita dapat menambahkan bagian 'Bersiap untuk perjalanan Anda' di bagian atas.
Dengan memasukkan rencana perjalanan dan meminta LLM untuk meringkasnya, kita dapat membuat ringkasan singkat perjalanan beserta tips pengepakan dan frasa lokal yang berguna. Ini adalah kasus penggunaan yang bagus untuk model di perangkat karena beberapa alasan:
- Performa dan kualitas: Teks input dan output relatif pendek. Dengan demikian, kita dapat mengharapkan performa dan kualitas solusi di perangkat setara dengan model cloud yang lebih canggih.
- Skalabilitas: Mengalihkan inferensi di perangkat memungkinkan kami menskalakan fitur ini dari beberapa pengguna hingga jutaan pengguna tanpa perlu khawatir mengelola biaya inferensi cloud yang terus meningkat.
- Latensi rendah dan keandalan: Inferensi di perangkat menjamin latensi rendah, sehingga memberikan pengalaman yang andal meskipun pengguna sedang offline.
Untuk membangun dengan kemampuan di perangkat, kami menggunakan Gemini Nano, model Google yang paling efisien dan dioptimalkan untuk perangkat seluler. Gemini Nano pertama kali diperkenalkan beberapa tahun lalu, dan kini berjalan di lebih dari 140 juta perangkat. Versi model terbaru, Gemini Nano 4, dibangun berdasarkan fondasi arsitektur model Gemma 4 yang baru dirilis, dan dioptimalkan lebih lanjut untuk efisiensi baterai dan performa maksimum.
Dengan menggunakan Prompt API ML Kit, kita dapat memanfaatkan kemampuan model baru Gemini Nano 4 untuk membuat prototipe fitur di perangkat. Kita akan membuat perintah yang menyertakan itinerari perjalanan dan meminta model untuk membuat ringkasan beserta tips persiapan.
Menemukan perintah yang optimal biasanya memerlukan beberapa iterasi, dan aplikasi AICore sangat cocok untuk langkah ini dalam prosesnya. Setelah memilih untuk ikut serta dalam opsi pratinjau developer untuk AICore, kita dapat mendownload model pratinjau seperti Gemini Nano 4 untuk menguji perintah dan melihat output yang diharapkan dari model. Dengan beberapa iterasi pada perintah, kami dapat meningkatkan kecepatan respons dari 13 detik menjadi kurang dari 2 detik. Lihat penerapan kode akhir dan perintah di sini.
[ASSET HERE - FILE TOO LARGE ATM]
Pemrosesan lokal untuk input pengguna yang sensitif
Selanjutnya, untuk membantu pengguna menikmati perjalanan mereka lebih jauh, kita akan membuat pengelola pengeluaran sederhana yang menghilangkan pekerjaan manual dalam memilah-milah tanda terima dan menghitung anggaran.
Karena tanda terima mungkin berisi informasi sensitif seperti nomor kartu kredit dan alamat, ini adalah kasus penggunaan lain yang sangat baik untuk solusi di perangkat. Dengan pemrosesan di perangkat, pengguna dapat merasa yakin bahwa informasi pribadi akan diproses secara lokal di perangkat tanpa ada data mereka yang dikirim ke cloud.
Selain itu, Gemini Nano 4 telah meningkatkan kemampuan model untuk multimodalitas, terutama untuk tugas pemahaman gambar seperti OCR dan ekstraksi data visual, sehingga menjadikannya solusi yang tepat untuk tugas seperti mengekstrak informasi dari tanda terima.
Untuk kasus penggunaan ini, perintah akan menganalisis gambar tanda terima, dan menghasilkan informasi seperti: judul yang dibuat, jumlah yang dibelanjakan, dan kategori pengeluaran. Untuk memastikan model menampilkan informasi dalam format yang diinginkan, kita dapat menggunakan Structured Output API ML Kit untuk menampilkan objek data Kotlin yang kita tentukan dengan lancar.
// implementation("com.google.mlkit:genai-prompt:1.0.0-beta3")
// ksp("com.google.mlkit:genai-schema-compiler:1.0.0-alpha1")
@Generable("Information extracted from an expense receipt")
data class ParsedReceipt(
@Guide("Generated title for the expense less than 6 words. Based on restaurant or activity name.")
val title: String,
@Guide("Total amount of the expense. Look for values at the bottom and words like total or balance due.")
val amount: Double,
@Guide("Type of expense", enumValues = ["travel", "food", "shopping", "entertainment", "other"])
val category: String,
)
val prompt = "Determine if the image is a receipt or expense.
If it is NOT a receipt or expense, output the text 'NOT_A_RECEIPT'.
Otherwise, parse the receipt information."
val request = generateContentRequest(ImagePart(bitmap), TextPart(prompt)) {}
val requestWithStructuredOutput = generateTypedContentRequest(request, ParsedReceipt::class)
// Define the configuration for Gemini Nano 4 E4B preview model
// When selecting models, you can specify which performance charactertists are most important
// for your use case. Use ModelPreference.FULL when you want to prioritize reasoning power over speed.
// Use ModelPreference.FAST when complex logic is not required and latency is a priority.
val previewFullConfig = generationConfig {
modelConfig = modelConfig {
releaseStage = ModelReleaseStage.PREVIEW
preference = ModelPreference.FULL
}
}
val geminiNano4BPreviewModel = Generation.getClient(previewFullConfig)
val response = geminiNano4BPreviewModel.generateContent(requestWithStructuredOutput)
val parsedReceipt: ParsedReceipt? = response.candidates.firstOrNull()?.responseInput multimodal
Terakhir, untuk membantu pengguna merekam memo audio selama perjalanan, mari kita buat fitur catatan suara yang sepenuhnya ada di perangkat. Dengan menggunakan Speech Recognition API ML Kit, kami akan memungkinkan pengguna merekam catatan suara singkat yang secara otomatis ditranskripsikan menjadi teks. Dengan teks yang ditranskripsikan, kami akan menggunakan Prompt API ML Kit untuk mengidentifikasi aktivitas perjalanan mana yang terkait dengan catatan suara yang direkam, sehingga pengguna dapat dengan mudah merangkum perjalanan mereka saat men-scroll rencana perjalanan.
Dengan ML Kit GenAI Speech Recognition API, Anda dapat mentranskripsikan konten audio ke teks sepenuhnya di perangkat menggunakan dua mode berbeda. Mode dasar menggunakan model pengenalan ucapan di perangkat tradisional dan tersedia di sebagian besar perangkat Android dengan level API 31 dan yang lebih tinggi. Mode lanjutan menggunakan Gemini Nano untuk menawarkan cakupan bahasa yang lebih luas dan kualitas yang lebih baik, dan saat ini didukung di perangkat Pixel 10.
Untuk fitur kami, kami menggabungkan Speech Recognition API dengan ML Kit GenAI Prompt API:
// implementation("com.google.mlkit:genai-prompt:1.0.0-beta3")
// implementation("com.google.mlkit:genai-speech-recognition:1.0.0-alpha1")
val tripEvents = ...
// Set up speech recognition
val speechRecognizerOptions =
speechRecognizerOptions {
locale = Locale.US
preferredMode = SpeechRecognizerOptions.Mode.MODE_ADVANCED
}
val speechRecognizer: SpeechRecognizer = SpeechRecognition.getClient(speechRecognizerOptions)
suspend fun transcribeVoiceNote(recognizer: SpeechRecognizer) {
// Display partial text as the user is recording audio
var partialTextResponse = ""
// Display the full text once user is finished recording audio
var transcription = ""
val request: SpeechRecognizerRequest
= speechRecognizerRequest { audioSource = AudioSource.fromMic() }
recognizer.startRecognition(request).collect { response ->
when (response) {
is SpeechRecognizerResponse.PartialTextResponse -> {
partialTextResponse = response.text
}
is SpeechRecognizerResponse.FinalTextResponse -> {
transcription = response.text
processAndCategorizeVoiceNote(transcription, tripEvents)
}
}
}
}
fun processAndCategorizeVoiceNote(transcribedVoiceNote: String, events: List<Event>) {
val prompt = "Given the voice note $transcribedVoiceNote
and the following events for this trip: $events, rewrite this transcription
to remove filler words. Then, identify which events from the
list this rewritten transcription matches to."
// Utilize ML Kit's Prompt API to process voice note and tag it with the relevant trip activities
Generation.getClient().generateContent(prompt)
}Kesimpulan
Dengan menggunakan GenAI API ML Kit, kami dapat memanfaatkan Gemini Nano untuk mengembangkan fitur cerdas di perangkat sepenuhnya untuk aplikasi JetPacker, dan memberikan pengalaman pengguna yang lebih baik tanpa biaya cloud tambahan.
Lihat kode sumber lengkap untuk Jetpacker di GitHub, dan tonton video Membangun aplikasi Android cerdas dengan AI Google untuk mempelajari lebih lanjut cara mengintegrasikan fitur cerdas langsung ke dalam aplikasi Anda menggunakan model di perangkat, penalaran yang didukung cloud, dan framework agentik terbaru.
Pelajari lebih lanjut
Baca bagian lain dari seri postingan blog ini:
Bagian 1: Pengenalan aplikasi dan ringkasan tingkat tinggi.
Bagian 2 (postingan ini!): Kecerdasan di perangkat. Pelajari lebih dalam API GenAI ML Kit dan Gemini Nano untuk membuat fitur yang mengutamakan privasi seperti ringkasan itinerari, penguraian tanda terima, dan pemrosesan audio lokal.
Bagian 3: Penalaran hybrid dan cloud. Pelajari cara menggunakan Firebase AI Logic untuk mendasarkan jawaban LLM pada data dunia nyata seperti Google Maps dan konteks web.
Bagian 4: Integrasi sistem. Melakukan integrasi dengan sistem kecerdasan Android menggunakan AppFunctions.
Bagian 5 (segera hadir): Alur kerja agentic dalam aplikasi. Perluas aplikasi dengan asisten pemesanan menyeluruh yang didukung oleh A2UI dan ADK.
Tertarik dengan Pengembangan Android lainnya? Ikuti Android Developers di YouTube atau LinkedIn.
Semua cuplikan kode dalam postingan blog ini mengikuti pemberitahuan hak cipta berikut:
Copyright 2026 Google LLC. SPDX-License-Identifier: Apache-2.0
-
PetunjukSelamat datang kembali di seri postingan blog "Membangun aplikasi Android cerdas" tempat kita mengambil aplikasi Android dasar dan mengubahnya menjadi pengalaman yang dipersonalisasi, cerdas, dan agentik.
Thomas Ezan, Jolanda Verhoef, Caren Chang • Waktu baca: 8 menit -
PetunjukJetpacker adalah aplikasi demo teknis yang dibuat tim kami dari awal untuk Google I/O tahun ini (dibuat menggunakan Antigravity). Pada dasarnya, Jetpacker membantu pengguna merencanakan, menjelajahi, dan menikmati petualangan besar berikutnya.
Jolanda Verhoef • Waktu baca: 4 menit -
PetunjukSelamat datang kembali di seri postingan blog "Membangun aplikasi Android cerdas" tempat kita mengambil aplikasi Android dasar dan mengubahnya menjadi pengalaman yang dipersonalisasi, cerdas, dan agentik. Dalam postingan sebelumnya, kita telah membahas cara memanfaatkan Firebase AI Logic untuk membangun fitur AI hybrid dan yang dihosting di cloud.
Ben Weiss • Waktu baca: 6 menit
Dapatkan insight pengembangan Android terbaru yang dikirim ke kotak masuk Anda setiap minggu.