Ответ 1
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Принуждение внимания к нагрузке на активность должно быть где угодно, но в верхней строке всегда (хорошо, всегда почти никогда не говориться), но на самом деле просто не делайте этого. Это нарушение всех видов правил WCAG 2.0, включая 3.2.1 и 3.2.3, относительно прогнозируемой навигации и изменения контекста соответственно. Вы, вероятно, фактически делаете свое приложение БОЛЕЕ недоступным, делая это.
http://www.w3.org/TR/WCAG20/#consistent-behavior
КОНЕЦ ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ.
Вы используете правильные вызовы функций. Все, что вам нужно сделать, это следующее:
myButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
Проблема скорее в том, в какой момент вы пытаетесь это сделать. Talkback присоединяется к вашей деятельности чуть позже в цикле активности. Следующее решение иллюстрирует эту проблему, я не уверен, что есть лучший способ сделать это, если честно. Я попробовал onPostResume, который является последним обратным вызовом для ОС Android, касающимся загрузки действий, и все же мне пришлось добавить задержка.
@Override
protected void onPostResume() {
super.onPostResume();
Log.wtf(this.getClass().getSimpleName(), "onPostResume");
Runnable task = new Runnable() {
@Override
public void run() {
Button theButton = (Button)WelcomeScreen.this.findViewById(R.id.idButton);
theButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
}
};
final ScheduledExecutorService worker = Executors.newSingleThreadScheduledExecutor();
worker.schedule(task, 5, TimeUnit.SECONDS);
}
Возможно, вы сможете создать собственное представление. Обратные вызовы в представлении могут обеспечить логику, необходимую для этого, без состояния гонки! Я мог бы изучить его более поздно, если я получу время.