正在看这篇文章的同学,也许是幸运的。

互联网的发展,让我们的生活越来越便利,但这个“我们”,也许并不包括那些残障人士。正常人眼里来说再简单不过的页面操作,对于盲人来说都是不可攀越的高墙。换句话说,越行越快的互联网列车,让视觉障碍人士和正常人的生活越来越远。

好消息是,这个问题也许正在得到改善。在今年的 MDCC 移动开发者大会上,专门开设了“信息无障碍专场”。

在现场的演讲中,一位视觉有障碍的程序员沈广荣为现场的观众展示了“一个盲人的一天”——他如何与这些 App 相处。

看似友好的 App,盲人世界里的无数大坑!

沈广荣的演示设备是一台 iPhone。他开启了 iOS 自带的 Voiceover 功能。

简单科普一下这个功能的实现原理:

用户通过手指单击或滑动来移动“焦点”——屏幕上的选中区块,而系统会朗读出当前选中的内容。一旦用户“听到”自己想要的按钮,就会通过双击来执行“进入”功能。

然而听上去简单明了的规则,在实际应用中,却有着无数大坑。

1、“不明真相”的应用选取

拿到手机,他想要找到京东 App,去买一款机械键盘。

由于手机安装了很多 App,他需要按顺序挪动“焦点光标”来找到目标 App。同时,由于朗读需要一定时间,他会根据朗读的第一个字来判断是不是想要的应用,如果不是,他不会等待系统朗读完毕就会转到下一个应用。

然而,在找到京东 App 的路上,他差点跑断了腿。因为京东 App 的名字是:手机京东。在演示过程中,有很多次他都从“手机京东”身上走过,但是因为系统读出了“手”字,他并不认为自己找到了“京东”。

当然,这个问题并不是一个无法克服的障碍,只要你有足够的耐心听完朗读,或者把朗读速度加快。(这正是沈广荣平时的做法)而且,Siri 也是解决这个问题的完美方法,在查找应用方面,这个并不太聪明的机器人还是做得不错的。

然而,这只是视觉障碍人士面对的第一个小坑。

【手机京东、手机淘宝,都存在关键词后置的问题】

2、走位飘忽的“按钮描述”

刚才提到,每当光标移到一个“焦点”之上的时候,系统需要用语音反馈回来。但是现实世界却复杂无比,不仅有选项卡按钮,还有搜索、文字输入框、商品介绍、状态勾选。

例如在下面这个购物车页面里:

【手机京东购物车页面】

右侧这个箭头本来应该是“详情”功能,但是当沈广荣把光标挪到箭头之上的时候,系统朗读出了一段奇异的英文。

沈广荣犹豫片刻,只好对现场观众说

这串英文对我毫无意义,我不会去点这个按钮。

这表明,在程序开发的时候,程序员并没有给这个按钮做定义标注。这个小小的缺陷完全不会影响正常人使用 App,但是在盲人的心里,这个按钮成为了巨大的障碍。

如果有兴趣,你可以闭上眼睛,打开Voiceover,亲身体验一下不限于京东的诸多 App。你会马上体会到,App 中的每一个页面,都蕴含着如“宇宙般浩瀚”的信息,在缺乏准确地语音回馈时,你会感觉到无比的茫然。

3、“拦路门神”——广告

相信视觉正常的人,都会被打开 App 之后的特性介绍和各种满屏广告搞得晕头转向。对于盲人来说,他们没办法观看广告,但是却不得不学会用正确的姿势跳过广告。

在打开滴滴出行的时候,沈广荣就面对这样“严峻”的挑战。他打开的滴滴 App 刚刚进行了后台升级,所以映入眼帘的是新特性介绍。显然,他是个老司机,已经能够熟练地点击“下一步”绕过这些介绍。但是,新特性页面消失后,一个几乎满屏的广告杀了出来。沈广荣对于发生了什么一无所知。

【沈广荣在现场用大屏幕演示时,遇到了滴滴出行弹出的广告】

他通过移动手指,想要找到熟悉的按钮,但是让人心疼的是,他的所有点击,实际上都触摸在了占屏幕60%的广告上,所以系统没有朗读反馈任何内容。而用了20秒,他终于凭借运气找到了广告图片边上那个“X”。

而面对叫一辆车这样“简单”的事情,沈广荣的冒险还没有结束。

4、“如堕云雾”的状态描述

他想叫一辆出租车,于是在 App 页面中的“专车、出租车、顺风车。。。”选项卡中切换。

然而,问题来了。当听到了“出租车”的语音反馈以后,他双击确认。软件也确实进入了“出租车”的卡片,但是却没有任何语音提示当前这个卡片是选中状态。

他紧皱眉头,又把光标从头开始移动了一个遍,最后选中了“出租车”,按了下去。然而,他还是没有得到任何反馈,不得不求助现场观众:“我选中出租车了吗?”现场观众此时才明白,原来在正常人眼中再明显不过的页面被选择后的图形变化,视障人士是无法判断的。

【滴滴出行选项卡页面】

其实,要加入状态提示,从技术上讲并不难,之所以滴滴出行没有在这个地方做出提示,可能仅仅是工程师和现场观众一样,没有想到这对于视障人士来说是一个巨大的障碍。

5、“天书”一般的图形验证码

之前的这些障碍,已经让很多 App 功能对于盲人变得非常难用。然而,接下来这个坑,对于盲人来说简直是“天堑”一般的存在。

那就是沈广荣的同事,信息无障碍研究会首席专家张昆对雷锋网(公众号:雷锋网)提到的:图形验证码。

看到这里你可能会恍然大悟。形如 12X06 等站的坑爹的图形验证码,对于视觉正常的人来说,尚且是残忍的考验,何况对于一个盲人。

【常见的手机登录输入图形验证码的环节】

事实上,你应该知道我在讲什么——盲人无法看到图形验证码。这样的直接影响就是:盲人可能失去了进入 App 的权利。

目前在中国,允许用户用语音验证码,或者把图形验证码的文本发送到手机等替代方式操作的 App 仍然是少数。这一点,就足以让所有的盲人无法独立使用这款 App。

刚才所属,只是盲人使用 App 中诸多困难的一小部分。当亲眼看到盲人在使用这些 App 时紧皱眉头难以操作时的无助,我们这些正常人,这些 App 开发者们会感到深深的内疚。

不过,让人高兴的是,来自手机 QQ 和支付宝的工程师,在现场分享了他们为盲人改进 App 的努力。

盲人用 App 的小细节

虽说对于所有的 Android 应用,都可以采用系统内建的 Accessibility 辅助功能为盲人提供使用便利。但是面对前面所说的无数大坑,需要工程师专门为盲人潜心进行优化。

这是一个复杂的系统工程,但从一些细节当中可见一斑。

手机QQ——让视障人士用表情

简单科普一下,在程序内部,把一个功能块的视觉化称为一个“View”。而在手机 QQ 里,发送表情的功能中,所有的表情同属一个“View”。正常用户通过精准点按,可以完美地选择想要发送的表情。但是在盲人使用的过程中,系统的辅助功能只能把光标在“View”之间移动,也就是说,光标的最小范围默认就是一个“View”。这就造成了如下左图的结果:

【手机 QQ 表情页面在辅助功能开启时的情况】

所有的表情都被同时框起来,如果用户此刻选择确定,则只能输入最中心的“尴尬脸”。。。。好吧,这件事还真让人尴尬。

为了让视障人士也可以和我们一样使用表情,手Q工程师何金源和同事们着手解决这个问题。他说:

这个问题比较复杂,因为如果要把各个表情分拆为不同的“View”,就要涉及底层的代码改动。

通过系统提供的功能,他们把这个“View”分割为不同的“NodeInfo”——一种专门用于识别辅助输入区域的信息。

在分裂区域之后,还需要为不同的表情做好“备注”,这些“备注”会被朗读给用户,对于用户理解自己在发送什么样的表情至关重要。

就这样,最终他们终于实现了让盲人输入表情的友好操作。

支付宝——和黑客“争夺”密码键盘

今年年初,支付宝下架了键盘辅助(朗读)功能。

很多人并不知道其中的原因。蚂蚁金服的工程师楼勇为雷锋网解释了其中缘由。

由于安卓系统 Accessibility 辅助功能的特性,系统需要获得点按的内容,才能朗读出来。而在这个链条中,允许有第三方的接口参与。这种情况下,我们无法验证第三方接口是不是恶意的。

【前台使用辅助功能输入密码时,后台的代码情况】

从楼勇提供的图片可以看出,这个为了视障人士设计的朗读功能,实际上在后台的代码里,完整地记录了用户点按密码的明文和顺序。也就是说,这个功能极有可能被黑客利用,窃取用户的支付密码。(不要以为它和视力正常的用户没关系,恶意软件可以通过某种方法,在后台强制打开辅助模式。)

为了绕过第三方接口,支付宝的工程师决定自己来做键盘朗读的功能。他们在支付页面“言辞拒绝”了系统的帮助,而是自己制作“焦点区块”(即用户选择了哪个数字),自己调用系统的 TTS 朗读功能,用这种方式,完美躲闪了其他人触及用户密码。

然而,为了实现这个功能,还要注意诸多细节,例如:

系统并不知道支付宝自制了“焦点区块”,这样会导致屏幕上同时出现两块“焦点区”,造成混乱。于是程序员们又增加了一层和系统沟通的逻辑——既让系统知道自己做了“焦点区”,又不告诉系统具体是“哪一块”,以此来保护用户的隐私。

尾声

有很多 App 存在让残障人士使用艰难的“坑”,但是与此同时,诸多的 App 正在重视建立辅助措施的工作。

虽然在现场的演示中,虽然京东和滴滴出行有些地方不尽如人意,但支付宝和手机 QQ 也有很多缺点。我们把这些展现出来的本意,并不是责怪他们,而是提醒所有 App 的设计者,对我们身边的残障人士多一些考虑。

有一点不容置疑,这些知名 App 的用户群中,一定包括诸多残障人士。在这一点上,相信很多人都会为努力解决问题的攻城狮点赞。

正如楼勇所说:

技术的发展,是为了跨越鸿沟,而不是带来新的不平等。

【在现场聆听的视障程序员】

背景资料:

MDCC,是由CSDN、创新工场联合主办的移动开发者大会(Mobile Developer Conference China),是一年一度的移动开发者交流分享的盛会。

本文作者:史中
本文转自雷锋网禁止二次转载,原文链接

你有没有试过“闭上眼”使用:京东、滴滴、QQ、支付宝?相关推荐

  1. AI就是闭上眼想要一份凉皮,睁开眼就会有一份凉皮摆在眼前

    回答这个问题之前,先听下这段对话: "你愿意让别人帮你干活吗?" "愿意!" "那么你愿意让别人干你的活吗?" "愿意" ...

  2. 哭得累了   矛盾心里总是强求   劝自己要放手   闭上眼让你走

    记事本 作词:周传雄.陈信荣 作曲:周传雄 演唱:陈慧琳 翻开随身携带的记事本 写着许多事都是关于你 你讨厌被冷落 习惯被守候 寂寞才找我 我看见自己写下的心情 把自己放在卑微的后头 等你等太久 想你 ...

  3. delphi framerect 画透明_闭上眼睛一起进入彩色画的梦境,幻彩花精灵,彩铅手绘教程...

    点击"专栏"查看更多干货文章关注 炫彩花精灵 世上的花儿正在开放,美好的事情接踵而来,来和我一起闭上眼睛进入彩色花的梦境吧. 教程说明 工具 辉柏嘉蓝盒水溶60色 自动铅笔 32K ...

  4. 闭上眼睛时,会感触到那清风拂过脸颊的柔

    在人生的旅途中,我在慢慢的找寻自己的那处风景--闭上眼睛时,会感触到那清风拂过脸颊的柔软.每个人的旅行都是一次美好的开始,回到原本我们曾经已经遗忘的那个角落,寻找那不在的人-- 曾经,我爬上山峰,去看 ...

  5. 你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。 抓取多少个就可以确定你肯定有两个同一颜色的果冻?(5秒-1分钟)

    你有一桶果冻,其中有黄色.绿色.红色三种,闭上眼睛抓取同种颜色的两个. 抓取多少个就可以确定你肯定有两个同一颜色的果冻?(5秒-1分钟) 分析: 1.里面有三种颜色时,需要4个 2.里面有2种颜色时, ...

  6. 转:闭上嘴巴,张开耳朵,打开思维

    个人理解: 一人说,一人听 绝大多数人都会竭尽所能逃避承担负面消息带来的恶果,避免报告坏消息,以防惹是生非:保持倾听就会获得回报,闭上嘴巴就足够了 如果你在还没有听到任何事情之前就已经拿定了主意,那么 ...

  7. 足球大v:请闭上你们无知的嘴

    德国输了,韩国赢了.我既不是德国的球迷,更不是韩国的,对于这样的结果,我不悲也不喜.但我却要对以大V"高xx"为代表的假球论.阴谋论.剧本论者们,大声吼一句:"闭上你们无 ...

  8. 教程-上传应用公钥并获取支付宝公钥

    教程-上传应用公钥并获取支付宝公钥 1. 点击签名验签工具右下角的"上传公钥"会打开支付宝开放平台网页,输入账号登录.(建议使用IE或Chrome浏览器.)  2. 在" ...

  9. 基于滴滴云安装 Docker 并上传镜像到滴滴云 Docker 仓库

    前言 Docker 简化了容器中应用程序进程的管理过程.容器允许您在资源隔离的进程中运行应用程序.容器与虚拟机类似,但容器更便携.更资源友好,并且更依赖于主机操作系统. 本文将介绍如何用滴滴云服务器在 ...

最新文章

  1. Solidworks2017安装与破解
  2. 百战程序员试题与答案(仅供参考)
  3. 使用Reflector.FileDisassembler反编译DLL
  4. pytorch forward_【Pytorch部署】TorchScript
  5. CF1497C k-LCM
  6. MapReduce算法–了解数据连接第二部分
  7. 「CH2101」可达性统计 解题报告
  8. leetcode 140. 单词拆分 II(记忆化)
  9. 前端学习(1307):模块查找规则二
  10. php实时上传多张图片,PHP实现多张图片上传预览功能
  11. 图片素材网站|找素材、提升审美力就靠它了!
  12. [转]Android应用的自动更新
  13. Elixir 1.7改进错误处理、日志和测试
  14. memcached mysql 类_mysql有没有类似和memcached里那样的CAS版本控制?
  15. WPS Office 去广告绿色版(2013.11.13更新)
  16. 方正璞华研发的社保股权管理系统初见成效
  17. Java中Scanner的进阶---求和与求平均数
  18. 使用Excel 提取文本中的数字
  19. 安卓wifi测速android,WiFi测速管家
  20. Vue实现动态路由导航

热门文章

  1. 【C】printf warning: unknown conversion type character ‘l‘ in format [-Wformat=]
  2. 【Git】ubuntu上git commit提交后如何保存和退出类似vim的界面,回到命令行
  3. java备忘录模式应用场景_图解Java设计模式之备忘录模式
  4. cocos creator 安卓原生平台环境_竞技对抗小游戏单挑篮球开发历程 | Cocos技术派第12期...
  5. domdocument php charset gbk,PHP DomDocument无法处理utf-8字符(☆)
  6. java integer int 比较_java Integer和int之间的比较问题是什么?
  7. 【jdbc】兴唐第三十一节课之修改数据和查询数据(使用自己写的DBUtil)
  8. JQ加AJAX 加PHP实现网页登录功能
  9. iOS提示气泡,带动画
  10. Docker容器入门-基本命令的使用