기계적 인조 인간:SeekBar를 확장할 때 AccessibilityEvents에서 음성 텍스트를 제거하는 방법은 무엇입니까?
-
20-12-2019 - |
문제
내 Android 앱에는 다음을 기반으로 하는 맞춤 슬라이더 컨트롤이 포함되어 있습니다. SeekBar
, 접근성에 대한 사용을 설명하기 위해 사용자 정의 텍스트 문구를 내 컨트롤에 첨부하고 싶습니다.
나는 이것을 사용하여 성공적으로 수행했습니다. View.setContentDescription(text)
, 그리고 내가 슬라이더 컨트롤에 초점을 요청할 때 TalkBack이 해당 문구를 올바르게 말합니다. Activity.onCreate
.
여태까지는 그런대로 잘됐다.그러나 Android API 16 테스트 장치에서 AccessibilityFocus를 설정한다고 생각되는 컨트롤을 터치하면 음성 문구에 추가 단어가 추가됩니다.'...통제권을 찾으세요.0퍼센트'.이러한 추가 단어를 제거하고 싶습니다.
나는 다음을 사용하여 그것들을 제거하려고 노력했습니다. event.getText().clear()
~에 View.onInitializeAccessibilityEvent(event)
성공없이.LogCat에 이벤트를 에코하면 올바른 문구가 보고됩니다. event.contentDescription
그리고 항목이 없습니다 event.text
, 그러나 추가 단어는 장치 하드웨어의 오디오 출력과 화면 디버그 텍스트에 모두 나타납니다. 메뉴->설정->접근성->TalkBack->설정->개발자 설정->음성 출력 표시.
추가 단어가 추가되는 위치와 이를 제거하는 방법을 제안할 수 있는 사람이 있습니까?
어떤 건설적인 제안이라도 환영합니다.감사해요.
업데이트
내 사용자 정의 컨트롤의 일부 터치하여 탐색(초기 단일 탭) 이벤트가 해당 컨트롤을 통과하지 못하는 것을 볼 수 있습니다. onInitializeAccessibilityEvent
또는 dispatchPopulateAccessibilityEvent
내가 의도적으로 호출하는 메서드 event.setContentDescription(null)
.그럼에도 불구하고 AccessibilityEvent
내 사용자 정의 컨트롤로 생성되는 중 ContentDescription
, 설정하다 Activity.onCreate
코드에는 제거하려는 추가 단어도 포함됩니다.
나는 또한 AccessibilityDelegate
내 사용자 정의 컨트롤의 부모에 ViewGroup
그 가시성을 제공하기 위해 onRequestSendAccessibilityEvent
전화.이는 내 항목이 포함된 이벤트가 없음을 확인합니다. ContentDescription
지나가고 있습니다.
이는 매우 혼란스러운 일이며 API 16을 사용하는 에뮬레이터와 실제 하드웨어 모두에서 발생합니다.어떤 아이디어가 있나요?
해결책 2
나는 이것이 TalkBack의 버그라고 생각하며 문제를 제기했습니다. Google Eyes-Free 문제 #375, 예제 코드 포함.
업데이트: Google은 이제 이것을 보관했습니다.링크가 다음으로 이동되었습니다: http://code.google.com/archive/p/eyes-free/issues/375
다른 팁
거기에 contentDescription을 설정하세요.
0%를 제거하려면 AccessibilityNodeInfo/AccessibilityEvent에서 클래스를 변경해 보겠습니다.http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html#setClassName(java.lang.CharSequence)