이 가이드에서는 Android TV의 접근성에 관한 권장사항을 제공하고 네이티브 앱과 비네이티브 앱 모두에 관한 권장사항을 제공합니다.
TV 앱에서 접근성이 중요한 이유는 무엇인가요?
TV 시청자 중 시각장애가 있는 경우가 적지 않습니다. WHO에 따르면 전 세계 22억 명이 시력 장애를 겪고 있으며, 미국 성인 약 3,200만 명이 심각한 시력 손실을 겪고 있습니다 (2018년 전국 건강 인터뷰 설문조사). 유럽에서는 EBU가 3천만 명이 영향을 받는 것으로 추정합니다.
시각 장애가 있는 사용자는 일반인과 마찬가지로 미디어를 즐깁니다. Comcast 2017년 설문조사에 따르면 96% 가 TV를 시청하며 (일일 1시간 이상 81%) 하지만 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()로 쿼리하여 사용자의 환경설정을 확인할 수 있습니다.
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
}
자바
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);
}