TalkBack — що це, жести керування та налаштування на Android

Автор: IT Sectr Опубліковано: 2026-05-15 Час читання: 8 хв

TalkBack — це вбудований екранний диктор (screen reader) від Google для Android, що входить до складу пакету Android Accessibility Suite. Він озвучує елементи інтерфейсу та дозволяє керувати пристроєм за допомогою жестів, надаючи незрячим та слабозорим користувачам повноцінний доступ до функцій смартфона. Згідно з Google Accessibility Help (2025), TalkBack попередньо встановлений на більшості Android-пристроїв та підтримує понад 30 мов із різними голосовими рушіями.

Головне

  • TalkBack — це вбудований screen reader від Google для Android із жестовим керуванням та голосовим зворотним зв’язком
  • Фокус доступності виділяє елемент, який TalkBack зараз озвучує, жовтим рамком
  • Жести включають дотик (озвучення), подвійне дотикання (активація) та проведення трьома пальцями
  • Розробники налаштовують доступність через contentDescription та AccessibilityNodeInfo
  • TalkBack інтегрується з Google Assistant та брайлівськими дисплеями

Що таке TalkBack?

TalkBack — це екранний диктор (screen reader) для Android, розроблений Google і що входить до складу Android Accessibility Suite. Він забезпечує голосовий зворотний зв’язок та керування жестами для користувачів із порушеннями зору. TalkBack працює на смартфонах, планшетах, Smart TV та носимих пристроях на Wear OS.

TalkBack вперше з’явився в Android 1.6 (Donut) у 2009 році. Спочатку це був окремий проект, але з виходом Android 4.0 (Ice Cream Sandwich) він став частиною Android Accessibility Suite — набору сервісів, який також включає Switch Access та Select to Speak. Починаючи з Android 10, TalkBack попередньо встановлений на всіх пристроях із сервісами Google Play, включаючи пристрої партнерів — Samsung, Xiaomi, Oppo та інші.

TalkBack підтримує понад 30 мов із різними голосовими рушіями: Google Text-to-Speech, Samsung TTS та сторонні. Для української мови Google TTS забезпечує природну вимову та правильну інтонацію. Користувач може налаштувати швидкість мовлення, висоту тону та вибрати стать голосу в налаштуваннях TalkBack.

Як працює TalkBack?

TalkBack працює на основі AccessibilityService — системного механізму Android, який дозволяє додаткам отримувати інформацію про стан інтерфейсу та програмно взаємодіяти з ним. Коли TalkBack увімкнений, він перехоплює всі події дотику та трансформує їх у спеціальні жести screen reader’а.

Фокус доступності

Ключовий елемент роботи TalkBack — фокус доступності (accessibility focus). На відміну від стандартного фокусу введення, який видний як виділення текстового поля, фокус доступності відображається жовтим рамком навколо елемента та невидний для користувачів без TalkBack. Коли фокус доступності потрапляє на елемент, TalkBack озвучує його вміст, тип та стан.

Користувач переміщує фокус доступності жестами: проведення вправо — наступний елемент, проведення вліво — попередній елемент. Елементи обходяться в порядку, визначеному AccessibilityNodeInfo — деревом доступності, яке Android будує для кожного екрану. Розробник може впливати на порядок через властивості accessibilityTraversalBefore та accessibilityTraversalAfter, що особливо важливо для складних екранів із кастомним компонуванням.

AccessibilityNodeInfo та дерево доступності

Кожний View на екрані представлений вузлом в дереві доступності — об’єктом AccessibilityNodeInfo. Цей об’єкт містить: текст елемента (contentDescription або текст view), тип елемента (кнопка, прапорець, поле введення), стан (увімкнено/вимкнено/вибрано), позицію на екрані та список доступних дій. TalkBack обходить це дерево та озвучує кожний вузол в порядку обходу.

Якщо View не має текстового вмісту (наприклад, ImageView без опису), він стає невидимим для TalkBack — користувач не дізнається про його існування. Для вирішення цієї проблеми розробник задає contentDescription — текстовий опис, який TalkBack вимовляє замість тиші. Android також підтримує stateDescription для елементів зі змінним станом (вибрано/не вибрано) та hintText для полів введення з підказкою.

Жести керування TalkBack

TalkBack перетворює стандартні жести Android у спеціальні жести screen reader’а. Більшість операцій виконується одним або двома пальцями, причому жести трьома пальцями зарезервовані для глобальних дій.

ДіяЖестРезультат
Озвучити елементДотик 1 пальцемВимовляє назву та тип елемента
АктивуватиПодвійне дотиканняНатиснення кнопки або перехід
НаступнийПроведення вправоНаступний елемент
ПопереднійПроведення влівоПопередній елемент
Прокрутка2 пальцями проведенняПрокрутка списку
Меню TalkBackПроведення вгору-влівоГлобальне меню налаштувань

Жест проведення вгору-вліво (L-подібний проведення) відкриває глобальне меню TalkBack, де користувач може змінити швидкість мовлення, увімкнути екранну шторку, запустити навчальний посібник або відкрити налаштування. TalkBack також підтримує контекстне меню для елементів: проведення вгору-вправо відкриває список доступних дій для поточного елемента (наприклад, «скопіювати», «вставити» для текстового поля або «видалити» для повідомлення в чаті).

TalkBack у мобільній розробці

Android надає багатий API для налаштування доступності. Базовий рівень — contentDescription, але для якісної підтримки TalkBack потрібна робота з AccessibilityNodeInfo, AccessibilityDelegate та LiveRegion.

ContentDescription та важливі атрибути

Атрибут android:contentDescription задає текстовий опис елемента для TalkBack. Він обов’язковий для ImageView, ImageButton, FloatingActionButton та будь-яких кастомних View без текстового вмісту. Для стандартних елементів (TextView, Button) contentDescription необов’язковий — TalkBack прочитає текст автоматично.

kotlin
val avatarView = ImageView(this)
avatarView.contentDescription = "Аватар користувача"
avatarView.importantForAccessibility =
    IMPORTANT_FOR_ACCESSIBILITY_YES

val playButton = ImageButton(this)
playButton.contentDescription = "Відтворити відео"

val progressBar = ProgressBar(this)
progressBar.importantForAccessibility =
    IMPORTANT_FOR_ACCESSIBILITY_NO

Флаг importantForAccessibility керує видимістю елемента для TalkBack. Значення NO приховує елемент з дерева доступності — корисно для декоративних зображень, індикаторів та кастомних фонів. Значення YES примусово включає елемент в обхід, навіть якщо він не має тексту. Важливо не зловживати NO: приховування семантично важливих елементів робить додаток недоступним для користувачів TalkBack.

AccessibilityDelegate та кастомні дії

Для кастомних View, які не використовують стандартні обробники кліків, необхідно перевизначити AccessibilityDelegate — клас, який обробляє події доступності. Делегат дозволяє задати кастомний опис, тип елемента та список доступних дій, які TalkBack запропонує користувачеві через контекстне меню.

kotlin
class CustomButtonDelegate : View.AccessibilityDelegate() {
    override fun onInitializeAccessibilityNodeInfo(
        host: View, info: AccessibilityNodeInfoCompat
    ) {
        super.onInitializeAccessibilityNodeInfo(host, info)
        info.text = "Кастомна кнопка"
        info.className = Button::class.java.name
        info.addAction(
            AccessibilityNodeInfoCompat.AccessibilityActionCompat(
                R.id.custom_action, "Поділитися"
            )
        )
    }

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

У прикладі делегат повідомляє TalkBack, що елемент є кнопкою (className = Button) та надає кастомну дію «Поділитися», яка з’явиться в контекстному меню TalkBack. Метод performAccessibilityAction обробляє виклик цієї дії. Без делегата TalkBack сприймав би кастомний View як просту неінтерактивну область, і користувач не зміг би взаємодіяти з ним.

Налаштування доступності для TalkBack

Повноцінна підтримка TalkBack включає не тільки contentDescription, але й керування фокусом, LiveRegion для динамічних оновлень, тестування з увімкненим screen reader’ом та адаптацію для різних версій Android.

LiveRegion для динамічного контенту

Коли вміст екрану змінюється без явної дії користувача (наприклад, з’являється сповіщення про нове повідомлення або оновлюється лічильник лайків), TalkBack повинен отримати сповіщення. Для цього використовується атрибут android:accessibilityLiveRegion для View у XML або метод setAccessibilityLiveRegion() у коді. Значення polite додає оголошення після завершення поточного озвучення, а assertive — негайно перериває його.

kotlin
val statusText = TextView(this)
statusText.accessibilityLiveRegion =
    View.ACCESSIBILITY_LIVE_REGION_POLITE

// При оновленні тексту TalkBack автоматично
// оголосить зміну
statusText.text = "Нове повідомлення від Анни"

// Для критичних сповіщень — assertive
errorBanner.accessibilityLiveRegion =
    View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE

LiveRegion — це аналог UIAccessibility.post на iOS. Використовуйте polite для більшості оновлень (нові повідомлення, оновлення статусу) та assertive тільки для критичних помилок (невдала оплата, втрата з’єднання). Надмірне використання assertive створює негативний користувацький досвід — TalkBack постійно перериватиме поточне озвучення.

Групування та провайдери доступності

Для складних екранів, де кілька View утворюють одну логічну одиницю, використовується AccessibilityNodeProvider або focusSearch для перевизначення навігації. Наприклад, кастомний календар із 42 комірок (6 тижнів × 7 днів) не повинен змушувати користувача прогортати всі 42 елементи, щоб перейти до наступного блоку. Розробник може об’єднати комірки в логічні групи: місяць → тиждень → день.

Для Jetpack Compose використовується модифікатор .semantics {}, який надає аналогічний API: contentDescription, liveRegion, stateDescription, disabled та customActions. Compose також підтримує mergeDescendants для об’єднання дочірних семантик в одну, що спрощує групування елементів без ручного налаштування accessibilityDelegate для кожного View.

kotlin
Button(
    onClick = { sendMessage() },
    modifier = Modifier.semantics {
        contentDescription("Надіслати повідомлення")
        stateDescription("Готово до відправлення")
    }
) {
    Icon(Icons.Filled.Send, "Надіслати")
}

Тестування TalkBack виконується через фізичний пристрій або емулятор з увімкненим сервісом. Рекомендується пройти ключові користувацькі сценарії з вимкненим екраном (Screen Curtain) — це симулює повну відсутність візуального зворотного зв’язку. Android також надає Accessibility Scanner — інструмент для автоматичного виявлення проблем доступності, який підсвічує елементи без contentDescription, занадто малі області дотику та низький контраст.

Часто задавані питання

Як увімкнути TalkBack на Android?

Налаштування → Спеціальні можливості → TalkBack → Увімкнути. Для швидкого увімкнення використовується одночасне натискання обох клавіш гучності протягом 3 секунд. Google Assistant також може увімкнути TalkBack за голосовою командою «Увімкни TalkBack».

Чим TalkBack відрізняється від VoiceOver?

TalkBack — screen reader для Android, VoiceOver — для iOS. TalkBack використовує AccessibilityService та фокус доступності з жовтим рамком, а VoiceOver — UIAccessibility та ротор. Жести та меню відрізняються: у TalkBack є L-подібні проведення для глобального меню.

Як зробити додаток сумісним з TalkBack?

Задайте contentDescription для всіх ImageView та кастомних елементів. Використовуйте importantForAccessibility для приховування декоративних елементів. Налаштуйте accessibilityLiveRegion для динамічних оновлень та перевірте через Accessibility Scanner. У Compose застосовуйте модифікатор .semantics{}.

Що таке AccessibilityNodeInfo?

Це об’єкт, що представляє елемент інтерфейсу в дереві доступності. Містить текст, тип, стан, позицію та список дій. TalkBack обходить це дерево для навігації. Розробник може змінювати його через AccessibilityDelegate або атрибути в XML.

Чому TalkBack не озвучує мою кнопку?

Перевірте importantForAccessibility — можливо, він встановлений в NO. Переконайтеся, що contentDescription задано для елементів без тексту. Для кастомних View реалізуйте AccessibilityDelegate з onInitializeAccessibilityNodeInfo. Використовуйте Accessibility Scanner для діагностики.

Підсумки

  • TalkBack — вбудований screen reader Android у складі Android Accessibility Suite з жестовим керуванням
  • Фокус доступності з жовтим рамком позначає поточний озвучуваний елемент на екрані
  • AccessibilityService перехоплює події дотику та трансформує їх у жести screen reader’а
  • Жести TalkBack включають дотик (озвучення), подвійне дотикання (активація) та L-подібні проведення (меню)
  • Розробка через contentDescription, AccessibilityDelegate, LiveRegion та semantics у Compose
  • Dynamic оновлення потребують android:accessibilityLiveRegion для автоматичного оголошення змін
  • Тестування з Accessibility Scanner та Screen Curtain обов’язкові для якісної підтримки

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також