Android Accessibility
1. 대체 텍스트
- contentDescription 은 눈으로 읽히는 모든 정보를 음성으로 읽어줄 수 있는 대체 텍스트를 표현 한다
- Button 과 ClickListner 가 붙은 ImageView 에는 “ㅇㅇ 버튼” 이라고 읽어준다
1<!-- for example -->2<ImageView3 android:id="@+id/userPhotoImageView"4 android:layout_width="match_parent"5 android:layout_height="match_parent"6 android:contentDescription="@string/cd_profile_image_change"7 android:src="@drawable/bg_user_thumbnail_pressed_selector" />
2. 상세히 설명하기
- AccessibilityNodeInfoCompat (api level 22 부터 지원) 사용하기
- hintScript 를 통해 원하는 내용을 변경
1fun setAccessibilityClickActionHintScript(2 view: View,3 hintScript: String?4) {5 if (isTalkbackOn) {6 view.setAccessibilityDelegate(object : View.AccessibilityDelegate() {7 override fun onInitializeAccessibilityNodeInfo(8 host: View,9 info: AccessibilityNodeInfo10 ) {11 super.onInitializeAccessibilityNodeInfo(host, info)12 val infoCompat = AccessibilityNodeInfoCompat.wrap(info)13 val clickAction = AccessibilityActionCompat(14 AccessibilityNodeInfoCompat.ACTION_CLICK,15 hintScript16 )17 infoCompat.addAction(clickAction)18 }19 })20 }21}
- 특정값이 변경되었을때, 변경 여부를 유저에게 알려주려면 AccessibilityEvent 를 announce 로 설정한 후 전송
1fun sendAccessibilityEvent(text: String?) {2 if (isTalkbackOn) {3 val e = AccessibilityEvent.obtain()4 e.eventType = AccessibilityEvent.TYPE_ANNOUNCEMENT5 e.className = context.javaClass.getName()6 e.packageName = context.packageName7 e.text.add(text)8 manager.sendAccessibilityEvent(e)9 }10}