Android端适老化与无障碍改造
文章目录
- 第一部分 背景
- 1.1 社会现状
- 1.2 改造标准
- 1.3 市场案例
- 第二部分 技术剖析
- 2.1 适老化
- 2.1.1 字体大小适配
- 2.1.2 扩大点击范围
- 2.1.3 屏幕尺寸适配解决方案
- 2.1.4 屏幕密度匹配适配解决方案
- 2.2 无障碍
- 2.2.1 无障碍服务声明
- 2.2.2 基本组件的无障碍开发
- 2.2.3 无障碍服务方法
- 2.2.4 手势监听
- 2.2.5 使用无障碍操作
- 第三部分 如何改造
- 3.1 邮箱类应用分析
- 3.2 改造建议
- 3.1 适老化
- 3.2 集成化朗读
- 3.3 无障碍使用
- 3.4 结论
第一部分 背景
1.1 社会现状
根据国家统计局数据显示,截至 2019 年底,我国 60 岁及以上人口已达 2.5 亿,占总人口的 18.1%,2022 年中国将进入占比超
14% 的深度老龄化社会,2033 年左右进入占比超 20% 的超级老龄化社会,之后持续快速上升至 2060 年的约 35%。
重点工作 《互联网应用适老化及无障碍改造专项行动方案》
- 开展互联网网站与移动互联网应用(APP)适老化及无障碍改造。
- 开展适老化及无障碍改造水平评测并纳入“企业信用评价”。
- 授予信息无障碍标识及公示工作。
时间安排 为期一年
- 2021年 1月 - 2月 动员部署阶段
- 2021年 3月- 10月 组织实施阶段
- 2021年 11月-12月 总结评测极端
首批改造名单
1.2 改造标准
- 针对老年人,推出更多大字体、大图标、高对比度文字的产品。尽量实现一键操作、文本输入提示、方言识别能力。取消广告插件,与付款类操作诱导式按键。
- 针对视力障碍人士,解决“验证码”操作困难、按钮和图片信息不可读的问题。
- 针对肢体障碍人士,支持自定义手势,简化交互操作。
1.3 市场案例
目前做得适老化做得较为出色的是喜马拉雅听大字模式与滴滴出行关怀版。共同的优点为:无广告,界面干净,易用,已去掉理财、购物等营销模块。
此外,滴滴出行还推出了「滴滴老年版」小程序,在小程序中可使用电话叫车功能打车,省去了长辈打字输入的功夫。同时,关怀版还取消了设置上车点,长辈只需要输入目的地,即可呼叫快车。
而其他APP,像支付宝、淘宝、酷狗音乐还存在字体大小适配不理想、存在冗杂广告、启用操作繁琐、每次进入应用需要重新开启 等问题。
第二部分 技术剖析
2.1 适老化
2.1.1 字体大小适配
- 使用Android 8.0 新增动态改变 TextView 字体大小的新特性 Autosizing TextViews
- 若要设置字体大小随系统改变,使用sp作为字体单位。
- 为避免有些情况字体过大,造成页面排版错乱,一些场景可使用字体不跟随系统改变。
@Overridepublic void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);if (newConfig.fontScale != 1) { //fontScale不为1,需要强制设置为1getResources();}}@Overridepublic Resources getResources() {Resources resources = super.getResources();if (resources.getConfiguration().fontScale != 1) { //fontScale不为1,需要强制设置为1Configuration newConfig = new Configuration();newConfig.setToDefaults();//设置成默认值,即fontScale为1resources.updateConfiguration(newConfig, resources.getDisplayMetrics());}return resources;}
2.1.2 扩大点击范围
在原有View四周增加点击范围,默认是增加 20 pix
public static void expandTouchArea(View view) {setTouchDelegate(view, 20);}public static void expandTouchArea(View view, int size) {View parentView = (View) view.getParent();parentView.post(new Runnable() {@Overridepublic void run() {Rect rect = new Rect();view.getHitRect(rect);rect.top -= size;rect.bottom += size;rect.left -= size;rect.right += size;parentView.setTouchDelegate(new TouchDelegate(rect, view));}});}
2.1.3 屏幕尺寸适配解决方案
2.1.4 屏幕密度匹配适配解决方案
2.2 无障碍
2.2.1 无障碍服务声明
为了能被看作一个无障碍服务,必须在声明文件中的应用程序(application)元素中包含服务(service)元素(而不是活动(activity)元素)。此外,在服务(service)元素内,还必须包括无障碍服务的目标过滤器。为了兼容Android 4.1及更高版本的系统,声明文件中必须请求 BIND_ACCESSIBILITY_SERVICE 的权限
<manifest>...<uses-permission ... />...<application>...<service android:name=".MyAccessibilityService"android:label="@string/accessibility_service_label"android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"><intent-filter><action android:name="android.accessibilityservice.AccessibilityService" /></intent-filter></service><uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" /></application>
</manifest>
2.2.2 基本组件的无障碍开发
对于Android的基础组件,只需要简单的在xml或代码中设置contentDescription属性。
- AccessibilityEvent : 在用户和ui交互时,由系统发送的无障碍事件,例如按钮被点击,或者一个view被focus,参见AccessibilityService,一个无障碍事件的最主要作用就是暴露给AccessibilityService足够多的信息,以提供给用户界面良好的反馈。
- AccessibilityNodeInfo:一个view状态的快照,代表了窗口中包含的节点的信息。
- View.AccessibilityDelegate:View 的内部类,通过组合而非继承的方式来控制处理无障碍事件。包括发送,初始化事件以及节点属性。
2.2.3 无障碍服务方法
一个无障碍服务必须继承AccessibilityService类,重写该类的以下方法。这些方法被Android系统调用时按顺序呈现,从服务被启动(onServiceConnected()),一直运行(onAccessibilityEvent()、onInterrupt()),到服务被关闭(onUnbind())。
- onServiceConnected()
(可选)当系统成功连接到无障碍服务时,调用该方法。使用该方法为无障碍服务提供任何一次性的启动步骤,包含连接到用户反馈系统服务,例如音频管理或设备震动。如果想要在应用运行时设置无障碍服务的配置或做一次性的调整,可以在该方法中调用setServiceInfo()来实现。 - onAccessibilityEvent()
(必选)当系统检测到一个符合无障碍服务设定的无障碍事件过滤参数的事件时,该方法被系统回调。例如,当用户在应用程序中点击一个按钮或聚焦一个用户界面控件时,你的无障碍服务会为此应用程序提供反馈。此时,系统调用这个方法,传递相关联的无障碍事件,无障碍服务就可以翻译和使用该事件为用户提供反馈。在无障碍服务的生命周期中,该方法会被调用多次。 - onInterrupt()
(必选)当系统想要打断无障碍服务提供的反馈时该方法被调用,一般情况下是响应用户操作,如移动焦点到一个不同的控件。在无障碍服务的生命周期中,该方法会被调用很多次。 - onUnbind()
(可选)当系统想要关闭无障碍服务的时候,调用该方法。使用该方法去完成一次性的关闭进程,包括解除分配用户反馈系统服务,例如音频管理或者设备震动。
2.2.4 手势监听
无障碍服务可以监听特定手势,并代表用户响应。该特性被添加在Android4.1(API级别16)版本中,要求无障碍服务激活触摸浏览特性。无障碍服务可以通过设置AccessibilityServiceInfo实例的flags成员为FLAG_REQUEST_TOUCH_EXPLORATION_MODE,请求该特性的激活
public class MyAccessibilityService extends AccessibilityService {@Overridepublic void onCreate() {getServiceInfo().flags = AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE;}...
}
2.2.5 使用无障碍操作
无障碍服务可以代替用户操作,让用户与应用的交互更简单有效。无障碍服务的这个能力在Android4.0(API级别14)被加入,在Android4.1(API级别16)被显著扩展。当接收到事件,无障碍服务可以使用getSource()方法在事件中检索AccessibilityNodeInfo对象。使用AccessibilityNodeInfo对象你的无障碍服务可以浏览视图层次来判定采取什么操作并使用performAction()为用户操作。
public class MyAccessibilityService extends AccessibilityService {@Overridepublic void onAccessibilityEvent(AccessibilityEvent event) {// 获得事件的资源节点AccessibilityNodeInfo nodeInfo = event.getSource();//使用事件和节点信息判定为用户执行什么样的操作。nodeInfo.performAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD);//循环nodeInfo对象nodeInfo.recycle();}...
}
performAction()方法允许无障碍服务在应用中执行操作。如果无障碍服务需要去执行全局操作,例如导航到主屏幕、按返回键、打开屏幕通知或者最近应用列表等,使用performGlobalAction()方法。
第三部分 如何改造
3.1 邮箱类应用分析
189邮箱
未做适老化与无障碍处理。
字体不跟随系统变化,并且无字体适配功能。
网易邮箱
字体跟随系统变化,符合适老化需求。但存在邮件详情页面,webview正文内容未做字体最大化适配处理。
未做无障碍处理。
Outlook
字体跟随系统变化。适老化适配程度高,无明显适配不理想。
无障碍化处理基本完成,邮件列表有集成化朗读(包括附件个数、聚合邮件数目、发件人、标题、正文)、双击展开详情等手势功能;各按钮点击范围已扩大;图标按钮均设置文本朗读。但存在列表点击区域过小,无响应等情况。
QQ邮箱
字体跟随系统变化。适老化适配程度高。
无障碍处理效果理想。诸多细节体现了人文关怀,语音朗读详尽、多种无障碍手势操作符合用户习惯。
3.2 改造建议
3.1 适老化
提供适老化APP版本
便于解决APP日常运营需求与适老化政策定位的冲突。适老化的一项指标为去除广告插件,简化交互操作,如果放在APP的大字版模式中,容易造成交互逻辑不统一,同时给正常用户留下漏洞:为了使用绿化版APP,而选择大字模式,从而削弱营销效果。
小程序适配
目前大多数老年人也会使用微信,当分享邮件时,用户将会在微信小程度打开邮件。建议小程序同步适配当前APP的字体。
去除广告与无关模块
在适老化APP版本,去除邮件列表的文字、图片广告,资讯邮件投放;去除通讯录、发现页等相关程度较低tab,简化应用,只提供核心功能。
扩大按钮点击范围
目前写信页收/发件人栏点击区域过小,很难选中。需要筛选当前点击区域过小的按钮,进行优化。
3.2 集成化朗读
QQ邮箱优秀文本朗读
- 侧边栏
“收件箱有134封邮件未读邮件,点按两次即可激活,点击两次并按住可长按,该列表共有28项,当前处于第1项。”
—— 操作提示、操作列表总数、未读数量等连贯文本 - 邮件列表
“(用户) 在 2021年12月9日发来,(标题)(正文),在列表中第218项,包含2个附件”
—— 邮件所在序列、邮件信息、附件个数等连贯文本 - 写信页,在写信时会逐字朗读
“点按两次并按住可长按,有粘贴、复制等功能”
—— 隐藏操作说明 - 写信按钮
“弹出视窗口,写邮件,列表有4项”
—— Dialog弹出说明,按钮名称,操作列表总数(首次点击出现) - 选择联系人
“未选中选框,张磊,(用户邮箱)"
—— 提示选中状态
对图标添加文字朗读
有些不包含文字的图标,如写信页的“+“与进入侧边栏的菜单按钮,系统无法识别,将会朗读成“图片”或“image”。需要添加自定义文本朗读。
新邮件到达提醒
Outlook与QQ邮箱均在有未读新邮件到达时,使用了语音文本自动提醒。
3.3 无障碍使用
写信页自动跳至收件人栏
QQ邮箱在进入写信页时,自动将鼠标跳至收件人栏,并进行文本朗读“正在编辑收件栏”,而其他包括139邮箱的应用,在进入时并没有做适配,默认停留在“返回键”。
去除多余弹窗
- 反馈类弹窗如APP使用评价弹窗:五星好评、再用用看等。
- 写信页退出保存草稿箱弹窗,建议对适老化APP版本直接做草稿箱保存处理,当超过一定数目提醒用户或自动优化,原因是无障碍操作时每一步都需要选中、双击两步等操作,多一个交互,用户使用成本将会升高,建议简化。
滑动邮件列表
QQ邮箱隐藏亮点:
- 双击标题栏的“收件箱”,邮件列表自动滑动一定距离。
- 开启无障碍模式,每次滑动均有移动提示音,用来表示移动距离:约2cm移动一次提示一次A音效,4cm连续移动提示连续两次A音效;快速滑动提示B音效。让用户通过音效掌握移动距离,与语音提示的当前邮件序列结合,可以便捷又清晰地勾勒当前邮件列表的情况。
解析图片信息
对邮件详情的图片信息进行文本提取并朗读。
增加手势
双击邮件列表某一封邮件,双击进入邮件详情;详情页双击正文,回退至邮件列表。简化交互,符合用户习惯。
3.4 结论
- 如 无硬性规定 (必须实现无广告和无障碍处理)
建议直接在版本上增加适老化模式,使用最大-字体,减少广告投放,扩大点击范围。 - 如 明确规定 要完成无障碍改造
建议开启适老化APP版本,去除无关tab(方便维护),在关键按钮上补充文本朗读信息,去除邮件列表页广告,保留基本功能。适当地做一些人文关怀:解析图片信息,增加新邮件提醒,添加手势交互等。
Android端适老化与无障碍改造相关推荐
- 政府网站群适老化与无障碍改造
版权声明:本文章由"深圳市信科网络科技有限公司"编辑组汇编而成,未经授权和许可,任何个人或媒体不得对本网站的文章及其他信息资料予以复制.转载.抄袭.改编. 如需转载请联系本网站客服 ...
- 简单使用 Accessibility 及 Android 适配 TalkBack,实现适老化和无障碍
前言:工信部发布的互联网应用适老化及无障碍改造的通知,app 需要进行改造,以提高老年人或者视障人士在使用 app 过程的便捷性,改造的内容包括但不限于 1.UI 界面更简单.整洁(界面元素不能过于复 ...
- 温暖人心的地图 腾讯地图SDK全面支持无障碍及适老化
作为普通人,我们每一天都在享受数字化信息化高速发展给我们生活带来的巨大便利.我们上网来浏览新闻.用手机APP来网上购物.点外卖.出门导航-很难想象如果有一天在使用这些应用的时候遇上了障碍,我们的生活会 ...
- 分析|无感验证:应用适老化与业务反欺诈的“守门员”
近日,话题"爷爷用原价给我买了四个蛋挞"登上了热搜.一网友称爷爷去肯德基买蛋挞的时候,店员没有告知其29.9元8个蛋挞的活动,且因为爷爷不太会用智能手机,在现场也没有看到活动介绍, ...
- 6000字说透,如何做好产品「适老化」!
近日,各互联网APP密集上线「适老化」版本或新产品. 8月初,抖音「大字简明模式」上线 8月20日,QQ音乐「简洁模式」上线 9月初,12306网站「适老版」上线 9月底,微信「关怀模式」上线 9月底 ...
- 百度地图html页面设置大小设置,响应适老化!百度地图全新上线地图显示大小调节功能...
本文转自[中国青年网]: 为提升老年群体的智能出行体验,响应工业和信息化部"互联网应用适老化及无障碍改造专项行动"号召,近日,百度地图最新版上线地图显示大小调节.口音识别优化等多项 ...
- 2.6亿中国人受益,搜狗、QQ等9款APP首批通过官方适老化认证
前天,工业和信息化部互联网应用适老化及无障碍改造专项行动",公布了首批通过适老化及无障碍水平评测的网站和APP. 腾讯的7款APP.腾讯网.搜狗均首批通过评测. 腾讯表示:我们一直在努力,让 ...
- 政务网站适老化,看顶象无感验证
媒体报道,广东肇庆的七旬独居老人方爷爷,因行动不便想要网购,但又不懂电脑和智能手机,便用座机打电话向客服求助.三年多以来,方爷爷和客服通话6000多分钟,最长一次超过2个小时,在客服团队的助力下成功网 ...
- 30000亿市场规模亟待挖掘,适老化改造机遇和突破口在哪里?
撰文丨吴诗雪 开篇: 图:<忘不了餐厅2> 国内首档聚焦于认知症老年人的综艺节目 -- <忘不了餐厅>,自播出后,好评如潮.如今,节目组继续发力推出第二季,在聚焦"认 ...
最新文章
- Apache HTTP Server Version 2.2 文档中文版
- Spring AOP与IOC以及自定义注解
- 破解 Windows 2003终端服务许可证
- UIScrollView点击StatusBar返回顶部失效的解决
- 在FireFox IE 下Response 中文文件名乱码问题
- vue----第一个工程项目
- Epic高管:虚幻4引擎目标是不同规模开发商
- Mysql主从知识扩展部分1
- ViBe算法核心思想
- GitHub服务中断24小时11分钟事故分析报告
- Sql Server 数据库练习题(一)
- Web网页设计规范详细介绍
- 软考软件设计师备考详细介绍
- python 全栈什么意思_python全栈指的是什么意思
- 对焦(调焦),变焦区别
- linux 机器无法访问网络
- rest接口访问webService soap接口 用XStream javabean和xml的互转
- 微软服务器模式表格多维,用挖掘功能实现多元回归分析
- python --获取内网IP地址
- 摄像机忘记密码怎么办