如何使用Android中的辅助功能聆听点击并获取视图?

如何使用Android中的辅助功能聆听点击并获取视图?,第1张

概述我想在我的 Android应用程序中实现一个 Accessibility service,可以做以下事情: =>获取任何应用程式上的萤幕轻击/点击. =>获取被点击/点击的视图. 最初我认为这是不可能的,因为安全的原因,但在做一些研究,我碰到一个应用程序(Native clipboard),可以做以下事情: =>检测来自任何应用程序的EditTexts上的水龙头 =>将值(字符串)添加到这些Edi 我想在我的 Android应用程序中实现一个 Accessibility service,可以做以下事情:

=>获取任何应用程式上的萤幕轻击/点击.@H_404_3@

=>获取被点击/点击的视图.@H_404_3@

最初我认为这是不可能的,因为安全的原因,但在做一些研究,我碰到一个应用程序(Native clipboard),可以做以下事情:@H_404_3@

=>检测来自任何应用程序的EditTexts上的水龙头@H_404_3@

=>将值(字符串)添加到这些EditTexts.@H_404_3@

我也看到了Google’s talkback,无论你点击什么.为了说话,它需要访问应用程序的视图(获取文本).@H_404_3@

这些应用程序显然利用“辅助服务”来实现,但是我想知道如何实现?@H_404_3@

我主要找到我需要实现的教程或东西,但我正在努力寻找一些为我的应用程序实现辅助功能服务.我没有访问AndroID官方文档,这对于像我这样的新手来说太技术了. (我最初喜欢从Youtube,SO和教程网站学习).如果您可以指出我参考其他涵盖这些内容的教程,这也是很棒的.@H_404_3@解决方法 可访问性服务文档很少,但是我已经创建了一些可访问性服务样板代码,它们设置了一个启动项目并记录基本回调.稍后我会添加链接,但是这里有一些代码,我认为你关心给定你的具体问题.脚手架,项目设置等我离开了回购.

下面是onAccessibilityEvent回调.这是您将聆听不同类型的活动的地方,也是大多数情况下抓取屏幕内容的最方便的地方.虽然,作为无障碍服务,您也不必等待事件.您可以轻松地产生一个AsynTask,并以某种间隔抓住它.@H_404_3@

public voID onAccessibilityEvent(AccessibilityEvent event) {    CLog.d(event.toString());    switch (event.getEventType()) {        //On Gesture events print out the entire vIEw heirarchy!        case AccessibilityEvent.TYPE_GESTURE_DETECTION_START:CLog.d(A11yNodeInfo.wrap(getRootInActiveWindow()).toVIEwHeirarchy());        case AccessibilityEvent.TYPE_VIEW_CliCKED:            CLog.d(event.getSource().toString());        default: {            //The event has different types,for you,you want to look for "action clicked"            if (event.getSource() != null) {                CLog.d(A11yNodeInfo.wrap(event.getSource()).toVIEwHeirarchy());            }        }    }}

我会指出一点配置,因为它是非常重要的.辅助功能服务通过通过清单文件连接到您的服务的XML文件进行配置.该文件的内容是:@H_404_3@

<?xml version="1.0" enCoding="utf-8"?><accessibility-service xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:description="@string/accessibility_service_description"androID:accessibilityEventTypes="typeAllMask"androID:accessibilityFlags="flagReportVIEwIDs"androID:canRetrIEveWindowContent="true"androID:canRequesttouchExplorationMode="true"androID:accessibilityFeedbackType="FeedbackSpoken"androID:notificationTimeout="100"androID:settingsActivity="com.moba11y.basicaccessibilityservice.SettingsActivity"/>

对于你,重要的位是canRetrIEveWindowContent =“true”和“accessibilityEventTypes =”typeAllMask“’.我喜欢的设计是确保您抓住所需的最小事件类型.不同的可访问性事件报告大致不同的结果.例如,许多事件从getSource()返回“null”.这迫使您为此添加了大量过滤器,或冒险空指针异常.这很讨厌@H_404_3@

您需要的最后一点是辅助功能 *** 作.这可以让您模拟点击次数,长时间的点击次数,并将文本添加到可编辑的文本视图中.以下是允许您执行此 *** 作的代码.@H_404_3@

public voID onAccessibilityEvent(AccessibilityEvent event) {    AccessibilityNodeInfo source = event.getSource();    if (source != null & event.getClassname().equals("androID.Widget.EditText")) {        Bundle arguments = new Bundle();        arguments.putCharSequence(AccessibilityNodeInfo                .ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,"some value");        source.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT,arguments);    }}

https://github.com/chriscm2006/Android-Accessibility-Service-Boilerplate@H_404_3@ 总结

以上是内存溢出为你收集整理的如何使用Android中的辅助功能聆听点击并获取视图?全部内容,希望文章能够帮你解决如何使用Android中的辅助功能聆听点击并获取视图?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1132171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存