Android ICS中可能存在的可访问性事件传递错误。活动交付两次。在蜂窝状或更低的温度下,所有部件均可正常工作

Android ICS中可能存在的可访问性事件传递错误。活动交付两次。在蜂窝状或更低的温度下,所有部件均可正常工作,android,text-to-speech,android-4.0-ice-cream-sandwich,Android,Text To Speech,Android 4.0 Ice Cream Sandwich,我有一个关于ICS中可能存在的可访问性问题/bug的问题 我在K-NFB,Kurzweil工作——全国盲人联合会——我们的电子书阅读器允许通过Android的无障碍服务进行持续的TTS阅读。我们需要推出自己的可访问性服务,以便在TTS语音停止说话时(例如自动翻页等)能够收到通知 我们的辅助功能服务是特定于包的,未注册为“默认”辅助功能服务。在Android3.x和更低版本上,它工作得很好,因为如果特定于包的服务可以处理可访问性事件,那么默认服务将不会收到它。然而,在ICS上,我们的服务和默认服务

我有一个关于ICS中可能存在的可访问性问题/bug的问题

我在K-NFB,Kurzweil工作——全国盲人联合会——我们的电子书阅读器允许通过Android的无障碍服务进行持续的TTS阅读。我们需要推出自己的可访问性服务,以便在TTS语音停止说话时(例如自动翻页等)能够收到通知

我们的辅助功能服务是特定于包的,未注册为“默认”辅助功能服务。在Android3.x和更低版本上,它工作得很好,因为如果特定于包的服务可以处理可访问性事件,那么默认服务将不会收到它。然而,在ICS上,我们的服务和默认服务对讲都接收可访问性事件。这会导致话语被重复两次。一次通过我们的服务,一次通过对讲

安卓易访问性团队是否意识到这个问题


如果这不是一个bug,那可能是什么问题?

问题可能是您的辅助功能服务没有正确注册您要处理的辅助功能事件类型。作为实验,将以下属性添加到AccessibilityServiceInfo XML配置中:

android:accessibilityEventTypes="typeAllMask"
此属性表示要处理已注册的特定包的所有AccessibilityEvents的框架。如果这停止了双重处理,那么你就有了答案。然后,您可以尝试只请求您感兴趣的事件类型。此处列出了XML配置事件类型:

您还可以使用AccessibilityServiceInfo.eventTypes方法动态设置事件类型筛选:


您能在设置配置变量packageNames等的地方发布代码片段吗?对于ICS,您是否尝试过通过XML文件进行配置?详细信息如下:我也遇到了同样的问题,我确实将android:accessibilityEventTypes=typeAllMask放入了我的可访问性服务xml配置文件中,但我仍然听到两次说话,一次是通过对讲,另一次是通过我自己的可访问性服务。如果我关掉对讲机,我只会听到一次我自己的服务。我使用的是Nexus4和JellyBean 4.2,有人用过吗?还有别的把戏吗?非常感谢!这是三星设备的一个缺陷。