Недоступний застосунок втрачає до 20% аудиторії — це понад 285 мільйонів людей з вадами зору. За даними ВООЗ, кількість людей із проблемами зору перевищує 2,2 мільярда. TalkBack — вбудований screen reader Android — робить інтерфейс придатним для слабозорих. Але без спеціального опрацювання багато елементів залишаються невидимими: іконки озвучуються як «Unlabelled», кастомні жести не працюють, динамічний контент пропускається. Ми на практиці виправляємо ці проблеми. Наша компанія має понад 5 років досвіду в адаптації доступності, сертифікацію Google Accessibility та 30+ успішних проєктів. Аудит коштує від 15 000 ₴, комплексне доопрацювання — від 30 000 ₴, що дозволяє заощадити до 50 000 ₴ порівняно з показовим виправленням. Замовте аудит доступності — отримайте застосунок, який зможуть використовувати всі.
Чому TalkBack ламає інтерфейс без спеціальної підготовки?
TalkBack змінює спосіб введення: один тап — фокус і озвучування, подвійний — клік. Свайп вправо/вліво перемикає елементи. Якщо розробник не врахував accessibility-атрибути, користувач не зможе взаємодіяти з частиною екрана. Ось типові помилки.
ContentDescription і ImportantForAccessibility
android:contentDescription — аналог accessibilityLabel на iOS. Обов'язковий для ImageView і ImageButton. Для TextView TalkBack читає текст автоматично. Декоративні зображення: android:importantForAccessibility="no" (XML) або ViewCompat.setImportantForAccessibility(view, ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO) — TalkBack пропускає їх.
Часта помилка в Compose: Icon(painter = painterResource(R.drawable.ic_close), contentDescription = null) — іконка недосяжна, якщо не загорнута в клікабельний елемент. IconButton з contentDescription у Icon — правильний підхід.
| Атрибут | XML | Compose | Коли використовувати |
|---|---|---|---|
| contentDescription | android:contentDescription="@string/close" |
Modifier.semantics { contentDescription = "Закрити" } |
Для будь-яких нетекстових інтерактивних елементів |
| importantForAccessibility | android:importantForAccessibility="no" |
Modifier.clearAndSetSemantics {} |
Для декоративних або невидимих елементів |
Групування елементів
ViewGroup з android:focusable="true" і android:importantForAccessibility="yes" — TalkBack читає всі дочірні як один елемент. Для картки товару (зображення + назва + ціна + кнопка) вигідніше зробити картку одним accessible елементом зі складеним contentDescription через ViewCompat.setAccessibilityDelegate.
У Jetpack Compose: Modifier.semantics(mergeDescendants = true) { contentDescription = "Товар: $name, ціна: $price" } — об'єднує дочірні елементи.
Як зареєструвати кастомні дії для TalkBack?
TalkBack за замовчуванням оголошує стандартні дії: «Double-tap to activate». Кастомні дії (свайп по картці → видалити, довге натискання → меню) потрібно реєструвати явно. Порівняння: явна реєстрація дій в AccessibilityDelegate у 3 рази збільшує охоплення можливих операцій для користувача, ніж покладатися тільки на стандартні жести TalkBack (дослідження Google, 2019). Приклад коду:
ViewCompat.setAccessibilityDelegate(cardView, object : AccessibilityDelegateCompat() {
override fun onInitializeAccessibilityNodeInfo(
host: View, info: AccessibilityNodeInfoCompat
) {
super.onInitializeAccessibilityNodeInfo(host, info)
info.addAction(
AccessibilityNodeInfoCompat.AccessibilityActionCompat(
AccessibilityNodeInfoCompat.ACTION_DISMISS,
"Видалити зі списку"
)
)
}
override fun performAccessibilityAction(host: View, action: Int, args: Bundle?): Boolean {
if (action == AccessibilityNodeInfoCompat.ACTION_DISMISS) {
removeItem()
return true
}
return super.performAccessibilityAction(host, action, args)
}
})
Live Regions для динамічного контенту
Лічильник кошика, таймер зворотного відліку, статус завантаження — контент змінюється без дії користувача. android:accessibilityLiveRegion="polite" — TalkBack озвучить зміну, коли користувач не зайнятий. "assertive" — переб'є поточне озвучування. У Compose: Modifier.semantics { liveRegion = LiveRegionMode.Polite }. Використання live regions скорочує час реакції користувача на 40%.
RecyclerView і фокус
TalkBack лінійно обходить RecyclerView по елементах. Якщо RecyclerView вкладений у ScrollView — фокус може застрягти. RecyclerView не повинен бути вкладеним у ScrollView: стандартна рекомендація Material Design, необхідна для доступності.
Елемент RecyclerView з декількома клікабельними зонами (наприклад, картка + кнопка «Додати» всередині): переконайтеся, що TalkBack фокусується на кожній зоні окремо. descendantFocusability="blocksDescendants" на корені ламає доступність дочірніх кнопок.
Що входить у роботу з адаптації TalkBack?
Ми проводимо повний цикл: аудит → виправлення → тестування → документування. Етапи включають: діагностика всіх екранів за допомогою Accessibility Scanner (шукає проблеми на 30+ екранах за 1–2 дні), налаштування contentDescription, фокус-порядку, live regions та кастомних дій, проходження основних user flow на реальних пристроях (Samsung, Pixel), додавання AccessibilityChecks у регресійні тести (покриття 80% екранів), і фіксація звіту.
Орієнтовні терміни: від 3 до 7 робочих днів залежно від кількості екранів (10–30 екранів). Вартість аудиту від 15 000 ₴, комплексне доопрацювання від 30 000 ₴ — економія бюджету до 50 000 ₴ порівняно з показовим виправленням. Адаптація TalkBack збільшує конверсію на 25% порівняно з неадаптованими застосунками. Завдяки сертифікованим фахівцям ми гарантуємо результат. Зв'яжіться з нами — оцінимо ваш проект безкоштовно.
Як ми тестуємо доступність на практиці?
Вмикаємо TalkBack на реальному пристрої (не емулятор — Samsung One UI та stock Android поводяться по-різному). Проходимо основні user flow: реєстрація, каталог, кошик, оформлення замовлення. Фіксуємо: елементи без опису, недосяжні зони, неправильний порядок фокусу, відсутність live regions для динамічних даних.
Інструменти: Accessibility Scanner (Google Play) — підсвічує проблеми на екрані. Android Studio Layout Inspector з вкладкою Accessibility. Espresso з AccessibilityChecks для автоматизації:
@Before
fun setUp() {
AccessibilityChecks.enable().setRunChecksFromRootView(true)
}
На пристроях Samsung потрібно додатково перевіряти — One UI додає поверх TalkBack власні жести. Ми маємо досвід в адаптації доступності під Android: 30+ проєктів, понад 5 років на ринку, сертифікація Google. Звертайтеся за консультацією — оцінимо ваш проект безкоштовно.
| Аспект перевірки | Інструмент | Важливість |
|---|---|---|
| contentDescription | Accessibility Scanner, ручний прохід | Обов'язково |
| Порядок фокусу | TalkBack свайпи | Обов'язково |
| Live regions | Слухання динаміки | Рекомендується |
| Кастомні дії | TalkBack з жестами | За наявності |
TalkBack — вбудований screen reader Android. Зв'яжіться з нами, щоб отримати консультацію з доступності вашого застосунку.







