이번 기능은 상당히 어이없는 해결책을 가져왔다.
(그런걸 왜 가져왔냐..?고 하면 할 말은 없다 ㅋㅋㅋ😂)
문제의 시작
요구사항은 이렇다.
RecyclerView 각 아이템에 포커스를 주면 해당 아이템이 총 몇 개 중 몇번 째인지 읽어주는 것이었다.
정말 간단한 기능이다.
나는 onBindViewHolder에서 setContentDescription을 통해 해당 문자열을 설정해주었다.
그런데 스크린리더가 읽는 텍스트는 약간 달랐다.
예를 들면, 총 10개 중 일번 째
라고 읽는 것이 아니겠는가?
이상한 점을 찾았을 지 모르겠다.
첫번째, 두번째, 세번째가 아닌 일번 째, 이번 째, 삼번 째와 같은 형식으로 읽어버리는 것이었다.
문제 발생 지점
나는 나름 수동으로 문자열 리터럴을 만들어 설정해주었는데 여기서 정말 간단한 띄어쓰기가 문제가 되어버렸다.
이번에도 눈치 빠른 사람은 내가 어느 지점에서 다른 부분을 두었는지 찾았을 것 같다.
바로 "번째" 와 "번 째"의 차이이다.
띄어쓰기가 없는 경우 첫번째, 두번째, 세번째 등 정상적인 서수 방식으로 읽는 반면,
띄어쓰기가 있는 경우 일번째, 이번째, 삼번째 등 서수 방식으로 읽지 않았다.
혹시 TTS 엔진에 의한 차이가 있을까 확인해보았지만
Google과 삼성 둘 다 이 문제에 대해서는 동일한 동작을 보였다.
결론
Android accessibility Talkback 기능에서는 띄어쓰기도 주의해야 한다.
추가로 쓸데없는(?) 사담을 하나 껴넣자면 TTS 언어 설정이 영어인 경우,
한국어 ContentDescription을 읽으면 매우 어눌한 외국인이 한국어를 읽는 느낌이 난다.🤣
'Android' 카테고리의 다른 글
Android Material Library Update Story(feat. BottomNavigationView) (0) | 2024.07.14 |
---|---|
Android Library Manifest Attributes Replace (0) | 2024.07.04 |
Android Room 오적용기(misapplied) (0) | 2024.07.02 |
Android AES-128 Encryption with Random IV in Java (0) | 2024.06.29 |
Android Progressbar not spinning(not animated) (0) | 2024.06.26 |