范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

网络热传App鉴定李跳跳里用到的无障碍权限是什么?

  「李跳跳」是什么?
  一款用于 跳过开屏广告 的工具类应用。
  其核心的原理,是借助Android系统上提供的 无障碍 功能,检测出当前界面上跳过 按钮的位置,并自动帮我们完成点击 的动作。 「无障碍」功能是什么?
  解释这个概念之前,我们先来看几张图:
  无障碍电梯
  无障碍洗手间
  无障碍坡道
  以上这些都是在公园、地铁等的公共场所里常见的设施,目的是为了保障残疾人、老年人及其他行动不便者能安全、方便地通行,体现的是对于社会少数群体的关怀和尊重。
  无障碍功能的设计初衷也是如此,同样是 为了照顾到部分视力/听力受损、有认知障碍或无法完成精细动作的残障人士,使他们也能够和其他正常人一样,无障碍地使用手机应用来完成日常的沟通、学习和工作 。
  除此以外,无障碍功能还可以 弥补应用在某些使用场景上的限制 ,比如在烹饪的同时使用菜谱类的应用,有了无障碍功能的辅助,我们就可以使用语音指令而非触控手势来操控应用了。
  无障碍功能
  Android系统上提供的无障碍功能,实际可分为两个不同层面上的内容:
  设计层面上,它要求应用界面上的元素:  控件尺寸尽可能大,以方便用户点按 ; 色彩对比度尽可能高,以方便用户查看 ;
  低于建议的色彩对比度(左图)和足够高的色彩对比度(右图)  尽可能包含能描述控件实际用途的说明文字 。
  仅使用颜色创建界面元素的示例(左图),以及使用颜色、形状和文字创建界面元素的示例(右图)
  操作层面上,它要求应用内提供的服务:  尽可能为用户的每个操作提供及时、有效的反馈  尽可能简化操作的步骤,或协助用户完成复杂操作
  后者主要依赖平台级的「无障碍服务」( AccessibilityService )来实现。 「无障碍服务」能做什么?
  Android系统提供了许多标准的无障碍服务实现,比如 TalkBack 这项服务,其提供了与屏幕交互时的实时语音反馈,对于盲人和视力低弱人士非常实用。
  TalkBack
  同时Android也允许开发者创建和分发自己的服务,以增强与用户的互动效果,打造运用范围更广的功能。
  具体展开讲的话,自定义的无障碍服务通常包含对以下几个事项的处理:  收集信息
  这里收集的主要是 与界面交互相关的信息 ,包括所操作对象的类型、其包含的描述性文字以及其他详细信息。
  我们知道,Android应用所采用的界面布局,是基于 View 和ViewGroup 对象、以树状结构 来进行构建的视图层级。
  视图层次结构的图示,它定义了一个界面布局
  Android系统正是基于此视图层级结构编写的无障碍事件,也即,它不仅会返回用户当前所交互的控件本身,还会返回包含此控件的父视图,以及此控件所包含的一系列子视图,这部分额外的信息统称为控件的 上下文信息 。
  上下文信息对于用户理解其所交互控件的含义至关重要。
  以一个简单的复选框为例,对于一个有视力障碍的用户来说,如果无障碍服务仅仅反馈"是否选中",而未能说明"选中的是什么内容",用户就会感到很困惑。
  有了完整的上下文信息,无障碍服务就能够为用户提供更加实用和有效的反馈。  对事件做出响应
  这部分比较简单,通常就是确定无障碍事件的类型,并从触发此事件的视图节点中提取有用的文字描述,以文字转语音或振动的形式反馈给用户。  为用户执行操作
  无障碍服务可以代替用户执行的操作,经过数个系统版本的迭代扩展,目前已经支持多达数十种,包括但不限于点击、长按、复制、粘贴、滚动、翻页等。
  可以说,基本上,只要是Android平台上的标准UI控件(如TextView、RecyclerView、ViewPager等)内可支持的操作,都有对应的无障碍操作类型提供。
  并且,这类操作不仅可以在应用内进行,还可以在系统全局进行,比如回到主屏幕、按"返回"按钮,以及打开最近使用的应用列表等,因此可以极大地简化用户与应用、系统之间的互动。
  所以,说了这么多,「李跳跳」的「跳过开屏广告」功能到底是怎么实现的呢?  跳过开屏广告是怎么实现的?
  其实,如果你能看到这里,此刻你的脑海里应该就已经有了大致的思路,下面,就让我们用代码来实际还原一下:  创建无障碍服务
  首先我们要做的,就是创建一个扩展自 AccessibilityService 的类。 class MyAccessibilityService : AccessibilityService() { ... }
  由于无障碍服务本质上就是一个服务( Service ),因此必须在AndroidManife应用清单文件中包含特定的声明。
  在service元素的声明中,我们还必须添加一个intent过滤器,告诉系统这是一个无障碍服务。
  此外,我们还需要添加  BIND_ACCESSIBILITY_SERVICE  权限,以确保只有系统才可以绑定到它。                                        配置无障碍服务
  配置的目的是为了告诉系统,我们的无障碍服务运行的方式和时机、响应的事件类型、是针对特定的应用还是所有的应用以及采用的反馈类型等。
  配置的方式有代码形式和XML文件形式两种,这里我们主要介绍后者。
  首先,我们需要在res/xml目录下创建一个名为serviceconfig(命名可随意)的XML文件,其中的每一个键值对即表示一个配置选项,具体每一个配置选项的含义我们留到后面再介绍:  <?xml version="1.0" encoding="utf-8"?>
  随后,为了确保引用到该文件,我们需要在上面的服务声明中添加一个指向该XML文件的标记:        ...        注册无障碍事件
  这一步的作用就是确立我们的无障碍服务要处理的事件来自哪个应用的哪些事件类型,与此关联的几个配置选项就是:  android:packageNames (软件包名称):指定可接收的无障碍事件的应用来源。如果有多个应用需要指定,可用逗号进行分隔。而如果未指定,则默认接收来自所有应用的无障碍事件。 android:accessibilityEventTypes (事件类型):指定可接收的无障碍事件的事件类型。例如,accessibilityEventTypes="typeViewClicked|typeViewFocused"就表示可接收点击和获取焦点这两种事件类型,多个事件类型之间使用|进行分隔,typeAllMask则表示接收所有类型的事件。
  此外,为了保证能获取无障碍事件来源控件的视图层次结构(即获取其父视图和子视图),我们还需添加 canRetrieveWindowContent 属性,并将其设为true,以请求相应的访问权限。 申请无障碍服务权限
  只有当系统绑定到我们定义的无障碍服务,我们的服务才能正常运行起来,为此,我们需要跳转到系统的无障碍设置界面,开启我们安装的无障碍服务,代码如下:  startActivity(Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS))
  以华为P30 pro为例,以上代码所跳转到的界面,对应的操作路径是「设置-辅助功能-无障碍」,随后,我们就可以从已安装的服务里找到我们自己的服务,然后点击开启按钮,我们的服务就会运行起来。
  设置-辅助功能-无障碍.png  重载无障碍服务方法
  除了常规的Service类方法外,无障碍服务还额外提供了2个必须重载的方法,分别是:  onAccessibilityEvent() :当系统检测到与我们前面的配置选项相匹配的事件时,就会回调此方法,事件将以AccessibilityEvent 类对象的形式提供。随后我们就可以解析该对象,并执行相应的处理。这个方法可能会在服务的整个生命周期内被调用多次。 onInterrupt() :当系统要中断我们的服务正在提供的反馈时(通常是在控件焦点转移时),就会回调此方法。 获取事件详细信息
  开头我们就讲了,「李跳跳」跳过开屏广告实际上就2步实现:  检测「跳过」按钮的位置  自动完成「点击」的动作
  关于步骤1,我们要做的事情就是,在接收到无障碍事件后,使用 getSource() 从事件中检索出AccessibilityNodeInfo 对象, 通过AccessibilityNodeInfo 对象,我们可以浏览当前界面的视图层级结构,找到包含"跳过"字样文本的事件来源节点。
  至于步骤2就很简单了,直接调用 performAction(ACTION_CLICK) 为用户执行点击操作即可。
  完整代码如下:  class MyAccessibilityService : AccessibilityService() {      override fun onAccessibilityEvent(event: AccessibilityEvent) {         val source = event.source ?: return         for (i in 0 until source.childCount) {             if (source.getChild(i)?.text?.contains("跳过") == true) {                 source.getChild(i).performAction(ACTION_CLICK)             }         }         source.recycle()     }      override fun onInterrupt() {     } } 效果演示
  可以看到,对比前一个未启用 跳过开屏广告 功能的网易云版本,后一个版本会在开屏广告显示的瞬间,就帮我们自动点击了跳过 按钮,以达到跳过开屏广告的效果。 还想说点什么
  好了,到这里我们就完成了一个"简易版"的 李跳跳 了,之所以说是"简易版",是因为现在的李跳跳 早已不限于跳过广告 这一主要功能了,但大体上还是基于无障碍 功能进行扩展的。
  这也让我不得不慨叹,能力是有限的,但创意可以是无限的。Android开发团队或许也从未想到,无障碍功能居然还可以用来做这么多事情。实践之后,我也不得不对 李跳跳 开发者的创意拍手叫绝。
  但另一方面,我也衍生出一种担忧,至于原因,显而易见, 无障碍功能在解锁了相应的权限之后,其所能掌握的对于手机的控制权是相当可怕的 。
  能读取屏幕内容,就可能窃取隐私;能操控用户行为,就可能违法犯罪。何况服务本身的特点就是在后台长时间运作,而不需要提供界面的。如果还允许这类应用在后台持续保活的话,真不敢想象它会在你意想不到的时候做出什么出格的事情。
  当然我相信「李跳跳」的开发者的初心是纯粹的,毕竟多省下几秒看无聊广告的时间,就多几秒可以去做更有意义的事情,我只是表达对这种过度权力本身的担忧,毕竟就像罗翔老师说的:
  同作为开发者,我佩服「李跳跳」的创意,但我敬畏这种权力。  ❝
  少侠,请留步!若本文对你有所帮助或启发,还请:
  点赞,让更多的人能看到!
  收藏⭐️,好文值得反复品味!
  关注➕,不错过每一次更文!
  ===> 公众号:「星际码仔」
  你的支持是我继续创作的动力,感谢!

山东省民富水平10强城市青岛领先济南,烟台不敌威海,枣庄第9民富水平,才是国民经济发展的目标。发展最后能够让百姓生活富裕起来,那才是成功。只有让百姓的钱袋鼓起来,一个地区的民富水平才能提高。如果去衡量民富水平,这个其实不好去用数据去评估。但孕妈妈阳了怎么用药?专家支招来源人民网原创稿奥密克戎病毒致病力下降,但传播速度快传染性强。当前,各地仍有散发疫情,孕妇作为特殊群体,如果阳了是否需要服药?如果用药,药品该如何选择?对于合并基础疾病的孕妇用药有一个好爸爸,抵过所有伟大的教育,当爹的都好好看看心理学家格尔迪曾经说过这样一句话父亲的出现是一种独特的存在,对培养孩子有一种特别的力量。父亲的陪伴,是孩子童年幸福的源头,任何物质都撼动不了父亲在孩子心中的地位。从父亲的身上,孩子华夏幸福老王,以股抵债400亿记者丨李惠琳编辑丨谭璐化债路上,华夏幸福老板王文学,又拿出新筹码。本周,华夏幸福公布以股抵债的具体方案搭建幸福精选幸福优选两个平台,以其中49股权实施债务重组,预计换取债权400。好的养育,是培养孩子的幸福力来源新华社最好的教育,是学会爱。有个问题,问什么是父母对孩子好的教育?高赞回答是当我变得和你的期待不一样时,请爱我原来的样子,疼我原来的样子,赞美我原来的样子。现实中,多数父母总想湖人总经理与公牛总经理商谈交易佩林卡(湖人总经理)下了飞机,打个车,直奔艾弗里斯(公牛总经理)办公室。邦邦邦,三声敲门后,里面没有说话,突然门开了,迈尔斯(勇士总经理)从艾弗里斯走了出来,诡异看了一眼佩林卡,对钱放在微信钱包里安全,还是绑定的银行卡?现如今,移动支付手段越来越发达,大家在外购物只需一个手机就可以轻松搞定。手机支付方便快捷,直接改变了传统的交易方式,其中微信支付成了当前社会的常见方式。目前,很多朋友为了方便,习惯聊聊今天的银行理财和昨天的余额宝曾几何时,银行靠每年的利息差就赚的盆满钵满,当时能到银行去上班,那简直就是过上了人上人的生活,算是提前迈入了小康。我记得邻居家一小孩,家里通过关系直接上中专,进入银行学校了,把院子国际资本看好埃塞!欧洲投资银行盛赞埃塞和谈创造更好的投资环境欧洲投资银行(EIB)驻埃塞俄比亚首席代表EleniKyrou2022年12月15日,欧洲投资银行(EIB)驻埃塞俄比亚首席代表EleniKyrou接受埃通社专访时表示,埃塞俄比亚银行7000多只理财产品破净,最大亏损93,要不要赎回?7000多只理财产品破净传统意义上,特别是对于50后60后等父辈,银行理财产品都是保本和稳健的象征,一般只需考虑收益率,不会考虑有亏钱的一天。但历史的规律就是用来打破的,2022年潍坊银行寿光支行,深陷数亿债务纠纷!日前,潍坊银行正沉浸在赴港上市的喜讯,然而,潍坊银行寿光支行却迎来诉讼高峰期,深陷巨额债务纠纷!天眼查显示,潍坊银行寿光支行11月份以来,涉及金融借款合同纠纷执行案件15起。往远些
杀死伊芙女主吴珊卓现身英女王葬礼,网友朱迪科默在哪?雅虎9月19日报道,加拿大韩裔女演员吴珊卓(SandraOh)一身黑色着装参加了英国女王伊丽莎白二世的盛大国葬礼。女王的国葬礼于9月19日在伦敦威斯敏斯特教堂(Westminste更加冷艳的春丽街头霸王6将在10月进行封闭测试Capcom刚刚宣布了街头霸王6(StreetFighter6)即将进行的封闭测试的日期,在10月份。今天早些时候,Capcom的东京游戏展直播活动展示了这些日期,其中还包括游戏部吕丽萍悼念安倍晋三,罗家英悼念英国女王,老戏骨的三观去哪了?近日,老戏骨罗家英通过微博公开向大家道歉,很是诚恳地在镜头面前鞠躬说了一声对不起,就前阵子去英国驻香港领事馆参加英国女王悼念活动,发表了未经深思熟虑的哀悼之词,对自己错误的言行感到给钱给货给订单,宁王的朋友圈扎堆上市9月19日,科创板上市公司湖北万润新能源科技股份有限公司(下称万润新能,688275。SH)开启申购,发行价格299。88元股,被称为年内最贵新股。1月7日,万润新能向上交所提交招小超梦铁男对线武器,1v4换掉一人结果闪现撞墙,秒变小丑小超梦作为一名重装战士的爱好者,以腕豪诺手剑魔这三板斧被大家所熟知,作为一个峡谷之巅第一上单,许多人都希望能够在小超梦的直播间学习到一些关于对线的技术,为此小超梦也会为大家带来不同因嫖娼被抓的5位明星,李易峰毫不在乎,李云迪曲线复出继续捞金李易峰嫖娼被抓已经是闹得沸沸扬扬,虽然目前事情已经告一段落,但流言在圈内大范围扩散仿佛空闲娱乐圈上空的一片阴影。早前李易峰翻车,假冒的湾湾曝光了一大批明星的名单,让娱乐圈一下动荡不明星庆生内卷!关晓彤杨幂穿高定庆生,baby定制精灵风出圈成模板内娱除了不怎么卷演技卷作品,其他都很卷,比如红毯上的造型内卷,代言内卷,最近扒婆发现明星们庆祝生日也很卷,庆生的形式与造型都在卷,这一期我们来看看女明星的庆生内卷。杨幂关晓彤庆生穿黑鲨手机外观专利曝光,不规则后摄模组,辨识度提升搭载骁龙8处理器的黑鲨手机至今还没发布,不过近日,黑鲨一份新的手机外观专利图在国家知识产局网站公布。该项手机外观专利于南昌黑鲨科技有限公司于2021年12月30日申请,在2022年华为Mate50评测除了北斗卫星通讯,影像也有惊喜视频加载中记者王公逸时隔两年,华为Mate50系列再度归来。在实际体验了两周后,今天就聊聊Mate50的真实使用感受。作为发布前就热度颇高的功能,Mate50配备了北斗卫星技术这也荣耀智能手表荣耀手表2荣耀也是一个手机品牌的老品牌商了,那么,它的智能手表如何呢?我们聊一聊吧。荣耀手表246mm售价方面,碳石黑配色为899元。亚麻棕送表带为999元。这款智能手表搭载的是麒麟A1芯片看全面超越OLED的U8H如何诠释ULED的十年演变?欢迎来到帅评科技的频道,聊聊看全面超越OLED的U8H如何诠释ULED的十年演变?今天为大家点一首比较好听的歌孤勇者!若从宏大的背景来看,十年只是沧海一粟在我们地球漫长的时间线上那