技术人文丨标签:屏幕阅读器的“发言稿”

当你被蒙住双眼,无法靠视觉使用手机时,你会怎么做呢?

有关注我们技术人文的朋友们一定说:“我知道!可以用TalkBack或是VoiceOver!”

没错,我们之前跟大家分享了视觉辅助功能(详见👉“焦点:视觉辅助功能的基础”)。但是,屏幕阅读器检测到焦点之后就万事大吉了吗?并不是。

在检测到了焦点之后,屏幕阅读器还需要经过关键步骤——识别“标签(content description)”,并且将标签通过语音播报朗读出来,才能真正让用户获取信息。

c0f70ded087d2573885a52290d7c2ea3.png

图:简化情况下,用户从触摸到屏幕到听到语音播报的流程

那标签又是什么呢?为什么它这么重要呢?

● 标签是什么?

“标签”其实就是一条人为添加在页面各元素上的描述。它嵌入在代码中,能够被屏幕阅读器读取,但在用户使用的时候并不会看到。

如果说焦点是屏幕阅读器的“眼睛”,有了焦点,屏幕阅读器便可以知道“这里有一个元素”;那么添加标签后,屏幕阅读器就有了“发言稿”,知道现在选中的这个元素“是什么”

● 标签为什么重要?

一位视障朋友曾跟我们抱怨过:

你知道吗?如果没有加上标签,我们要不是听不到,要不就是一堆&%¥%#¥乱七八糟的内容。还有最常见的就是“未加标签”的播报,你能想像你不管怎么滑听到的都是“未加标签”“未加标签”“未加标签”吗!分分钟让人崩溃!

尤其在购物网站上,明明知道那里可能有一堆优惠信息,但却只能听到“未加标签”,不只是我在哀嚎,钱包也在哀嚎......

听完这位朋友的话,标签的重要性,应该不需要多说了吧!

● 完善的标签应该长怎样?

那标签到底该怎么加上才算完善呢?

1.覆盖每一个页面元素

标签最基本的就是要覆盖页面上的所有内容。除了带有文本信息的内容外,标题、图片、悬浮窗、轮播图等元素也都应该加上文本标签。更不能因为觉得部分元素对于障碍人士无用,就不加上标签,“每个人”都有获知全面信息的权利

特别是写着文字的图片、滚动播放的通知栏、悬浮窗的退出键、需要展开的菜单中的按钮等,都是开发者们常常会忽略的小地方。

94de0c817287d02fe965209b9332b6fa.png

图:带有文字的图片,被加上标签后,就可以播报出“人气字体必买榜 14期,按钮”

2.信息表达完整

标“全”还不够,还需要标的够“细”。需要完整表达出元素目前的状态及相关重要信息。像是WLAN按钮,除了播报WLAN按钮名称以外,还应该播报开关状态、信号状态(这一条经常被忽略)、网络名称。

9a31d7abfd67fc70a7439881de86bf1c.png

图:WLAN按钮正确标签方式应是“WLAN,开关状态,信号状态,网路名称”

3.简洁易懂

因为视障用户是利用听觉线性地获取信息,所以标签也应尽量简洁易懂,才能让视障用户快速进行判断和操作。来比较一下:“这是媒体音量滑动控件,现在的音量是36%”和“36%,媒体,滑块”,你觉得哪个比较简洁呢?

b3f7551cbcaab57a07660ad4f315dc80.png

图:加上正确标签的媒体滑块,应是播报“36%,媒体,滑块”

简洁之外还要容易理解,并且描述清楚元素的作用,而不是描述元素的外观。像是“主页”按钮不该被命名为“小房子”,录音界面的“标记”按钮不该被命名为“小旗子”。

fe22899d0285c0d8befd1febcec87002.png

图:录音界面标记按钮,应该被打上“标记”标签,而非“小旗子”

而除了文本标签,开启小米无障碍触感也可以帮助用户提升操作效率,因为不同的界面模块都有不同的震动反馈,利用多感官通道,在触感和播报的搭配下,更可以提升传递信息和操作的效率。

4.避免冗余信息

在加标签的过程中,我们也要避免做重复的无用功。因此加标签的时候,不需要涉及元素的类型(“按钮”)、状态(“关闭”)和操作提示(“点按两次”)。因为每个元素本身就自带了“控件类型”。也就是说,如果你要为一个开关元素赋予标签,并不需要在标签中输入这是一个“按钮”,只需要在定义元素时,为它选择正确的无障碍角色——“button”。

举例来说,下面是为“菜单”按钮加上标签“menu”的代码:

android:contentDescription="@string/menu"

此时屏幕阅读器会播报“菜单 按钮”;

但如果我们加上的标签是“menu button”:

android:contentDescription="@string/menu button"

如此播报出来就是“菜单按钮 按钮”。

● 如何添加标签

看完上面的举例,想必已经有人知道标签应该如何添加啦!

第一种就是我们上面使用到的,使用android:contentDescription 在 layout-xml 中设置   android:contentDescription="@string/标签内容"  属性;

除此之外还可以使用 setContentDescription() 在代码中对其进行设定,只要在代码中动态设置  view.setContentDescription("标签内容")  即可。


乍看之下,加标签是个巨大的工作量,但其实只要在开发软件的过程中就考虑到无障碍适配,那不过就是多加一行代码而已。远比事后排查,再回头翻代码一个个加标签简单得多。

而为了确保小米的无障碍适配,设置了专门的同学对各应用进行无障碍测试,为现有的软件打补丁。还建立了一系列开发文档,详细盘点无障碍适配可能出现的问题、产生原因以及解决方式,供所有开发同学参考;并进一步将无障碍标准纳入部门的标准测试流程。

除此之外,更是举办了多方面的无障碍倡导活动,像是邀请障碍标注员入园、举办障碍用户交流共创会、邀请开发者进入障碍用户交流群等等,拉近同学们跟障碍用户的距离,从意识上让每位同学都开始重视无障碍。

80f1fc99401f38c15d27ed1edc4c2282.png

图:障碍用户共创会中,小米同学与障碍用户一起讨论产品解决方案

我们始终相信,做无障碍绝不只是为了遵守规范。是因为我们把“每一位“用户都当成是自己的朋友。当我们的朋友在使用产品的时候遇到困难,我们就应该去解决;更甚至可以为我们的朋友多想一步,主动发觉他们的潜在需求,提前进行优化,甚至开发新功能。

当我们每个人都多为别人想一步,其实在某种层面,也是在帮助我们自己,因为我们都有可能在某个场景下需要别人的帮助。而技术也绝不仅是前卫、酷炫的,更是实实在在改变了很多人的生活!

在“技术人文”后续系列中我们也会继续跟大家分享各种技术向善的应用,记得关注小米技术,订阅话题!

5b4d672ad6536bd5c06e4e00c7f96b36.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值