Android TV 접근성 권장사항

이 가이드에서는 Android TV의 접근성에 관한 권장사항을 제공하고 네이티브 앱과 비네이티브 앱 모두에 관한 권장사항을 제공합니다.

TV 앱에 접근성이 중요한 이유는 무엇인가요?

TV 시청자 중 시력 장애가 있는 사람은 드물지 않습니다. WHO는 전 세계적으로 22억 명이 시력 장애가 있는 것으로 추정하며, 미국 성인 약 3,200만 명이 심각한 시력 손실을 겪고 있습니다 (2018년 미국 국민 건강 인터뷰 조사). 유럽에서는 EBU가 3, 000만 명이 영향을 받는 것으로 추정합니다.

시각 장애가 있는 사용자는 시력이 있는 사용자와 마찬가지로 미디어를 즐깁니다. Comcast의 2017 조사에 따르면 96% 가 TV를 시청하며 (81% 는 하루에 1시간 이상), 65% 는 콘텐츠를 찾는 데 문제가 있다고 보고합니다. 또한 영국 조사에서 장애가 있는 사람의 80% 가 스트리밍 문제를 보고했습니다.

보조 기술이 도움이 되지만 TV 앱은 콘텐츠 검색에서 접근성을 지원해야 합니다. 탐색 안내와 요소 라벨에 특히 주의하세요. TalkBack과 같은 기능과의 호환성을 보장하여 시력 장애가 있는 사용자의 환경을 크게 개선하세요.

접근성 개선을 위한 첫 번째 단계는 인식입니다. 이 가이드는 개발자와 개발팀이 TV 앱의 접근성 문제를 파악하는 데 도움이 될 수 있습니다.

Android 접근성 리소스

Android의 접근성에 관해 자세히 알아보려면 접근성 개발 리소스를 참고하세요.

텍스트 크기 조정

Android TV 앱은 다양한 픽셀 밀도를 지원하여 텍스트 크기 조정에 관한 사용자의 환경설정을 준수해야 합니다.

다음 사항에 특히 주의하세요.

  • UI 구성요소의 측정기준에 wrap_content를 사용합니다.
  • 레이아웃이 텍스트 크기에 따라 측정기준이 변경될 때 구성요소를 재정렬하도록 합니다.
  • 구성요소가 더 큰 텍스트 크기에서도 화면에 맞도록 합니다.
  • 유연하지 않은 구성요소에는 sp 텍스트 크기 단위를 사용하지 않습니다.
  • 맞춤 뷰에서 조정할 FONT_SCALE 값을 확인합니다.

    // Checking font scale with Context
    val scale = resources.configuration.fontScale
    Log.d(TAG, "Text scale is: " + scale)
    

다음 명령어를 사용하여 텍스트 크기를 변경할 수 있습니다.

adb shell settings put system font_scale 1.2f

Android 12 이상에서는 사용자가 기기 설정에서 텍스트 크기 조정을 변경할 수 있습니다.

키보드 레이아웃

Android 13 (API 수준 33) 이상에서는 getKeyCodeForKeyLocation() 을 사용하여 예상되는 키 위치의 키 코드를 조회할 수 있습니다. 사용자가 일부 키 위치를 다시 매핑했거나 일반적인 레이아웃이 없는 키보드를 사용하는 경우 이 작업이 필요할 수 있습니다.

오디오 설명

Android 13 (API 수준 33) 이상에서는 새로운 시스템 전체 접근성 환경설정을 통해 사용자가 모든 앱에서 오디오 설명을 사용 설정할 수 있습니다. Android TV 앱 은 `isAudioDescriptionRequested()`로 쿼리하여 사용자의 환경설정을 확인할 수 있습니다. isAudioDescriptionRequested()

Kotlin

private lateinit var accessibilityManager: AccessibilityManager

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager::class.java)

// Where your media player is initialized
if (am.isAudioDescriptionRequested) {
    // User has requested to enable audio descriptions
}

Java

private AccessibilityManager accessibilityManager;

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager.class);

// Where your media player is initialized
if(accessibilityManager.isAudioDescriptionRequested()) {
    // User has requested to enable audio descriptions
}

Android TV 앱은 리스너를 추가하여 AccessibilityManager 사용자의 환경설정이 변경되는 시점을 모니터링할 수 있습니다.

Kotlin

private val listener =
    AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled ->
        // Preference changed; reflect its state in your media player
    }

override fun onStart() {
    super.onStart()

    accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener)
}

override fun onStop() {
    super.onStop()

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener)
}

자바

private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> {
    // Preference changed; reflect its state in your media player
};

@Override
protected void onStart() {
    super.onStart();

    accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener);
}

@Override
protected void onStop() {
    super.onStop();

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener);
}