Nasıl yapılır? rehberleri

Akıllı Android uygulamaları geliştirme: Cihaz üzerinde çıkarım

Okuma süresi 6 dakika
Caren Chang'in profilini görüntüleme
Caren Chang Geliştirici İlişkileri Mühendisi

Temel bir Android uygulamasını kişiselleştirilmiş, akıllı ve etkileşimli bir deneyime dönüştürdüğümüz "Akıllı Android uygulamaları geliştirme" blog yayınları serisine tekrar hoş geldiniz. Önceki gönderimizde, bu seride kullanacağımız demo uygulaması Jetpacker'ı tanıtmıştık

Bu blog yayınında, cihaz üzerinde akıllı özellikler oluşturmak için ML Kit'in Prompt API'si aracılığıyla Gemini Nano'yu nasıl kullanabileceğinizi açıklayacağız.

Cihaz üzerinde akıllı özellikler oluşturma, verileri bir sunucuya göndermeden doğrudan cihaz üzerinde istemleri ve verileri işleme özelliğini ifade eder. Bu durumun bazı avantajları vardır: 

  • Kullanıcı verileri, kullanıcı gizliliğini koruyarak cihazda yerel olarak işlenebilir.
  • Modelin işlevselliği, düzensiz veya hiç internet bağlantısı olmasa bile güvenilirdir.
  • Her şey kullanıcının donanımında çalıştığından ek bulut çıkarımı maliyeti yoktur.

Cihaz üzerinde yapay zeka kullanımının avantajlarını göz önünde bulundurarak Jetpacker'a eklenmesi gereken üç özellik belirledik: Seyahat planlarını özetleme, harcamaları yönetme ve sesli not alma. Bu özellikler, kullanıcı deneyimini iyileştirecek.

Screenshot 2026-07-02 at 12.57.08 PM.png
Jetpacker'daki cihaz üzerinde özellikler: Seyahat planlarını özetleme, giderleri yönetme ve sesli notlar

Kısa metinlerin yüksek kaliteli ve özel özetleri

Seyahat planı ekranı, kullanıcılara belirli bir gezideki tüm etkinliklere dair hızlı bir genel bakış sunar. Bu ekranda çok fazla bilgi yer aldığından, ekran kısa sürede karmaşık bir hâl alabilir. Kullanıcıların kendilerini bunalmış hissetmeden hazırlanmalarına yardımcı olmak için en üste "Seyahatinize hazırlanın" bölümünü ekleyebiliriz.

Screenshot_20260702_111934.png
Romantik Paris gezisi, sanat, manzaralar ve lezzetli yemekleri bir araya getiren klasik bir Paris macerası olarak özetleniyor. Ayrıca bir ipucu ve bazı faydalı ifadeler de eklenmiştir.

Bir seyahat planı girip LLM'den bunu özetlemesini isteyerek geziyle ilgili hızlı bir özetin yanı sıra paketleme ipuçları ve faydalı yerel ifadeler oluşturabiliriz. Bu, cihaz üzerinde model için çeşitli nedenlerle mükemmel bir kullanım alanıdır: 

  • Performans ve kalite: Hem giriş hem de çıkış metni nispeten kısadır. Bu sayede, cihaz üzerinde çözümün performans ve kalitesinin daha güçlü bulut modelleriyle aynı seviyede olmasını bekleyebiliriz.
  • Ölçeklenebilirlik: Çıkarım işlemini cihaz üzerinde yapma, artan bulut çıkarım maliyetlerini yönetme konusunda endişelenmeden bu özelliği birkaç kullanıcıdan milyonlarca kullanıcıya ölçeklendirmemize olanak tanır.
  • Düşük gecikme süresi ve güvenilirlik: Cihaz üzerinde çıkarım, düşük gecikme süresini garanti ederek kullanıcılar çevrimdışıyken bile güvenilir bir deneyim sunar.

Cihaz üzerinde geliştirme için Google'ın mobil cihazlar için optimize edilmiş en verimli modeli olan Gemini Nano'yu kullanırız. Birkaç yıl önce kullanıma sunulan Gemini Nano, şu anda 140 milyondan fazla cihazda çalışıyor. Modelin en yeni sürümü olan Gemini Nano 4, kısa süre önce kullanıma sunulan Gemma 4 modelinin mimari temeli üzerine kurulmuştur ve maksimum pil ile performans verimliliği için daha da optimize edilmiştir. 

ML Kit'in Prompt API'sini kullanarak cihaz üzerinde özelliklerimizin prototipini oluşturmak için Gemini Nano 4'ün yeni model özelliklerinden yararlanabiliriz. Gezinin seyahat planını içeren bir istem oluşturup modelden hazırlıkla ilgili ipuçlarının yanı sıra bir özet oluşturmasını isteyeceğiz.

En uygun istemi bulmak genellikle birkaç yineleme gerektirir. AICore uygulaması, sürecin bu adımı için mükemmeldir. AICore için geliştirici önizleme seçeneğini etkinleştirdikten sonra, istemleri test etmek ve modelin beklenen çıkışlarını görmek için Gemini Nano 4 gibi önizleme modellerini indirebiliriz. İstemde birkaç yineleme yaparak yanıt hızını 13 saniyeden 2 saniyenin altına düşürmeyi başardık. Son kod uygulamasına ve isteme buradan göz atın.

[ASSET HERE - FILE TOO LARGE ATM]

Hassas kullanıcı girişleri için yerel işleme

Ardından, kullanıcıların seyahatlerinden daha fazla keyif almalarına yardımcı olmak için makbuzları ayıklama ve bütçeleri hesaplama gibi manuel işlemleri ortadan kaldıran basit bir gider yöneticisi oluşturacağız. 

Makbuzlar kredi kartı numarası ve adres gibi hassas bilgiler içerebileceğinden bu da cihaz üzerinde çözüm için bir başka harika kullanım alanıdır. Cihaz üzerinde işleme sayesinde kullanıcılar, özel bilgilerinin buluta gönderilmeden cihaz üzerinde yerel olarak işleneceğinden emin olabilir.

Ayrıca Gemini Nano 4, çok formatlılık için geliştirilmiş model özelliklerine sahiptir. Özellikle OCR ve görsel veri çıkarma gibi görüntü anlama görevlerinde daha iyi performans gösterir. Bu nedenle, makbuzlardan bilgi çıkarma gibi görevler için mükemmel bir çözümdür.

Bu kullanım alanında istem, makbuzun resmini analiz edecek ve oluşturulan başlık, harcanan tutar ve gider kategorisi gibi bilgileri çıkış olarak verecek. Modelin bilgileri tercih edilen biçimde vermesini sağlamak için ML Kit'in Yapılandırılmış Çıkış API'sini kullanarak tanımladığımız bir Kotlin veri nesnesini sorunsuz bir şekilde çıkış olarak verebiliriz.

// 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()?.response

Çok formatlı giriş

Son olarak, kullanıcıların gezi sırasında sesli notlar kaydetmesine yardımcı olmak için tamamen cihaz üzerinde çalışan bir sesli not özelliği oluşturalım. ML Kit'in Konuşma Tanıma API'sini kullanarak kullanıcıların, metne otomatik olarak dönüştürülen kısa sesli notlar kaydetmesini sağlayacağız. ML Kit'in Prompt API'sini kullanarak, kaydedilen sesli notla hangi gezi etkinliğinin ilişkilendirildiğini belirleriz. Böylece kullanıcılar, gezi planında ilerlerken gezilerini kolayca özetleyebilir. 

Screenshot_20260702_115529.png
Roma tatili seyahat planında sesli not alıntıları gösteriliyor.

ML Kit GenAI Speech Recognition API, iki farklı mod kullanarak ses içeriklerini tamamen cihaz üzerinde metne dönüştürmenize olanak tanır. Temel mod, geleneksel bir cihaz üzerinde konuşma tanıma modeli kullanır ve API düzeyi 31 ile daha yüksek olan çoğu Android cihazda kullanılabilir. Gelişmiş mod, daha geniş dil desteği ve daha iyi kalite sunmak için Gemini Nano'yu kullanır ve şu anda Pixel 10 cihazlarda desteklenmektedir.

Özelliğimiz için Speech Recognition API'yi ML Kit GenAI Prompt API ile birleştiriyoruz:

// 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)
}

Sonuç

ML Kit'in üretken yapay zeka API'lerini kullanarak Gemini Nano'dan yararlanıp JetPacker uygulaması için tamamen cihaz üzerinde çalışan akıllı özellikler geliştirdik ve ek bulut maliyeti olmadan daha iyi bir kullanıcı deneyimi sunduk.

Github'da Jetpacker'ın kaynak kodunun tamamına göz atın ve cihaz üzerinde modeller, bulut destekli akıl yürütme ve en yeni aracı çerçevelerini kullanarak akıllı özellikleri doğrudan uygulamanıza nasıl entegre edeceğiniz hakkında daha fazla bilgi edinmek için Google'ın yapay zekasıyla akıllı Android uygulamaları geliştirme başlıklı videoyu izleyin.

Daha fazla bilgi

Bu blog yayını dizisinin diğer bölümlerine göz atın:

1. Bölüm: Uygulamanın tanıtımı ve genel bakış.

2. Bölüm (bu gönderi!): Cihaz üzerinde zeka. Seyahat planı özetleme, makbuz ayrıştırma ve yerel ses işleme gibi gizliliğe öncelik veren özellikler oluşturmak için ML Kit'in üretken yapay zeka API'lerini ve Gemini Nano'yu ayrıntılı olarak inceleyin.

3. bölüm: Karma ve bulut muhakemesi. LLM yanıtlarını Google Haritalar ve web bağlamı gibi gerçek dünya verilerine dayandırmak için Firebase AI Logic'i nasıl kullanacağınızı keşfedin.

4. Bölüm: Sistem entegrasyonu. AppFunctions kullanarak Android Intelligence sistemiyle entegrasyon.

5. bölüm (yakında): Uygulama içi ajan tabanlı iş akışları. Uygulamayı A2UI ve ADK destekli uçtan uca rezervasyon asistanıyla genişletin.

Android geliştirme hakkında daha fazla bilgi edinmek ister misiniz? Android Developers'ı YouTube veya LinkedIn'de takip edin.

Bu blog yayınındaki tüm kod snippet'leri aşağıdaki telif hakkı bildirimine tabidir:

Copyright 2026 Google LLC.
SPDX-License-Identifier: Apache-2.0
Yazan:
Okumaya devam et