2017-05-17 1 views
1

foo bar 04:58이 포함 된 TextView를 사용하는 경우 음성 안내 지원은 foo bar 4 hours 58 minutes - foo bar 4 minutes 58 seconds이어야합니다. 반면에 foo bar 04:24:05은 잘 작동합니다 : foo bar 4 hours 24 minutes 5 seconds. 그건 내 로캘, 프랑스어입니다. 각 mm:ssmm minutes ss seconds 음성 안내 지원이 시간을 잘못 읽음

이에 대한 더 나은 솔루션이 있습니까로 교체

  • mm:ss00:mm:ss
  • 으로 교체 :

    나는 이것에 대한 unelegant 수정의 생각?

답변

3

콘텐츠 설명으로 텍스트를 재정의하는 것이 좋습니다. 당신은 그것을 확장해야합니다.

그럼 당신은 대체 텍스트로 텍스트 뷰에 대한

textView.setText("2:45") 

textView.setContentDescription("2 minutes 45 seconds") 

내용 설명 행동 텍스트 뷰를 대신 읽어됩니다 가정 해 봅시다. 이것은 실제로 다른 접근성 문제를 만듭니다. 텍스트 설명과 내용 설명을 모두 읽는 AT가 콘텐츠 설명을 재정의 ... UGH 대신 사용하는 것을 상상해보십시오. 그러나 TalkBack이 압도적 인 시장 점유율을 차지하는 현재 Android 접근성 에코 시스템에서이 솔루션은 완전히 악의가 아닙니다. 텍스트 음성 변환 엔진은 어리 석다는 것이 이상적입니다. 그러나 TTS 엔진은 어리 석으므로 TalkBack이 읽는 텍스트를 변경하여 합리적인 수준으로 읽어야합니다.

TalkBack 사용자는 문자를 원하는대로 문자로 탐색 할 수 있으므로 이상한 TTS 자동 서식을 알아낼 수 있습니다. 또한이 대신처럼 보이도록보기를 변경하려고 수 :

textView.setText("2m 45s"); 

는 내가 정확히 기억한다면, 비록 TTS 엔진은이를 "2m 마흔 파이브"확장됩니다 ... 최고.

편집 :이 코드 줄이 다른 문제를 해결하는 데 도움이된다고 상상해보십시오.

timeString.replaceAll("([0-9]{1,2}):([0-9]{1,2})", "$1 minutes $2 seconds"); 
+1

이것은 정말 똑똑합니다! 나는 가능한 한 빨리 이것을 시도 할 것이다. 그리고 2m이 2 미터 인 것을 확인할 수 있습니다 ... – natinusala

+0

동적로드 된 텍스트보기에는 작동하지 않습니다 : 응용 프로그램에'14 : 24'을주는 HTTP 요청이 있고 이것을 다음과 같이 설정합니다. 텍스트, 콘텐츠 설명을 입력 할 수 없습니다. – natinusala

+0

텍스트보기는 텍스트보기입니다. 동적으로로드되는지 여부. 여기에 별도의 질문이있는 것처럼 들리지만 ...이 솔루션에 대한 설명은 특정보기가로드되는 방식에만 해당됩니다. – ChrisCM

관련 문제