TalkBack — 정의, 제어 제스처 및 Android 설정

저자: IT Sectr 게시일: 2026-05-15 읽는 시간: 8 분

TalkBack은 Android Accessibility Suite 패키지의 일부로, Android용 Google 기본 화면 읽기 기능입니다. 인터페이스 요소를 음성으로 안내하고 제스처를 통해 기기를 제어할 수 있게 해줄니다. 이를 통해 시각장애인 및 저시력자가 스마트폰 기능에 완전히 접근할 수 있습니다. Google Accessibility Help (2025)에 따르면, TalkBack은 대부분의 Android 기기에 사전 설치되어 있으며 여러 음성 엔진으로 30개 이상의 언어를 지원합니다.

주요 요점

  • TalkBack은 제스처 제어 및 음성 피드백이 있는 Android용 Google 기본 화면 읽기 기능입니다
  • 접근성 포커스는 TalkBack이 현재 음성으로 안내하는 요소를 노란 테구리로 강조합니다
  • 제스처는 터치(음성 안내), 더블 탭(활성화) 및 세 손가락 스와이프를 포함합니다
  • 개발자는 contentDescription 및 AccessibilityNodeInfo를 통해 접근성을 구성합니다
  • TalkBack은 Google Assistant 및 점자 화면 표시기와 연동됩니다

TalkBack이란?

TalkBack은 Google이 개발한 Android용 화면 읽기 기능으로, Android Accessibility Suite의 일부입니다. 시각 장애가 있는 사용자에게 음성 피드백과 제스처 제어를 제공합니다. TalkBack은 스마트폰, 태블릿, Smart TV 및 Wear OS를 실행하는 착용 기기에서 작동합니다.

TalkBack은 2009년 Android 1.6 (Donut)에서 처음 등장했습니다. 초기에는 별도 프로젝트였지만, Android 4.0 (Ice Cream Sandwich)의 출시와 함께 Android Accessibility Suite의 일부가 되었습니다—이는 Switch Access와 Select to Speak을 포함하는 서비스 집합입니다. Android 10 이후부터는 Google Play 서비스가 있는 모든 기기에 TalkBack이 사전 설치되어 있으며, 파트너 기기—Samsung, Xiaomi, Oppo 및 기타를 포함합니다.

TalkBack은 Google Text-to-Speech, Samsung TTS 및 타사 엔진과 같은 여러 음성 엔진으로 30개 이상의 언어를 지원합니다. 한국어의 경우 Google TTS가 자연스러운 발음과 올바른 어조를 제공합니다. 사용자는 TalkBack 설정에서 에기 속도, 높이와 음성 성별을 선택할 수 있습니다.

TalkBack은 어떻게 작동하나요?

TalkBack은 AccessibilityService를 기반으로 작동합니다—Android의 시스템 메커니즘으로, 앱이 인터페이스 상태에 대한 정보를 수신하고 프로그래메이트한 방식으로 상호작용할 수 있게 합니다. TalkBack이 활성화되면 모든 터치 이벤트를 가로채고 이를 특수 화면 읽기 제스처로 변환합니다.

접근성 포커스

TalkBack 작동의 핵심 요소는 접근성 포커스입니다. 텝스트 필드 강조 표시로 나타나는 표준 입력 포커스와 달리, 접근성 포커스는 요소 주변에 노란 테구리로 표시되며 TalkBack이 없는 사용자에게는 보이지 않습니다. 접근성 포커스가 요소에 도달하면 TalkBack이 그 요소의 콘템츠, 유형 및 상태를 음성으로 안내합니다.

사용자는 제스처로 접근성 포커스를 이동합니다: 오른쪽으로 스와이프하면 다음 요소로, 왼쪽으로 스와이프하면 이전 요소로 이동합니다. 요소는 AccessibilityNodeInfo가 정의한 순서로 탐색됩니다—이는 Android가 각 화면에 대해 구축하는 접근성 트리입니다. 개발자는 accessibilityTraversalBefore 및 accessibilityTraversalAfter 속성을 통해 순서를 제어할 수 있으며, 이는 사용자 정의 레이아웃이 있는 복잡한 화면에서 특히 중요합니다.

AccessibilityNodeInfo 및 접근성 트리

화면의 각 View는 접근성 트리의 노드로 표현됩니다—AccessibilityNodeInfo 객체입니다. 이 객체에는 요소의 텍스트(contentDescription 또는 뽐 텍스트), 요소 유형(버튼, 체크박스, 입력 필드), 상태(활성화/비활성화/선택 됨), 화면 위치 및 사용 가능한 작업 목록이 포함됩니다. TalkBack은 이 트리를 탐색하고 각 노드를 순차대로 음성으로 안내합니다.

View에 텍스트 콘템츠가 없는 경우(예: 설명이 없는 ImageView), TalkBack에 비시화되어 사용자가 그 존재를 알 수 없게 됩니다. 이 문제를 해결하기 위해 개발자는 contentDescription을 설정합니다—TalkBack이 무음 대신 읽어 주는 텍스트 설명입니다. Android는 또한 상태가 변경되는 요소(체크/언체크)의 stateDescription과 힌트가 있는 입력 필드의 hintText도 지원합니다.

TalkBack 제어 제스처

TalkBack은 표준 Android 제스처를 특수 화면 읽기 제스처로 변환합니다. 대부분의 작업은 한 손가락 또는 두 손가락으로 수행되며, 세 손가락 제스처는 전역 작업에 할당됩니다.

작업제스처결과
요소 알려주기한 번 터치요소의 이름과 유형 알리기
활성화더블 탭버튼 누르기 또는 이동
다음오른쪽으로 스와이프다음 요소
이전왼쪽으로 스와이프이전 요소
스크롤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, 화면 읽기 기능을 활성화한 상태에서의 테스트, 그리고 다양한 Android 버전에 대한 적응이 포함됩니다.

동적 콘템츠용 LiveRegion

화면 콘템츠가 사용자의 명시적인 작업 없이 변경되면(예: 새 메시지 알림 또는 좋아요 카운터 업데이트), TalkBack이 알림을 받아야 합니다. 이를 위해 XML에서 View에 android:accessibilityLiveRegion 속성을 사용하거나 코드에서 setAccessibilityLiveRegion() 메소드를 사용합니다. polite값은 현재 음성 안내가 끝난 후에 알림을 추가하고, assertive값은 그것을 즉시 중단합니다.

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

// 텍스트가 업데이트되면 TalkBack이 자동으로
// 변경사항을 알립니다
statusText.text = "Anna의 새 메시지"

// 중요한 알림에는 assertive
errorBanner.accessibilityLiveRegion =
    View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE

LiveRegion은 iOS의 UIAccessibility.post에 대응하는 Android 기능입니다. 대부분의 업데이트(새 메시지, 상태 업데이트)에는 polite를 사용하고 assertive는 중요한 오류(결제 실패, 연결 끝김)에만 사용하세요. assertive를 너뭄 많이 사용하면 부정적인 사용자 경험이 생성됩니다—TalkBack이 그당자리 현재 음성 안내를 중단합니다.

그룹화 및 접근성 제공자

여러 View가 하나의 논리적 단위를 이루는 복잡한 화면에서는 AccessibilityNodeProvider 또는 focusSearch를 사용하여 네비게이션을 오버라이드합니다. 예를 들어 42개 셀(6주 × 7일)의 사용자 정의 캄데는 사용자가 다음 블록에 도달하기 위해 42개 아이템을 모䔀 스크롤하도록 강요하게 해서는 안 됩니다. 개발자는 셀을 논리적 단위로 그룹화할 수 있습니다: 월 → 주 → 일.

Jetpack Compose에서는 .semantics {} 수식자가 유사한 API를 제공합니다: contentDescription, liveRegion, stateDescription, disabled 및 customActions. Compose는 또한 자식 세맨틱스를 하나로 병합하는 mergeDescendants를 지원하여, View 마다 수동으로 accessibilityDelegate를 구성하지 않고도 요소 그룹화를 간단히 할 수 있게 합니다.

kotlin
Button(
    onClick = { sendMessage() },
    modifier = Modifier.semantics {
        contentDescription("메시지 보내기")
        stateDescription("보낼 준비 완료")
    }
) {
    Icon(Icons.Filled.Send, "보내기")
}

TalkBack 테스트는 서비스가 활성화된 물리적 기기 또는 에뮬레이터를 사용하여 수행합니다. 화면이 꽉 안보이는 상태(Screen Curtain)에서 주요 사용자 시나리오를 걷는 것이 권장됩니다—이는 시각적 피드백이 완전히 없는 상황을 시뮬레이션합니다. Android는 또한 Accessibility Scanner를 제공합니다—접근성 문제를 자동으로 감지하는 도구로, contentDescription이 없는 요소, 너무 작은 터치 대상 및 저 대비를 강조합니다.

자주 묻는 질문

Android에서 TalkBack을 활성화하는 방법은?

설정 → 접근성 → TalkBack → 활성화. 빠른 활성화를 위해 3초 동안 음량 증감 단추를 동시에 누르세요. Google Assistant는 “TalkBack 활성화” 음성 명령으로도 TalkBack을 활성화할 수 있습니다.

TalkBack과 VoiceOver의 차이점은?

TalkBack은 Android용 화면 읽기 기능, VoiceOver는 iOS용입니다. TalkBack은 AccessibilityService와 노란 테구리의 접근성 포커스를 사용하고, VoiceOver는 UIAccessibility와 로터를 사용합니다. 제스처와 메뉴가 다름니다: TalkBack에는 전역 메르를 위한 L자 스와이프가 있습니다.

앱을 TalkBack과 호환되게 만드는 방법은?

모든 ImageView 및 사용자 정의 요소에 contentDescription을 설정하세요. 장식 요소를 숨기려면 importantForAccessibility를 사용하세요. 동적 업데이트를 위해 accessibilityLiveRegion을 구성하고 Accessibility Scanner로 확인하세요. Compose에서는 .semantics{} 수식자를 사용하세요.

AccessibilityNodeInfo란?

접근성 트리에서 인터페이스 요소를 표현하는 객체입니다. 텍스트, 유형, 상태, 위치 및 작업 목록이 포함됩니다. TalkBack은 네비게이션을 위해 이 트리를 탐색합니다. 개발자는 AccessibilityDelegate 또는 XML 속성을 통해 이를 수정할 수 있습니다.

TalkBack이 제 버튼을 읽지 않는 이유는?

importantForAccessibility를 확인하세요—NO로 설정되어 있을 수 있습니다. 텍스트가 없는 요소에 contentDescription이 설정되어 있는지 확인하세요. 사용자 정의 View의 경우 onInitializeAccessibilityNodeInfo를 사용하는 AccessibilityDelegate를 구현하세요. 진단에는 Accessibility Scanner를 사용하세요.

요약

  • TalkBack은 제스처 제어를 지원하는 Android Accessibility Suite의 기본 Android 화면 읽기 기능
  • 접근성 포커스가 노란 테구리로 화면에서 현재 음성 안내중인 요소를 표시
  • AccessibilityService가 터치 이벤트를 가로채워 화면 읽기 제스처로 변환
  • 제스처는 터치(음성 안내), 더블 탭(활성화) 및 L자 스와이프(메뉴)
  • 개발은 contentDescription, AccessibilityDelegate, LiveRegion 및 Compose의 semantics로
  • 동적 업데이트는 변경 자동 알림을 위해 android:accessibilityLiveRegion 필요
  • 테스트는 Accessibility Scanner 및 Screen Curtain으로 눈깨이 더 좋은 지원 필수

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기