【问题标题】:Android talkback element type announcementAndroid 对讲元素类型公告
【发布时间】:2017-04-06 03:13:09
【问题描述】:

我正在努力让我的应用更易于访问。我很难找到有用的东西,因为没有很多文档(至少我找不到)。

在我的应用程序中,Talkback 不会宣布 ImageViews 的元素类型。我基本上想要的是 Talkback 宣布我的 ImageView 的 contentDescription 并用“,Image”跟进它。

此链接指出“许多无障碍服务,例如 TalkBack 和盲文提示,在宣布元素的标签后会自动宣布元素的类型,因此您不应在标签中包含元素类型。例如,“提交”是一个很好的标签对于 Button 对象,但“submitButton”不是一个好的标签。”但它没有指定它宣布哪些元素类型以及它不指定哪些元素类型。 https://developer.android.com/guide/topics/ui/accessibility/apps.html

  1. 有谁知道 Talkback 是否在 ImageViews 的 contentDescription 之后宣布“Image”?
  2. Talkback 何时将链接宣布为“链接”?还是开发人员有责任将其添加到 contentDescription 的末尾?我可以让对讲将可点击的文本宣布为“链接”吗?

非常感谢任何帮助/信息/指针。提前致谢。

【问题讨论】:

    标签: android talkback


    【解决方案1】:

    答:不要在内容描述的末尾添加内容。这是一种可访问性违规,几乎在所有情况下都会使事情变得不那么可访问(稍后将详细解释)。

    B:很多上下文信息是通过耳标(bip、哔声等)传达给 TalkBack 用户的,您可能没有注意到。

    C:是的,这是令人困惑且难以确定的,没有图像不公布,尽管我认为这是有充分理由的。例如,带有点击监听器的图像可能只是一个花哨的按钮。在 iOS 中,您可以为此更改一些特性,而 Android 省略了这个非常有用的功能,因此我们遇到了一些奇怪的解决方法。理想的解决方案是让可访问性 API 允许开发人员传达此信息。

    对于链接,通常会宣布文本视图中的内联链接(基本上任何 android 会自动检测到并加下划线),否则不会。所以,实际上很多链接都被遗漏了。

    现在,至于您何时应该/不应该自己提供这些信息。如果不确定,请不要这样做,您将通过遵循上述指南获得相当高的可访问性。事实上,下面的任何考虑都只是与 Android 操作系统的限制作斗争,并且是他们的问题!但是,Android 无障碍生态系统非常薄弱,如果要提供更高级别的无障碍,可以理解,但是,很难!在您的尝试中,您实际上可能最终会与自己作对。让我解释一下:

    在可访问性中,提供信息和一致性之间存在界限。通过将上下文信息添加到内容描述中,您将沿着这条路线前进。如果 Google 说“我们不会共享上下文信息,请自行添加!”会怎样。

    您将在不同音乐播放应用的音乐播放器中拥有按钮,这些按钮在 TalkBack 中宣布如下:

    App1:“播放,按钮”

    App2:“播放,可操作”

    App3:“播放,可点击”

    我们在这里有一致性吗?现在是最后一个例子!

    App4:“播放,如果您使用 TalkBack,请双击以单击,如果您是键盘用户,请按 Enter,对于 SwitchAccess 用户,请使用您的选择键.....”

    注意 App4 的播放按钮有多么复杂,这说明 TalkBack 使用的信息不仅仅是用于 TALKBACK。来自您应用的无障碍信息被众多无障碍服务所使用。当您将上下文信息“破解”到内容描述中时,肯定对 TalkBack 用户来说听起来更好,但是您对盲文返回用户做了什么? SwitchAccess 用户?一般来说,元素的内容描述应该描述元素,并留下上下文信息以供 TalkBack 计算/用户确定与其他控件的给定接近度。

    回答您的两个特殊问题(图片和链接):

    我对图片的建议是在内容描述中让您清楚地表明您描述的内容是图片。

    假设您有一张小猫的照片。

    坏:一只小猫,图片

    好:一张小猫的照片。

    请参阅此处,如果 TalkBack 未能将其宣布为图像(它会),用户仍然会认为这是一张图片。您以一种实际上更好地描述了控件的方式将上下文信息添加到内容描述中。这实际上是最容易获得的解决方案!去图吧。

    链接:

    对于链接,这有点棘手。关于什么是链接与按钮的构成,可访问性存在很大的争论。在网络浏览器世界中,这是一个很好的辩论。但是,在原生移动端我想我们有一个非常明确的定义:

    任何在激活时将您带离当前Application Context 的按钮都是一个链接。

    当用户与控件交互时,上下文(大写 C 上下文!!!)将发生显着变化这一事实是非常重要的信息。

    TalkBack 无法识别很多链接,因此,对于这条非常重要的信息,如果您发现 TalkBack 未共享此信息,请继续在您的内容描述中附加“, link”这个元素。这是我发现的这条规则的唯一例外,但相信这是一个很好的例外。原因是,是的,它确实为其他辅助技术增加了一两个违规行为,但它传达了足够重要的信息来证明这样做是合理的。您不能使用 Android Accessibility API 创建一个合理复杂的用户界面的 WCAG 2.0 兼容应用程序。它们有太多的限制,如果没有“hacks”,你根本无法做所有你需要做的事情来实现这一点。所以,我们有时必须做出判断。

    【讨论】:

    • 感谢您的详细解释。这很有帮助。
    • 嗨,克里斯,您对链接的例外/破解在 2020 年仍然有效吗?我是否需要将“,链接”附加到按钮的 contentDescription 以将用户带出应用程序?
    • 是的,不幸的是,仍然准确。尽管“后退”动作现在使用得更加普遍。所以我要补充一点,我自己实际上永远不会在内容描述中添加“,链接”,因为现在让你脱离上下文的事情的重要性随着后台操作在操作系统范围内如此有效而降低了。但是,如果您有一个希望作为链接传达的链接,这仍然是唯一的方法。我只是不再在我自己的应用程序中这样做了,并且还没有看到我建议这样做的情况(自 Android 9.0 起)。
    猜你喜欢
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    相关资源
    最近更新 更多