当前位置: 首页 > news >正文

Android 你遇到的无障碍onGesture不执行

你是不是和我一样,在开发无障碍应用的时候,翻边了Android的AccessibilityService源码
但是就是发现不了onGesture不执行的原因?

你是不是和我一样,在好多测试手机之间徘徊,发现还是不执行?

你是不是和我一样开始怀疑自己当前Android api版本?

你是不是翻阅Android官方文档好几遍?

你是不是百度了好久都没找到合适的答案?

如果以上你都遇到了,就证明你的语文阅读能力不达标。请你仔细阅读android的官方文档。
 

监听手势
无障碍服务可以监听特定手势,并通过代表用户执行操作进行响应。此功能是在 Android 4.1(API 级别 16)中添加的,它要求无障碍服务请求激活“触摸浏览”功能。服务请求激活该功能的方法是将其 AccessibilityServiceInfo 实例的 flags 成员设为 FLAG_REQUEST_TOUCH_EXPLORATION_MODE,如以下示例所示。
public class MyAccessibilityService extends AccessibilityService {
@Override
public void onCreate() {
getServiceInfo().flags = AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE;
}
…
}
服务请求激活“触摸浏览”之后,用户必须允许开启该功能(如果尚未激活)。激活此功能后,服务可通过其 onGesture() 回调方法接收无障碍手势的通知,并且可以通过为用户执行操作进行响应。
————————————————from("世纪")原文链接:https://blog.csdn.net/qq_39469700/article/details/123831250

仔细阅读“触摸浏览”是什么。我最开始就有这个疑问,因为没有接触过所以一直碰壁。

触摸浏览我个人认为就是:

类似于talkback读屏下选中屏幕控件焦点的一种无障碍浏览方式,它支持滑动选中,双击执行,
三指滑动屏幕。

所以说我们需要把“触摸浏览”的相关配置,配置ok就OK了。点击flags的成员配置静态变量,官方文档会看到如下:
 

标记_请求_触摸_探索_模式在API 级别 16中添加
public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE此标志请求系统进入触摸探索模式。
在这种模式下,在屏幕上移动的单个手指就像鼠标指针悬停在用户界面上一样。系统还将检测在触摸屏上执行的某些手势并通知此服务。如果至少有一个无障碍服务设置了此标志,系统将启用触摸探索模式。因此,清除此标志并不能保证设备不会处于触摸探索模式,因为可能有另一个启用的服务请求它。
对于面向 Android 4.3(API 级别 18)或更高版本的无障碍服务,
想要设置此标志,必须通过将属性设置 canRequestTouchExplorationMode为 true 在其元数据中声明此功能
否则,该标志将被忽略。
针对 Android 4.2.2(API 级别 17)或更低版本的服务将正常运行。换句话说,第一次运行时,如果指定了此标志,则会向用户显示一个对话框,以确认启用触摸浏览。

仔细查看我加黑的地方,在我百度了好久之后,发现好多小伙伴和我一样,一直执着为什么不执行。但就是不仔细查看官方文档。并且有些结果很鸡肋也很没用。
 

<?xml version="1.0" encoding="utf-8"?>
<accessibility-servicexmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:description="@string/accessibility_desc"android:accessibilityEventTypes="typeAllMask"android:accessibilityFeedbackType="feedbackGeneric"android:accessibilityFlags="flagReportViewIds|flagIncludeNotImportantViews|flagRequestTouchExplorationMode|flagRequestFingerprintGestures"android:canRetrieveWindowContent="true"android:canRequestFilterKeyEvents="true"android:canPerformGestures="true"android:notificationTimeout="0"android:canRequestFingerprintGestures="true"tools:targetApi="o"/>
并且您的配置文件也要添加其他的type这里我就不多说了 ,官方文档很清晰。需要什么添加什么。


最后就完美的解决了 ,您的手势就可以识别到了,并且是全局的,这时你会发现手机卡了,这里说明一下是因为这个手势监听,本就是为了有障人群浏览屏幕信息和一些快捷操作而定的。并不是让你搞黑产弄的,如过想不卡可以去了解一下

 

如果想做成全局的,你可以做成x什么pode的面具插件。

最后我在说一句,别人写的你用到就看看,心情好就给个赞,好多乐色抄袭别人的博客,导致现在优质博客全部需要金额,而且你抄袭就抄袭,你的markdown语法能不能也抄上,你的一篇文章都是代码,而且是左对齐,你很牛你知道吗!

http://www.lryc.cn/news/324966.html

相关文章:

  • Java学习10
  • 第二十章 TypeScript(webpack构建ts+vue3项目)
  • 白酒:陈酿过程中的老熟度评价与品质提升方法
  • BoostSeacher
  • 我的算法刷题笔记(3.18-3.22)
  • 初探Ruby编程语言
  • 深圳MES系统如何提高生产效率
  • QT常见Layout布局器使用
  • Elasticsearch8 - Docker安装Elasticsearch8.12.2
  • 还在为不知道怎么学习网络安全而烦恼吗?这篇文带你从入门级开始学习网络安全—认识网络安全
  • DFS基础——迷宫
  • iOS开发进阶(九):OC混合开发嵌套H5应用并互相通信
  • 新人应该从哪几个方面掌握大数据测试?
  • linux debian运行pip报错ssl tsl module in Python is not available
  • 宝塔设置限制ip后,ip改了之后 ,登陆不上了
  • 解锁新功能,Dynadot现支持BITPAY平台虚拟货币
  • Android下的Touch事件分发详解
  • uniapp的配置文件、入口文件、主组件、页面管理部分
  • B端设计:如何让UI组件库成为助力,而不是阻力。
  • 敏捷开发最佳实践:学习与改进维度实践案例之会诊式培养敏捷教练
  • C#宿舍信息管理系统
  • 测试环境搭建整套大数据系统(十三:设置开机自启动)
  • 算法练习第三十二天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II
  • nodejs+vue反诈科普平台的设计与实现pythonflask-django-php
  • SpringBoot3+JPA+MySQL实现多数据源的读写分离(基于EntityManagerFactory)
  • 10万+SRC高质量稀有明星人脸素材唐嫣杨紫金晨倪妮蔡卓妍张雨绮合集
  • 目标检测中的mAP计算原理和源码实现
  • Unity 粒子在UI中使用时需要注意的地方
  • 了解Spring:Java开发的利器
  • 【Hive】with 语法 vs cache table 语法