【发布时间】:2015-02-12 08:48:42
【问题描述】:
启用 TalkBack 后,是否可以将辅助功能焦点手册设置为特定视图?例如,当我的 Activity 启动时,我希望 TalkBack 自动关注某个 Button(视图周围的黄框)并阅读其内容描述。
到目前为止我已经尝试过:
myButton.setFocusable(true);
myButton.setFocusableInTouchMode(true);
myButton.requestFocus();
requestFocus() 似乎只是请求输入焦点,与可访问性焦点无关。我也试过:
myButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
myButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
myButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED);
myButton.announceForAccessibility("accessibility test");
myButton.performAccessibilityAction(64, null); // Equivalent to ACTION_ACCESSIBILITY_FOCUS
AccessibilityManager manager = (AccessibilityManager) getSystemService(Context.ACCESSIBILITY_SERVICE);
if (manager.isEnabled()) {
AccessibilityEvent e = AccessibilityEvent.obtain();
e.setSource(myButton);
e.setEventType(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
e.setClassName(getClass().getName());
e.setPackageName(getPackageName());
e.getText().add("another accessibility test");
manager.sendAccessibilityEvent(e);
}
这些似乎都不起作用。
【问题讨论】:
-
“对讲开始时”。你的意思是,当我认为对讲处于活动状态时。或者,当您的视图处于活动状态时有人打开对讲?
-
两者都不是。如果在“设置”中启用了 TalkBack,并且启动了我的应用程序的 Activity,我希望可访问性集中在我的 Activity 中的某个按钮上
-
啊,好吧,所以当你的活动加载时,你想控制哪个项目最初由对讲焦点(android“焦点”意味着与对讲焦点不同的东西)。仅用于可访问性目的。
-
我很好奇你为什么认为你需要这样做?通常认为将焦点自动转移到用户身上是不好的做法,事实上,除非得到适当的警告,否则根据 WCag 2.0 的准则 3.2,它本身可以被视为可访问性违规。不过,无论如何,我正在寻找答案。
-
我的应用的目标受众是盲人。应用程序的主要操作(拍照)由特定按钮触发。我希望用户在应用启动时立即关注此按钮,而不是在到达它之前再滑动 6 次(这可能被认为很烦人)。
标签: android accessibility talkback