Android: Как убрать разговорный текст из AccessibilityEvents при расширении SeekBar?

Мое приложение 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-> Настройки-> Настройки разработчика-> Показать вывод речи.

Кто-нибудь может подсказать, где добавляются лишние слова и как их устранить?

Любые конструктивные предложения будут приветствоваться. Благодарю.

Обновить

Я вижу, что какое-то событие Explore By Touch (начальное однократное нажатие) в моем пользовательском элементе управления не проходит через его onInitializeAccessibilityEvent или же dispatchPopulateAccessibilityEvent методы, как я намеренно называю event.setContentDescription(null), Несмотря на это, есть AccessibilityEvent генерируется с помощью моего пользовательского элемента управления ContentDescriptionустановить в Activity.onCreate в коде плюс лишние слова, которые я пытаюсь исключить.

Я также установил AccessibilityDelegate на родительском элементе моего пользовательского элемента управления ViewGroup чтобы увидеть его onRequestSendAccessibilityEvent звонки. Это подтверждает, что ни одно событие, содержащее мой ContentDescription проходит через.

Это очень озадачивает и происходит как на эмуляторе, так и на реальном оборудовании с API 16. Есть идеи?

2 ответа

Решение

Я считаю, что это ошибка в TalkBack, и поднял проблему без глаз Google № 375, включая пример кода.

Обновление: Google теперь заархивировал это. Ссылка перемещена на: http://code.google.com/archive/p/eyes-free/issues/375

Вам также необходимо переопределить http://developer.android.com/reference/android/view/View.html

и установите там описание контента.

Если вы хотите удалить 0%, я бы попытался изменить класс в AccessibilityNodeInfo / AccessibilityEvent: http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html

Другие вопросы по тегам