Андроид:Как исключить произнесенный текст из AccessibilityEvents при расширении SeekBar?
-
20-12-2019 - |
Вопрос
Мое приложение для Android содержит настраиваемый ползунок, основанный на SeekBar
, и я хочу прикрепить к своему элементу управления пользовательскую текстовую фразу, чтобы объяснить ее использование для специальных возможностей.
Я сделал это успешно, используя View.setContentDescription(text)
, и TalkBack правильно произносит эту фразу, когда я запрашиваю фокус на ползунке у Activity.onCreate
.
Все идет нормально.Однако когда я касаюсь элемента управления, который, как я полагаю, устанавливает AccessibilityFocus на моем тестовом устройстве Android API 16, к произнесенной фразе добавляются дополнительные слова, т.е.'...ищи контроля.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
Другие советы
Вам также необходимо переопределить http://developer.android.com/reference/android/view/View.html#onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo)
и установите там contentDescription.
Если вы хотите удалить 0%, я бы попытался изменить класс в AccessibilityNodeInfo/AccessibilityEvent:http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html#setClassName(java.lang.CharSequence)