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