Screen Reader (ekran o'qish vositasi) — matn va grafik interfeys elementlarini nutqqa yoki Brayl displeyiga chiqarishga aylantiruvchi, ko'zi ojiz va zaif ko'ruvchi foydalanuvchilarga vizual nazoratsiz qurilma bilan o'zaro aloqa qilish imkonini beruvchi dastur. Mobil platformalarda asosiy ekran o'qish vositalari iOS-da VoiceOver va Android-da TalkBack hisoblanadi. Jahon Sog'liqni Saqlash Tashkiloti (2023) ma'lumotlariga ko'ra, Screen Reader dunyoda ko'rish qobiliyati buzilgan 285 million kishi uchun raqamli texnologiyalarga kirishning asosiy vositasidir.
Asosiy ma'lumotlar
Screen Reader (ekran o'qish vositasi) — grafik foydalanuvchi interfeysini talqin qiluvchi va uni vizual bo'lmagan shaklda taqdim etuvchi yordamchi texnologiya (Assistive Technology, AT): sintezlashtirilgan nutq yoki taktil Brayl displeyi orqali. Ekran o'qish vositalari to'liq yoki qisman ko'rish qobiliyatini yo'qotgan odamlar uchun kompyuterlar va mobil qurilmalarga kirishning asosiy vositasidir.
Birinchi ekran o'qish vositalari 1980-yillarning oxirida MS-DOS uchun (masalan, Vocal-Eyes) va keyinchalik Windows uchun (JAWS, NVDA) paydo bo'ldi. Mobil platformalarda ekran o'qish vositalari tizim darajasida o'rnatila boshlandi: Apple 2009-yilda iPhone 3GS-da VoiceOver-ni, Google o'sha yili Android 1.6-da TalkBack-ni integratsiya qildi. 2025-yilga kelib, deyarli barcha zamonaviy smartfonlarda qo'shimcha dasturiy ta'minot o'rnatishni talab qilmaydigan o'rnatilgan ekran o'qish vositasi mavjud.
Screen Reader shunchaki ekrandan matnni o'qimaydi — interfeys ierarxiyasini tahlil qiladi, element turlarini (tugma, havola, sarlavha, kiritish maydoni), ularning holatini (yoqilgan/o'chirilgan, tanlangan/tanlanmagan) va o'zaro bog'liqliklarini (ota-bola, guruh) aniqlaydi. Bu ma'lumot foydalanuvchiga ovozli ko'rsatmalar yoki fokusning holatiga qarab real vaqtda hujayralarni yangilaydigan Brayl displeyining taktil sezgilari orqali uzatiladi.
Screen Reader operatsion tizim bilan chambarchas bog'liq holda ishlaydi, uning interfeysning ichki ko'rinishiga — qulaylik daraxtiga (Accessibility Tree) kirish imkoniyatiga ega bo'ladi. Bu mexanizm iOS va Android-da bir xil, garchi API nomlari farq qilsa ham.
Ekran o'qish vositasining asosiy chiqish kanali nutq sintezatoridir (Text-To-Speech, TTS). Qulaylik fokusi elementga tushganda, ekran o'qish vositasi uning matn mazmunini (yoki dasturchi tomonidan belgilangan tavsifni) chiqarib oladi va TTS dvigateliga yuboradi. Apple Speech Synthesis va Google Text-to-Speech kabi zamonaviy TTS dvigatellari tinish belgilari va mazmun turiga qarab to'g'ri intonatsiya, pauza va urg'u bilan tabiiy nutq yaratish uchun neyron tarmoqlardan foydalanadi.
Foydalanuvchi nutq tezligini (qulay idrok etish uchun odatda maksimalning 60-80%), ohang balandligi va ovoz balandligini sozlashi mumkin. Ba'zi ekran o'qish vositalari bir nechta ovozlarni va ular orasida mazmun turiga qarab almashishni qo'llab-quvvatlaydi — masalan, matn o'qish uchun sekinroq ovoz va interfeysda navigatsiya uchun tez ovoz. Brayl displeylari Bluetooth orqali ulanadi va bir vaqtning o'zida 40-80 belgini ko'rsatadi, fokus har o'zgarganida qatorni yangilaydi.
Ekran o'qish vositasi standart kiritish fokusidan farq qiladigan qulaylik fokusi (Accessibility Focus) kontseptsiyasidan foydalanadi. Foydalanuvchi qulaylik fokusini imo-ishoralar (teginish, surish) bilan harakatlantiradi va ekran o'qish vositasi fokus ostidagi elementni aytadi. Navigatsiya tartibi odatda vizual tartibga amal qiladi: chapdan o'ngga, yuqoridan pastga. Dasturchi murakkab joylashuvlar uchun bu tartibni bekor qilishi mumkin.
Ekran o'qish vositasi shuningdek, foydalanuvchi rotor (VoiceOver) yoki menyu (TalkBack) orqali o'tadigan turli navigatsiya rejimlarini qo'llab-quvvatlaydi: sarlavhalar, havolalar, belgilar, so'zlar, shakllar bo'yicha. Sarlavha rejimida ekran o'qish vositasi faqat H1-H6 orasida harakatlanadi — bu uzoq sahifalar va hujjatlar bo'ylab samarali navigatsiya uchun juda muhimdir. Belgi rejimi tasdiqlash kodlari yoki murakkab parollarni kiritishda yordam beradi, har bir belgini alohida talaffuz qiladi.
Mobil platformalarda ikkita ekran o'qish vositasi ustunlik qiladi: iOS-da VoiceOver va Android-da TalkBack. Ularning turli API-lari, imo-ishoralari va imkoniyatlari bor, lekin umumiy ishlash prinsipi — qulaylik daraxtini o'qish va imo-ishoralar bilan boshqarish.
VoiceOver — Apple-dan iOS, iPadOS va macOS-ga o'rnatilgan ekran o'qish vositasidir. Elementlar haqida ma'lumot olish uchun UIAccessibility API-dan foydalanadi va navigatsiya rejimlarini almashtirish uchun rotorni qo'llab-quvvatlaydi. VoiceOver iCloud (sozlamalar qurilmalar o'rtasida sinxronlanadi), Apple Pay (Touch ID yoki Face ID orqali to'lovni tasdiqlash) va dinamik matn (shrift foydalanuvchi sozlamalariga moslashadi) bilan integratsiyalangan.
VoiceOver imo-ishoralari TalkBack-dan farq qiladi: ikki barmoq bilan aylantirish (rotor), Screen Curtain uchun uch marta bosish va harakatni bekor qilish uchun ikki barmoq bilan ikki marta bosish ishlatiladi. VoiceOver dasturchi UIAccessibilityCustomRotor orqali qo'shadigan maxsus rotorlarni qo'llab-quvvatlaydi — masalan, standart tartibni chetlab o'tib, ilova bo'limlari bo'ylab tez navigatsiya qilish uchun.
TalkBack — Google-dan Android Accessibility Suite tarkibiga kiruvchi ekran o'qish vositasidir. Interfeysga kirish uchun AccessibilityService va AccessibilityNodeInfo-dan foydalanadi. TalkBack L-simon surish orqali global menyuni, elementlar uchun maxsus harakatlarni va dinamik yangilanishlar uchun LiveRegion-ni qo'llab-quvvatlaydi. Android 14 dan boshlab, TalkBack bir qo'l bilan imo-ishoralarni qo'llab-quvvatlash va Google Assistant bilan yaxshilangan integratsiyani oldi.
TalkBack VoiceOver-dan ko'ra moslashuvchan imo-ishora tizimiga ega: foydalanuvchi deyarli har qanday imo-ishorani istalgan harakatga tayinlashi mumkin. TalkBack shuningdek ekranda Brayl kiritishni (BrailleBack) qo'llab-quvvatlaydi — foydalanuvchi matnni Brayl belgilari bilan to'g'ridan-to'g'ri sensorli ekranda har bir barmoq uchun maxsus 3×2 joylashuvida kiritadi, bu esa ekran klaviaturasiga nisbatan matn kiritishni sezilarli darajada tezlashtiradi.
| Xususiyat | VoiceOver (iOS) | TalkBack (Android) |
|---|---|---|
| API | UIAccessibility | AccessibilityService |
| Navigatsiya | Rotor (2 barmoq) | Global menyu (L-surish) |
| Tillar | 40+ | 30+ |
| Maxsus harakatlar | UIAccessibilityCustomRotor | AccessibilityDelegate |
| Brayl | Tashqi displeylar | BrailleBack + tashqi |
| Dinamik yangilanishlar | UIAccessibility.post | accessibilityLiveRegion |
VoiceOver va TalkBack-dan tashqari, kamroq tarqalgan mobil ekran o'qish vositalari ham mavjud: Select to Speak (Android, tanlangan maydonni aytish), Samsung Voice Assistant (Samsung qurilmalarida One UI bilan TalkBack o'rnini bosuvchi) va maxsus sohalar uchun uchinchi tomon echimlari — masalan, Google xizmatlari bo'lmagan Xitoy smartfonlari foydalanuvchilari uchun.
Screen Reader ilovaning UI komponentlariga to'g'ridan-to'g'ri kirish imkoniyatiga ega emas. Buning o'rniga, u operatsion tizimning qulaylik API-si — oraliq qatlam orqali ishlaydi. Operatsion tizim ekran o'qish vositasi aylanib chiqadigan va tahlil qiladigan qulaylik daraxtini (Accessibility Tree) quradi.
iOS-da qulaylik daraxti ekrandagi har bir View-ga mos keladigan UIAccessibilityElement obyektlaridan quriladi. Har bir element label (asosiy matn), traits (element turi: tugma, sarlavha, havola), hint (ko'rsatma), value (surmalar va ko'rsatkichlar uchun joriy qiymat) va frame (teginish maydoni) ni o'z ichiga oladi. Tizim standart UI komponentlari uchun avtomatik elementlar yaratadi, ammo dasturchi ularni qo'shishi va sozlashi mumkin.
Android-da qulaylik daraxti AccessibilityNodeInfo obyektlaridan quriladi. Har bir tugun o'z ichiga oladi: text (matn yoki contentDescription), className (element turi), contentDescription (tavsif), stateDescription (holat), isEnabled, isChecked, isClickable va boshqa bayroqlar. Android shuningdek AccessibilityAction-ni qo'llab-quvvatlaydi — ekran o'qish vositasi foydalanuvchi nomidan bajarishi mumkin bo'lgan harakatlar ro'yxati: bosish, uzoq bosish, aylantirish, fokusni o'rnatish, matnni o'rnatish.
Interfeysda o'zgarish sodir bo'lganda (yangi element paydo bo'ldi, matn o'zgardi, element ko'rinadigan yoki ko'rinmas bo'ldi), operatsion tizim AccessibilityEvent yuboradi. Ekran o'qish vositasi bu hodisalarga obuna bo'ladi va ularga reaksiya beradi: masalan, dialog oynasi paydo bo'lganda, ekran o'qish vositasi avtomatik ravishda fokusni uning sarlavhasiga o'tkazadi va mazmunini aytadi.
// Android-da qulaylik hodisalarini tinglash
class CustomAccessibilityService : AccessibilityService() {
override fun onAccessibilityEvent(event: AccessibilityEvent?) {
event ?: return
when (event.eventType) {
TYPE_VIEW_CLICKED ->
handleClick(event)
TYPE_WINDOW_STATE_CHANGED ->
handleWindowChange(event)
TYPE_VIEW_TEXT_CHANGED ->
handleTextChange(event)
}
}
}
iOS-da shunga o'xshash hodisalar UIAccessibility.Notification orqali qayta ishlanadi: layoutChanged (joylashuv o'zgardi), screenChanged (butunlay yangi ekran), announcement (ixtiyoriy e'lon), pageScrolled (sahifa aylantirish). Dasturchi bu hodisalarni UIAccessibility.post orqali yuboradi, shunda ekran o'qish vositasi o'zgarishlarga to'g'ri reaksiya beradi. Masalan, modal oyna ochilganda yangi sarlavha bilan screenChanged yuborilishi kerak — aks holda VoiceOver oyna ostidagi oldingi elementda qoladi.
Qulay ilova yaratish — bu har bir elementga contentDescription qo'shish emas, balki vizual bo'lmagan o'zaro aloqa uchun foydalanuvchi tajribasini o'ylashdir. Asosiy qoidalar ikkala platforma uchun umumiy, garchi amalga oshirish farq qilsa ham.
Barcha interaktiv elementlar mazmunli tavsifga ega bo'lishi kerak: "Yuborish" tugmasi "Xabar yuborish" deb tavsiflanishi kerak, "Tugma" emas. Dekorativ elementlar (ajratgichlar, fon rasmlari, funksiyasiz piktogrammalar) ekran o'qish vositasidan yashirilishi kerak. Navigatsiya tartibi ekranning vizual joylashuviga emas, balki mantiqiy oqimiga mos kelishi kerak. Matn kontrasti asosiy matn uchun kamida 4.5:1 va katta matn uchun 3:1 (WCAG AA) bo'lishi kerak.
// iOS: murakkab elementni to'g'ri sozlash
let customControl = UIControl()
customControl.isAccessibilityElement = true
customControl.accessibilityLabel = "Ovoz balandligi"
customControl.accessibilityValue = "75 foiz"
customControl.accessibilityTraits = [
.adjustable,
.button
]
customControl.accessibilityHint =
"Ovoz balandligini oshiradi yoki kamaytiradi"
// Qiymat o'zgarganda yangilash
func didChangeVolume(newValue: Float) {
customControl.accessibilityValue =
"\(Int(newValue)) foiz"
UIAccessibility.post(
notification: .layoutChanged,
argument: customControl
)
}
iOS-da isAccessibilityElement bayrog'i maxsus elementlar uchun VoiceOver qo'llab-quvvatlashini yoqadi. Traits (.adjustable + .button) kombinatsiyasi VoiceOver-ga elementni yuqoriga/pastga surish bilan sozlash mumkinligini va ikki marta bosish bilan faollashtirilishini bildiradi. Qiymat o'zgarganidan so'ng albatta layoutChanged bildirishnomasi yuboriladi — aks holda VoiceOver eski qiymatni aytishda davom etadi.
iOS uchun: o'qish tartibini bekor qilish uchun accessibilityElements, kontekst menyusida qo'shimcha harakatlar uchun accessibilityCustomActions va elementlarni mantiqiy guruhlarga birlashtirish uchun shouldGroupAccessibilityChildren dan foydalaning. SwiftUI uchun .accessibilityLabel(), .accessibilityAddTraits() va .accessibilityRespondsToUserInteraction() modifikatorlarini qo'llang. Interaktiv bola elementlari bo'lgan konteynerlarda isAccessibilityElement = false ishlatishdan saqlaning — bu ularni VoiceOver-dan yashiradi.
Android uchun: navigatsiya tartibi uchun accessibilityTraversalBefore va accessibilityTraversalAfter, maxsus elementlar uchun AccessibilityDelegate va dinamik yangilanishlar uchun LiveRegion (polite/assertive) dan foydalaning. Compose-da .semantics {} modifikatorini contentDescription, stateDescription va customActions bilan qo'llang. Interaktiv bo'lmagan elementlarda focusable = true ishlatishdan saqlaning — bu TalkBack uchun yolg'on fokus nuqtalarini yaratadi va foydalanuvchini chalg'itadi.
Ekran o'qish vositasi bilan sinov albatta jismoniy qurilmada o'tkazilishi kerak. Emulyator/simulyator asosiy tushuncha beradi, ammo imo-ishoralar va javob tezligi farq qiladi. iOS uchun Accessibility Inspector (Xcode) va Android uchun Accessibility Scanner dan avtomatik muammolarni qidirish uchun foydalaning.
Asosiy sinov stsenariylari: ro'yxatdan o'tish (shaklni to'ldirish, tekshirish, yuborish), qidirish va katalog bo'ylab navigatsiya, buyurtma berish, parolni tiklash. Har bir stsenariy vizual nazoratsiz — faqat ekran o'qish vositasining ovozli ko'rsatmalari orqali bajarilishi mumkin bo'lishi kerak. Agar ekran o'qish vositasi foydalanuvchisi stsenariyni oddiy foydalanuvchi bilan bir vaqtda (±50%) yakunlay olmasa, ilova qulaylikni yaxshilashni talab qiladi.
Ko'p beriladigan savollar
Bu smartfon ekranida sodir bo'layotgan hamma narsani aytadigan dastur: matn, tugmalar, bildirishnomalar. Foydalanuvchi qurilmani imo-ishoralar bilan boshqaradi — nomini eshitish uchun elementga tegadi va faollashtirish uchun ikki marta tegadi. Screen Reader ko'rish qobiliyatini ovoz bilan almashtiradi.
iOS-da — VoiceOver (Apple-dan o'rnatilgan tizim ekran o'qish vositasi). Android-da — TalkBack (Google-dan Android Accessibility Suite tarkibiga kiradi). Ikkalasi imo-ishora boshqaruvi, ovozli qayta aloqa va Bluetooth orqali Brayl displeylarini qo'llab-quvvatlaydi.
Barcha interaktiv elementlar uchun contentDescription (Android) yoki accessibilityLabel (iOS) o'rnating. Dekorativ elementlarni ekran o'qish vositasidan yashiring. Dinamik o'zgarishlarda bildirishnomalar yuboring. Jismoniy qurilmada vizual nazoratsiz ekran o'qish vositasi yoqilgan holda sinab ko'ring.
Asosiy farq API va imo-ishoralarda. VoiceOver iOS-da UIAccessibility va navigatsiya uchun rotordan (ikki barmoq bilan aylantirish) foydalanadi. TalkBack Android-da AccessibilityService va L-simon surish orqali global menyudan foydalanadi. Ishlash prinsipi — qulaylik daraxtini aylanib chiqish — bir xil.
Screen Reader rasmni "ko'ra" olmaydi. U dasturchi contentDescription (Android) yoki accessibilityLabel (iOS) orqali o'rnatgan matn tavsifini o'qiydi. Tavsif o'rnatilmagan bo'lsa, ekran o'qish vositasi fayl nomini o'qishi yoki shunchaki "rasm" deyishi mumkin — bu foydalanuvchi uchun foydasiz.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.