TalkBack — Google tomonidan Android uchun ishlab chiqilgan, Android Accessibility Suite paketiga kiruvchi o‘rnatilgan ekran o‘qituvchisi (screen reader). U interfeys elementlarini ovozli talaffuz qiladi va imo-ishoralar yordamida qurilmani boshqarish imkonini beradi, ko‘zi ojiz va zaif ko‘ruvchi foydalanuvchilarga smartfon funktsiyalariga to‘liq kirishni ta’minlaydi. Google Accessibility Help (2025) ma’lumotiga ko‘ra, TalkBack aksariyat Android qurilmalarida oldindan o‘rnatilgan va turli ovozli dvigatellar bilan 30 dan ortiq tilni qo‘llab-quvvatlaydi.
Asosiy ma’lumotlar
TalkBack — Google tomonidan ishlab chiqilgan va Android Accessibility Suite tarkibiga kiruvchi Android uchun ekran o‘qituvchisi (screen reader). U ko‘rish qobiliyati buzilgan foydalanuvchilar uchun ovozli qayta aloqa va imo-ishora bilan boshqarishni ta’minlaydi. TalkBack smartfonlarda, planshetlarda, Smart TV va Wear OS-dagi taqiladigan qurilmalarda ishlashi mumkin.
TalkBack birinchi marta 2009 yilda Android 1.6 (Donut) da paydo bo‘ldi. Dastlab bu alohida loyiha edi, ammo Android 4.0 (Ice Cream Sandwich) chiqishi bilan u Switch Access va Select to Speak-ni ham o‘z ichiga olgan Android Accessibility Suite ning bir qismiga aylandi. Android 10 dan boshlab, TalkBack Google Play xizmatlariga ega barcha qurilmalarda, jumladan Samsung, Xiaomi, Oppo va boshqa hamkor qurilmalarida oldindan o‘rnatilgan.
TalkBack turli ovozli dvigatellar bilan 30 dan ortiq tilni qo‘llab-quvvatlaydi: Google Text-to-Speech, Samsung TTS va uchinchi tomon dvigatellari. O‘zbek tili uchun tabiiy talaffuz va to‘g‘ri intonatsiyani ta’minlaydigan Google TTS ovozli dvigateli ishlatiladi. Foydalanuvchi nutq tezligini, ohang balandligini sozlashi va TalkBack sozlamalarida ovoz jinsini tanlashi mumkin.
TalkBack foydalanish imkoniyati xizmati (AccessibilityService) — interfeys holati haqida ma’lumot olish va u bilan dasturiy ravishda o‘zaro ta’sir qilish imkonini beruvchi Android tizim mexanizmi asosida ishlaydi. TalkBack yoqilganda, u barcha teginish hodisalarini ushlaydi va ularni ekran o‘qituvchisining maxsus imo-ishoralariga aylantiradi.
TalkBack ishining asosiy elementi — foydalanish imkoniyati fokusi (accessibility focus). Matn maydonining ajratilishi sifatida ko‘rinadigan standart kirish fokusidan farqli o‘laroq, foydalanish imkoniyati fokusi element atrofida sariq ramka sifatida ko‘rsatiladi va TalkBacksiz foydalanuvchi uchun ko‘rinmaydi. Foydalanish imkoniyati fokusi elementga tushganda, TalkBack uning mazmuni, turi va holatini talaffuz qiladi.
Foydalanuvchi foydalanish imkoniyati fokusini imo-ishoralar bilan harakatlantiradi: o‘ngga surish — keyingi element, chapga surish — oldingi element. Elementlar AccessibilityNodeInfo — Android har bir ekran uchun quradigan foydalanish imkoniyati daraxti tomonidan belgilangan tartibda aylanib chiqiladi. Dasturchi accessibilityTraversalBefore va accessibilityTraversalAfter xususiyatlari orqali tartibga ta’sir qilishi mumkin, bu ayniqsa maxsus joylashuvli murakkab ekranlar uchun muhimdir.
Ekrandagi har bir View foydalanish imkoniyati daraxtidagi tugun — AccessibilityNodeInfo obyekti bilan ifodalanadi. Bu obyekt tarkibiga: element matni (contentDescription yoki view matni), element turi (tugma, belgilash katagi, kiritish maydoni), holati (yoqilgan/o‘chirilgan/tanlangan), ekrandagi joylashuvi va mavjud harakatlar ro‘yxati kiradi. TalkBack bu daraxtni aylanib chiqadi va har bir tugunni aylanish tartibida talaffuz qiladi.
Agar View matn mazmuniga ega bo‘lmasa (masalan, tavsifsiz ImageView), u TalkBack uchun ko‘rinmas bo‘ladi — foydalanuvchi uning mavjudligidan xabardor bo‘lmaydi. Bu muammoni hal qilish uchun dasturchi contentDescription — TalkBack bo‘shliq o‘rniga talaffuz qiladigan matn tavsifini o‘rnatadi. Android shuningdek o‘zgaruvchan holatga ega elementlar uchun stateDescription (tanlangan/tanlanmagan) va maslahatli kiritish maydonlari uchun hintText-ni qo‘llab-quvvatlaydi.
TalkBack standart Android imo-ishoralarini ekran o‘qituvchisining maxsus imo-ishoralariga aylantiradi. Ko‘pchilik operatsiyalar bir yoki ikki barmoq bilan bajariladi, uch barmoqli imo-ishoralar esa global harakatlar uchun ajratilgan.
| Harakat | Imo-ishora | Natija |
|---|---|---|
| Elementni talaffuz qil | 1 barmoq bilan teginish | Element nomi va turini aytadi |
| Faollashtir | Ikki marta teginish | Tugmani bosish yoki o‘tish |
| Keyingi | O‘ngga surish | Keyingi element |
| Oldingi | Chapga surish | Oldingi element |
| Aylantirish | 2 barmoq surish | Ro‘yxatni aylantirish |
| TalkBack menyusi | Yuqori-chapga surish | Global sozlamalar menyusi |
„Yuqori-chapga surish“ imo-ishorasi (L shaklidagi surish) TalkBack global menyusini ochadi, bu erda foydalanuvchi nutq tezligini o‘zgartirishi, ekran pardasini yoqishi, o‘quv qo‘llanmani ishga tushirishi yoki sozlamalarni ochishi mumkin. TalkBack shuningdek elementlar uchun kontekst menyusini qo‘llab-quvvatlaydi: yuqori-o‘ngga surish joriy element uchun mavjud harakatlar ro‘yxatini ochadi (masalan, matn maydoni uchun „nusxa olish“, „qo‘yish“ yoki chat xabari uchun „o‘chirish“).
Android foydalanish imkoniyatini sozlash uchun boy API taqdim etadi. Asosiy daraja contentDescription dir, ammo TalkBack ni sifatli qo‘llab-quvvatlash uchun AccessibilityNodeInfo, AccessibilityDelegate va LiveRegion bilan ishlash talab qilinadi.
android:contentDescription atributi TalkBack uchun elementning matn tavsifini o‘rnatadi. ImageView, ImageButton, FloatingActionButton va matn mazmuniga ega bo‘lmagan har qanday maxsus View uchun majburiydir. Standart elementlar (TextView, Button) uchun contentDescription ixtiyoriy — TalkBack matnni avtomatik o‘qiydi.
val avatarView = ImageView(this)
avatarView.contentDescription = "Foydalanuvchi avatari"
avatarView.importantForAccessibility =
IMPORTANT_FOR_ACCESSIBILITY_YES
val playButton = ImageButton(this)
playButton.contentDescription = "Videoni ijro etish"
val progressBar = ProgressBar(this)
progressBar.importantForAccessibility =
IMPORTANT_FOR_ACCESSIBILITY_NO
importantForAccessibility bayrog‘i elementning TalkBack uchun ko‘rinishini boshqaradi. NO qiymati elementni foydalanish imkoniyati daraxtidan yashiradi — dekorativ tasvirlar, ko‘rsatkichlar va maxsus fonlar uchun foydali. YES qiymati elementni matn bo‘lmasa ham, aylanishga majburiy kiritadi. NO dan suiiste’mol qilmaslik muhim: semantik muhim elementlarni yashirish ilovani TalkBack foydalanuvchilari uchun foydalanish imkonsiz qiladi.
Standart bosish ishlovchilaridan foydalanmaydigan maxsus Viewlar uchun foydalanish imkoniyati hodisalarini qayta ishlovchi AccessibilityDelegate sinfini bekor qilish kerak. Delegat maxsus tavsif, element turi va TalkBack kontekst menyusi orqali foydalanuvchiga taklif qiladigan mavjud harakatlar ro‘yxatini o‘rnatish imkonini beradi.
class CustomButtonDelegate : View.AccessibilityDelegate() {
override fun onInitializeAccessibilityNodeInfo(
host: View, info: AccessibilityNodeInfoCompat
) {
super.onInitializeAccessibilityNodeInfo(host, info)
info.text = "Maxsus tugma"
info.className = Button::class.java.name
info.addAction(
AccessibilityNodeInfoCompat.AccessibilityActionCompat(
R.id.custom_action, "Ulashish"
)
)
}
override fun performAccessibilityAction(
host: View, action: Int, args: Bundle?
): Boolean {
if (action == R.id.custom_action) {
shareContent()
return true
}
return super.performAccessibilityAction(host, action, args)
}
}
Misolda delegat TalkBack-ga elementning tugma ekanligini bildiradi (className = Button) va TalkBack kontekst menyusida paydo bo‘ladigan „Ulashish“ maxsus harakatini taqdim etadi. performAccessibilityAction metodi bu harakatning chaqirilishini qayta ishlaydi. Delegatsiz TalkBack maxsus View-ni interaktivliksiz oddiy maydon sifatida qabul qilgan bo‘lardi va foydalanuvchi u bilan o‘zaro ta’sir qila olmas edi.
TalkBack ni to‘liq qo‘llab-quvvatlash nafaqat contentDescription, balki fokusni boshqarish, dinamik yangilanishlar uchun LiveRegion, yoqilgan ekran o‘qituvchisi bilan sinov va turli Android versiyalariga moslashishni o‘z ichiga oladi.
Ekran mazmuni foydalanuvchining aniq harakatisiz o‘zgarganda (masalan, yangi xabar bildirishnomasi paydo bo‘lganda yoki layk hisoblagichi yangilanganda), TalkBack bildirishnoma olishi kerak. Buning uchun XML-da View uchun android:accessibilityLiveRegion atributi yoki kodda setAccessibilityLiveRegion() metodi ishlatiladi. polite qiymati joriy talaffuz tugaganidan keyin e’lon qo‘shadi, assertive qiymati esa darhol uni to‘xtatadi.
val statusText = TextView(this)
statusText.accessibilityLiveRegion =
View.ACCESSIBILITY_LIVE_REGION_POLITE
// Matn yangilanganda TalkBack avtomatik
// o‘zgarishni e’lon qiladi
statusText.text = "Annadan yangi xabar"
// Muhim bildirishnomalar uchun — assertive
errorBanner.accessibilityLiveRegion =
View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE
LiveRegion — iOS-dagi UIAccessibility.post ning analogidir. Aksariyat yangilanishlar uchun polite (yangi xabarlar, status yangilanishi) va faqat muhim xatolar uchun assertive (muvaffaqiyatsiz to‘lov, ulanishni yo‘qotish) dan foydalaning. Assertive dan haddan tashqari ko‘p foydalanish salbiy foydalanuvchi tajribasini yaratadi — TalkBack doimiy ravishda joriy talaffuzni toʻxtatadi.
Bir nechta View bir mantiqiy birlikni tashkil etadigan murakkab ekranlar uchun navigatsiyani bekor qilish uchun AccessibilityNodeProvider yoki focusSearch ishlatiladi. Masalan, 42 katakchadan iborat maxsus taqvim (6 hafta × 7 kun) foydalanuvchini keyingi blokga o‘tish uchun barcha 42 elementni aylantirishga majbur qilmasligi kerak. Dasturchi katakchalarni mantiqiy guruhlarga birlashtirishi mumkin: oy → hafta → kun.
Jetpack Compose uchun o‘xshash API taqdim etuvchi .semantics {} modifikatori ishlatiladi: contentDescription, liveRegion, stateDescription, disabled va customActions. Compose shuningdek bola semantikalarini bittaga birlashtirish uchun mergeDescendants-ni qo‘llab-quvvatlaydi, bu har bir View uchun qo‘lda accessibilityDelegate sozlashisiz elementlarni guruhlashni soddalashtiradi.
Button(
onClick = { sendMessage() },
modifier = Modifier.semantics {
contentDescription("Xabar yuborish")
stateDescription("Yuborishga tayyor")
}
) {
Icon(Icons.Filled.Send, "Yuborish")
}
TalkBack sinovi jismoniy qurilma yoki xizmat yoqilgan emulyator orqali amalga oshiriladi. Ekran o‘chirilgan (Screen Curtain) holda asosiy foydalanuvchi stsenariylaridan o‘tish tavsiya etiladi — bu vizual qayta aloqaning to‘liq yo‘qligini simulyatsiya qiladi. Android shuningdek foydalanish imkoniyati muammolarini avtomatik aniqlash uchun Accessibility Scanner vositasini taqdim etadi, u contentDescription-siz elementlarni, juda kichik teginish maydonlarini va past kontrastni ajratib ko‘rsatadi.
Ko‘p beriladigan savollar
Sozlamalar → Foydalanish imkoniyati → TalkBack → Yoqish. Tez yoqish uchun ikkala ovoz balandligi tugmasini bir vaqtda 3 soniya bosish ishlatiladi. Google Assistant ham „TalkBack-ni yoq“ ovozli buyrug‘i bilan TalkBack-ni faollashtirishi mumkin.
TalkBack — Android uchun ekran o‘qituvchisi, VoiceOver — iOS uchun. TalkBack AccessibilityService va sariq ramkali foydalanish imkoniyati fokusidan foydalanadi, VoiceOver esa UIAccessibility va rotordan. Imo-ishoralar va menyular farq qiladi: TalkBack global menyu uchun L shaklidagi surishlarga ega.
Barcha ImageView va maxsus elementlar uchun contentDescription o‘rnating. Dekorativ elementlarni yashirish uchun importantForAccessibility dan foydalaning. Dinamik yangilanishlar uchun accessibilityLiveRegion sozlang va Accessibility Scanner orqali tekshiring. Compose-da .semantics{} modifikatoridan foydalaning.
Bu foydalanish imkoniyati daraxtidagi interfeys elementini ifodalovchi obyekt. Matn, tur, holat, joylashuv va harakatlar ro‘yxatini o‘z ichiga oladi. TalkBack navigatsiya uchun bu daraxtni aylanib chiqadi. Dasturchi uni AccessibilityDelegate yoki XML-dagi atributlar orqali o‘zgartirishi mumkin.
importantForAccessibility ni tekshiring — ehtimol NO ga o‘rnatilgan. Matnsiz elementlar uchun contentDescription o‘rnatilganligiga ishonch hosil qiling. Maxsus Viewlar uchun onInitializeAccessibilityNodeInfo bilan AccessibilityDelegate amalga oshiring. Diagnostika uchun Accessibility Scanner dan foydalaning.
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.