我想做什么/我做了什么:我正在尝试为视障用户制作一个非常基本的TalkBack版本.我做了一个简单的辅助功能服务,读取用户点击的按钮的contentDescription并大声读出.
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
// get the source node of the event
AccessibilityNodeInfo source = event.getSource();
if (source == null) {
return;
}
// Check if a button is clicked and speak out the content
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_CLICKED
&& BUTTON_CLASS_NAME.equals(source.getClassName()) {
Log.d("Button clicked", source.getViewIdResourceName().toString());
convertTextToSpeech(source.getContentDescription().toString());
}
if (source != null)
source.recycle();
return;
}
问题:但是,这样一来,用户就无法在按下单击按钮之前实际执行触发的操作之前听取按钮的描述.当用户收听描述时,已经点击了按钮并且已经执行了动作.
问题:如何中断操作(例如:在单击按钮后打开新活动),以便用户可以使用我提供的反馈安全地浏览屏幕上的当前视图,而无需启动新活动或触发其他操作?
类似于Talkback中发生的事情:用户单击以听取描述,双击以执行操作.除非用户双击,否则Talkback如何阻止动作发生?我已经研究过TouchExplorationMode,但我猜它主要用于手势而不是点击.