Iňlis sözlerini öwrenmek üçin özbaşdak döreden native Android programmam: sözi islendik programmadan tutup almak, terjimeleri bilen AI-nyň ýazan makalasyny almak, soňra ony spaced repetition we AI-nyň düzen synaglary arkaly öwrenmek.
Meniň rolum
Özbaşdak önüm: ideýa, spesifikasiýa, Android arhitekturasy, AI integrasiýasy we işläp düzmek.
Tehnologiýalar
Kotlin
Jetpack Compose
Hilt
Room
Ktor
WorkManager
Gemini API
Anthropic API
Mesele
Näbelli sözler hemme ýerde duş gelýär — brauzerlerde, çatlarda, skrinşotlarda — we olary sözlüge göçürmek işiň akymyny bozýar. Ýönekeý terjimeler hem türgenleşiksiz çalt ýatdan çykýar.
Arhitektura
Jetpack Compose interfeýsli, ViewModel-li we use case-lerden hem-de repozitoriý interfeýslerinden ybarat domen gatlakly Kotlin programmasy; maglumat gatlagyny Hilt birikdirýär: sözler, ösüş we synaglar üçin Room, Ktor üstünde Gemini (deslapky) we Anthropic implementasiýalary bolan AiClient, oflaýn nobat üçin WorkManager, API açary üçin EncryptedSharedPreferences we täze skrinşotlary yzarlaýan foreground serwis.
Esasy çözgütler
01Bir AiClient interfeýsi, iki prowaýder
Näme üçin
Programma model bilen diňe domen interfeýsi arkaly işleşýär. Gemini we Anthropic biri-biriniň ornuny tutup bilýän implementasiýalar — prowaýderi çalyşmak dependency injection-da bir setiri üýtgetmek bilen bolýar, programmanyň galan bölegi bolsa haýsysynyň ulanylýandygyny bilmeýär.
02Modelden berk JSON, seresaply parslamak
Näme üçin
Her jogap JSON bolmaly; parser kod bloklarynyň belliklerini aýyrýar, parslamak ýalňyşlygynda bir gezek gaýtadan synanyşýar, soňra interfeýsiň görkezip biljek tipli ýalňyşlygyny gaýtarýar — programma modeliň nädogry jogaby sebäpli hiç haçan ýykylmaýar.
03AccessibilityService ýok
Näme üçin
Sözleri tutup almak üçin diňe tekst saýlama menýusy, surat paýlaşmak we skrinşotlar ulanylýar, şonuň üçin programma Android-iň iň duýgur rugsady bolmazdan işleýär.
Kompromis
Sözleri ekrandan awtomatik alyp bolmaýar; ulanyjy sözi saýlamaly, paýlaşmaly ýa-da skrinşot almaly.
Näme döretdim
Sözleri islendik ýerden tutup almak: islendik programmadaky tekst saýlama menýusy, kesip almak we AI OCR bilen paýlaşylan suratlar, ýüzýän düwmeli skrinşot yzarlaýjysy
AI-nyň ýazýan söz makalalary — düşündiriş, rus we türkmen dillerine terjimeler, mysallar — we tekstiň sesli okalmagy
AI bir interfeýsiň arkasynda, Gemini (deslapky) we Anthropic implementasiýalary bilen; ulanyjynyň öz API açary şifrlenen görnüşde saklanýar
Leitner ulgamy boýunça spaced repetition, bäş görnüşli ýerli test, AI-nyň düzýän synaglary we açyk jogaplary barlamak
Oflaýn nobat: internetsiz goşulan sözler soňra WorkManager tarapyndan işlenýär
Migrasiýalary synagdan geçirilen Room maglumat bazasy, ätiýaçlyk nusgasyny eksport/import etmek, iňlis, rus we türkmen dillerinde interfeýs