Андроид:Как исключить произнесенный текст из AccessibilityEvents при расширении SeekBar?

StackOverflow https://stackoverflow.com//questions/25001069

Вопрос

Мое приложение для 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)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top