Awa*_*eam 6 android accessibility talkback
在我的Android应用程序中,我有一个View显示图像并具有关联的应用程序ContentDescription.
我可以通过对讲设置启用设置 - >辅助功能 - >对讲,通过触摸浏览,然后单击视图以ContentDescription大声朗读.
到目前为止,这一切都符合预期.
但是,如果我再单击相同的话,我希望Explore By Touch重复播放.例如,我的图像和描述可能会更新,因此说新短语对用户有帮助.我怎样才能做到这一点?ContentDescriptionViewAccessibilityFocus
我试着尝试View.clearFocus()和View.invalidate(),但没有成功.
任何建设性的想法都会受到欢迎.
更新
我还应该提到我想从API 8开始添加支持.因此,我正在尝试使用API 4的Accessibility接口尽力而为.
我目前正在开发一个使用的解决方案,View.clearFocus()然后View.requestFocus()解决更新后的问题.到目前为止,这似乎在我的测试工具包上使用API 8和16.
我将再次更新最终结果,但欢迎在此期间提出进一步的建议.
正如我的问题所承诺的,这是我的调查结果和工作解决方案.
首先,非常感谢alanv的帮助和支持,以及回答以后API(14及以上)的问题.虽然他没有找到旧API的解决方案,但他确实提供了帮助我找到答案的关键信息.
在撰写本文时,AccessibilityEvent由于TalkBack中的已知错误,无法构建成功说出的内容- 请参阅发送无法链接到视图的辅助功能事件以获取更多详细信息.如果事件源为null,则TalkBack(v3.5.0_r105)会忽略该事件,并且AccessibilityEvent.setSource(View)首先出现在API 14中,之前无法设置源 - 请参阅Google Eyes-Free问题#379
但是,可以通过使用我之前提到的方式使Android 生成此类事件View.requestFocus().
使用以下方法使您的View在其XML布局中可聚焦:
android:focusable="true"
android:focusableInTouchMode="true"
如果是静态的,则在XML布局中使用View.setContentDescription(text)in Activity.onCreate或with android:contentDescription="text",或者在必要时在代码中动态设置语音文本.
当需要语音文本时,使用View.requestFocus()触发a 将焦点移动到正确的视图AccessibilityEvent.
为确保重复短语(我的原始问题),请View.clearFocus()在上一步骤中请求焦点之前调用.
我在API 8上有一个经过测试的这种方法的实现,它也适用于API 16.当首次引入Accessibility API时,它应该一直工作到API 4 .
仅支持更新的Android API(14及更高版本)的开发人员可能不需要此解决方案,但我相信目前支持早期API中的辅助功能的其他选项很少.祝好运.
更新
不幸的是,阿兰夫的答案似乎已经消失 - 可能已删除 - 在评论中考虑了所有相关的细节和讨论.我试图重新获得以下要点.
对于Android API 14及更高版本,可以按如下方式创建焦点事件:
if (mAccessibilityService.isEnabled()) {
AccessibilityEvent event = AccessibilityEvent.obtain(
AccessibilityEvent.TYPE_VIEW_FOCUSED);
event.setSource(myView); // API 14 & later
event.setClassName(myView.getClass().getName());
event.setPackageName(myView.getContext().getPackageName());
event.setEnabled(true);
event.setContentDescription(text);
myView.sendAccessibilityEventUnchecked(event);
}
对于Android API 16及更高版本,View.announceForAccessibility(text)可以使用.
| 归档时间: |
|
| 查看次数: |
5392 次 |
| 最近记录: |