Android:Como eliminar o texto falado, a partir de AccessibilityEvents ao estender SeekBar?
-
20-12-2019 - |
Pergunta
Meu aplicativo Android contém um controle deslizante personalizada com base no SeekBar
, e eu quero anexar um texto personalizado frase para o meu controle para explicar o seu uso para a Acessibilidade.
Eu tenho feito isso com sucesso, usando View.setContentDescription(text)
, e o TalkBack corretamente fala a frase quando eu solicitar o foco no meu controle deslizante de Activity.onCreate
.
Tão longe, tão bom.No entanto, quando eu toco o controle, que eu acredito que define o AccessibilityFocus no meu Android API de 16 de dispositivo de teste, extra palavras estão sendo adicionados a frase enunciada, isto é,'...buscar o controle.0 por cento'.Eu quero remover estas palavras adicionais.
Eu tentei eliminá-los usando event.getText().clear()
no View.onInitializeAccessibilityEvent(event)
sem sucesso.Ecoando o evento para LogCat relatórios a expressão correta em event.contentDescription
e não há entradas no event.text
, mas as palavras extras aparecem tanto na saída de áudio do dispositivo de hardware e na tela de depuração do texto apresentado pelo Menu->Configurações->Acessibilidade>TalkBack->Definições->Definições De Programação->Display Saída De Voz.
Por favor, alguém pode sugerir onde as palavras extras estão sendo adicionados, e como eliminá-los?
Quaisquer sugestões construtivas seriam bem-vindos.Obrigado.
Atualização
Eu posso ver que algumas Explorar Através do Toque inicial, toque único) evento no meu controle personalizado não passar através de sua onInitializeAccessibilityEvent
ou dispatchPopulateAccessibilityEvent
métodos como eu sou deliberadamente chamar event.setContentDescription(null)
.Apesar disso, há uma AccessibilityEvent
sendo gerado com o meu controle personalizado ContentDescription
, definido no Activity.onCreate
no código, mais o extra palavras que eu estou tentando eliminar.
Eu também definir um AccessibilityDelegate
no meu controle personalizado do pai ViewGroup
para dar visibilidade de sua onRequestSendAccessibilityEvent
chamadas.Isso confirma que nenhum evento contendo o meu ContentDescription
é de passagem.
Isso é muito intrigante, e acontece o emulador e hardware real com o API de 16.Qualquer idéias?
Solução 2
Eu acredito que este é um bug em TalkBack, e têm levantado Aos Olhos do Google-Livre edição #375, incluindo o código de exemplo.
Atualização: O Google tem agora arquivados neste.Link movido para: http://code.google.com/archive/p/eyes-free/issues/375
Outras dicas
Você também precisará substituir http://developer.android.com/reference/android/view/View.html#onInitializeAccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo)
e definir o contentDescription lá.
Se você deseja remover a 0%, gostaria de tentar alterar a classe no AccessibilityNodeInfo/AccessibilityEvent:http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html#setClassName(java.lang.CharSequence)