收藏 分销(赏)

基于Android平台的新媒体自动化交互工具开发_邵小巍.pdf

上传人:自信****多点 文档编号:292464 上传时间:2023-07-10 格式:PDF 页数:4 大小:2.05MB
下载 相关 举报
基于Android平台的新媒体自动化交互工具开发_邵小巍.pdf_第1页
第1页 / 共4页
基于Android平台的新媒体自动化交互工具开发_邵小巍.pdf_第2页
第2页 / 共4页
基于Android平台的新媒体自动化交互工具开发_邵小巍.pdf_第3页
第3页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、2023.6电脑编程技巧与维护Device Monitor工具抓屏是否为控件型YNNOpenCV智能识别算法控件属性是否受限发送消息操控手势模拟操控线程回调更新UIY1概述近年来,新媒体技术在各级地方主流媒体中有了突飞猛进的发展,人们对信息的了解已不局限于读书、看报、看电视、听广播这样传统的获取方式。智能手机的普及和融媒体的快速发展,使掌上媒介成为了大众获取信息的主渠道,而在这些庞大的智能手机终端中,各式各样的Android应用层出不穷,在具体应用操作这些软件方面,用手触的方式在一些重复工作中显得乏陈无味,需要附加开发一些其他的外挂功能,例如,从一些App中获取感兴趣的数据,或者操作控制这些A

2、pp完成类似自动化的功能等。2用户信息向目标软件的输入用户信息向目标软件的输入,如图1所示。使用以Android为平台的智能掌端设备时,为了让自已的应用程序与其他已安装的App进程进行交互并智能操作、自动控制,比较简单的方法是手机端连接个人计算机(PC)端,在PC端进行命令行脚本编程,许多自动化测试流程也是运用这样的方式通过安卓调试桥接工具进行联机或模拟测试,也有直接通过自已的掌端应用写入这些安卓调试桥(ADB)命令行,通过调试桥接命令行单击特定坐标位置或模拟操作某些特定键。实际上,这些命令在具体解析执行时相对来讲会略显滞后、进度缓慢,并且出于安全考量,这样的操作需要调试及使用的真机事先取得根

3、权限(root)授权支持,root后的真机通常还承载着人们日常社交与网购的任务,账号和密码安全必须重视,在root状态下可能会为日后的操作使用留下后门安全隐患。因此,探索一种新途径以便在非root的状态下,开发运行一个类似的外挂程序完成所需的各项特殊功能尤为重要。在这里,Android的无障碍服务为实现此功能打开了一扇方便之门,利用该项技术即可完成与手机应用的一般性交互,其原本是为了残障人士而预留的接口,让他们也能像正常人一样方便地使用手机,用一些简单的方法完成一系列动作。具体来讲,可以利用这个无障碍服务提供的抽象基类,派生一个具体实现类,并且重写其中的一系列触法型方法事件对目标软件进行监测和

4、交互,在锁定具体监测范围时,需要在XML文件夹下建立的无障碍参数配置文件中加入需要模拟控制的目标软件包名,明确只对感兴趣的目标软件进行监视,并且需要在项目清单文件中添加无障碍服务许可。可以在无障碍基类服务(Accessibili-tyService)子类的构造函数中通过窗体管理类(Win-dowManager)添加一个系统提示类型的置顶视图,作为一个简易的操控台,添加用来控制的命令按钮,让其置顶运行在其他App之上,在监测执行的单击事件中启动一个一次性或循环的线程监测目标App的视图内容变化,并将探测后操作的结果显示在屏幕新建的置顶视作者简介:邵小巍(1982),男,工程师,研究方向为广播电视

5、工程及新媒体。基于 Android 平台的新媒体自动化交互工具开发邵小巍(秦安县文体广电和旅游局王墩转播台,甘肃 天水741600)摘要:智能手机的普及,无线网络在城乡各角落的全域覆盖,为便捷地了解这个世界提供了更多的可能。在信息时代,大家对于智能机的操控可谓是轻车熟路。许多时候,循规蹈矩的刻板操作已经很难满足人们与 Android 应用交互的特殊需求,探索一种实用的依附于 Android 应用之上的外挂式交互工具,使用编程的方式实现一系列自动化操控代替手工或手工不能完成的操作是一件实用且有趣的事。关键词:Android 系统;应用交互;外挂图1用户对目标应用输入流程73DOI:10.1618

6、4/prg.2023.06.0152023.6电脑编程技巧与维护图显示组件之上。但这样有一个问题,就是在这个新开设的线程中不能对自已的工具界面视图的文字属性或者按钮的激活状态等做出修改,因为对用户界面(UI)的操作受到单线程保护,所以这个UI型的视图级操作只被允许在随应用启动的主线程中进行更改,对按钮组件的标题等赋值都是无效的。为了完成更新视图等操作需要构建一个线程间调用异步执行的机制异步消息处理器(Handler)来完成,用消息处理的方式完成这些更新操作,在需要执行这样一些功能时,只需要发送一个特定的自定义消息,在消息到达Handler时,通过其消息处理的方法判断消息类型,一旦满足条件,则开

7、辟一个新线程,做出更进一步的UI更新处理,也可以用UI线程执行方法(runOnUiThread)的显式调用方式让新定义的线程在主线程(UI可操作)中运行更新操作,这种原理底层的实现究其根本仍然是前述的Handler机制。关于如何分析获得目标应用软件的组件视图并加以操作控制,可以使用类似获取激活窗口root的方法取得目标App视图的根节点,进而通过以文本包含查找结点方法(findAccessibilityNodeInfosByText)查找文字部分或全部匹配或者以ID查找节点方法(findAccessibilityNodeIn-fosByViewId)查 找匹配目标控 件 的 资 源 标 识 符

8、(re-source-id)。由于同名,如果这两种方式取得的控件仍然比较多且难以区分,则需要在ByText查找标题方式得到一系列满足条件的组件之后,用循环枚举时加计数值的形式进行区别筛查。为了便于观察,可以在每次枚举计数后加入Log语句,通过输出台记录输出每个获取到的组件的左上角顶点坐标及长度、宽度值,再与窗体控件层级查看(monitor)工具中查找到的组件位置参数进行对比以确定第几个计数值的组件是想要获取的目标(在每次目标软件打开时,这些枚举组件的计数值是不会改变的,因此可取得目标组件)。关于这些控件ID及文字属性的获取,可以启动安卓SDK相应版本开发包中工具文件夹下的monitor.bat

9、工具来获得。对于一些活动的视图可能使用普通的捕获方式无效,例如,在做一个微信视频自动接听辅助工具时,接听控件是获取不到的,此时需要使用adb命令行执行UI自动抓取(uiau-tomator dump)和截图(screencap)命令获得相应的.uix和.png文件,可以建立一个批处理文件用来完成这些操作,再从monitor工具中打开.uix文件,并指定附加相应的.png截图就可以查看到视图中各控件的布局及属性。在批处理.bat文件中可以用类例下列语句对界面UI树进行获取,如图2所示。对于这些控件的模拟操作命令,可以用消息执行动作(performAction)发送单击操作,当然这只是对于目标控件

10、clickable属性为真时才行得通,在计算机监视工具中执行手机抓屏后查看这些应用组件,单击属性的布尔值在此工具中可查看到。对于一些控件来讲,开发者并不想让其响应模拟单击,例如,许多应用的点赞控件,想用简单的performAction发送单击是不会有任何反应的,为了解决这个问题,在高一点的版本中,An-droid为开发者留了一个方便之门,那就是用手势模拟的方式解决,这种手势模拟的参数并不依赖于需要已知控件才能调用,它只需要相应的坐标即可。当起点和终点相同时,一个手势恰好可以看作是一次单击,使用手势的优点是可以触发那些没有clickable权限的东西,即使控件缺失可单击属性也不会影响人们消息模拟

11、调用的操作,手势只能在Android 7.0以上的版本才能获得支持使用,就目前的发展势态来说,大部分手机是完全能够达到此项限制基准线的。在实际的操作中,使用monitor工具查看组件属性时,会发现往往既无resourceid,也无text值,控件对象无法取得,要想获得这个控件的区域坐标可谓困难重重,要做到这点只能使用图形智能识别技术,获取图像中不可获取的控件或单击区域。使用这种方法获取这些控件的外接矩形(boundsRect)区域,进而在区域内执行手势操作。而在早期的Android版本中,就连屏幕截图这样的操作都是不被允许的,识别分析控件更谈何容易,然而在后来的Android版本中放开了这种操

12、作,因此在截图后使用图形智能识别技术分析即可以获得区域坐标。使用代码实现屏幕的动态截图,这需要较高级的版本支持,Android 5.0及以上即可,用媒体投射管理类创建一个屏幕捕获授权的动作类(intent),这需要用户手动允许确认,因此在启动加载这个intent时要用返回结果的形式启动,在用户授权之后来到结果返回事件(onActivityResult)中通过第一个参数是否为媒体投射许可(REQUEST_MEDIA_PROJECTION)判断授权是否被允许以继续执行屏幕截图操作。通过媒体投射管理类中的方法获取媒体投射,在这个投射上创建虚拟显示,并把截图数据写入图像读取类的Surface以供其使用

13、。接下来,由于要检测识别处理截图数据有耗时需求,所图2命令行获取UI层次742023.6电脑编程技巧与维护以仍然需要在新线程中执行,考虑到UI界面更新,作为handler机 制 实 现 的 替 代 方 案,可 以 以 异 步 任 务(AsyncTask)类实现这些异步处理与更新,在继承自该类的后台处理方法中处理传入的图像。为了实现图标智能检测和识别,如果不使用现有三方库接口的话,那将是一项庞大的工作。为了简化此项工作,项目需要用到第三方OpenCV库(一个开源的第三方图像处理开发包),该库有多个不同平台的支持包,可以方便、快捷地进行图像分析,可以将图像转换为位图后再使用库函数换化成矩阵(Mat

14、)对象,最后调用库中常用的图形处理函数,依次进行图片灰度的去色转化、边缘像素检测、轮廓特征匹配查找,进而可以获取到控件或操作区域的外部矩形框,需要用手势操控的坐标值范围由此可以准确获得。这项技术拥有广泛的适用性,无论是一个组件、一个小图标或是图形区域,都可以完美获取。具体过程涉及已有的待检图标在目标截屏图像中的查找与相似匹配问题。首先需要将待检图标与目标截屏图像进行灰度(gray)去色转化,成为灰度图像后存入矩阵Mat中,然后使用算法如常用的尺度不变特征转换(SIFT)方法运用关键特征角点核查筛选,将两个图像的关键点都存入关键点矩阵中,通过关键点矩阵可以用SIFT的计算函数算出它们的描述矩阵,

15、有了描述矩阵就可以选用一种匹配算法进行两幅图的匹配检索。例如,邻近查找算法(FLANN)搜索方法就可以完成这种检索任务,新构建一个描述匹配器,传入两幅图的描述矩阵作为参数,调用匹配方法即可获得它们的匹配点矩阵对象,通过计算这些关键点距离的最大、最小值得到一些相配程度较高的点,最后经过查找单应性方法获取到单应性的矩阵(matrix)对象,再经过透视转化从而得到所查目标在截图视图中的外部矩形轮廓数据。3目标软件向用户的输出前述方法着重详解了从用户到目标应用的输入操控,对于任意屏幕组件有了完整的解决方案。在实际生活应用中,只有这些输入型操控方法是不够的,对于一个第三方应用显示数据输出的获取,同样有着

16、很大的需求,通过手工复制其中内容的方式在很多应用中是无济于事的,即便是用上了代码编程加以辅助实现,要想通过查找这些控件并调用控件的文本属性获取显示数据,仍然不可行,其中一些应用尤其是小程序这样的视图,它们都是利用类似于像浏览器(WebView)这样的组件制作派生而来的,其中的数据并不能靠简单调用属性值获得。回到最初的方式,寻求一种具有普适性的操作,对于屏幕中任意区域数据的获取,可以借用光学字符识别(OCR)技术加以调用实现,使用第三方现有的OCR库,提取手机屏幕上的任意数据,成为一种可能的实现方式。可以用现成的百度提供的识别接口,对于访问量不大的个人调用,它是免费且性价比极高的。登录到百度的开

17、放平台,切换至应用列表项,创建新应用时的应用名称可以随意填入,接口选择中系统已默认选择好文字识别,对于以HTTP方式调用的开发包需要选择An-droid平台,包名要与自身应用的APK包名一致,APK的信息摘要算法(MD5)签名信息也必须一并填写提交,在应用代码编写平台中,可以在导出签名的APK后从src目录下获取签名的.jks文件,使用keytool工具命令可以在命令行窗口中提取.jks文件密钥库中的签名指纹信息,即OCR调用包申请处要填写的MD5签名信息,填入自身应用同包名信息申请应用的ID和key。安全起见,接口密钥和密码密钥都不应在具体调用中显式地授权,需要在详情页下载许可(Licens

18、e)文件在应用中进行集成加载调用,这样不会造成因其他反编译而泄漏其中的密钥。根据签名的指纹信息提交以后下载并解压识别系统生成的应用开发支持包,为了能够在自身项目中使用,还需要将此开发包集成到自身项目应用之下,解压此开发包会有识别系统自定义的相机用户界面视图,也有测试的代码,libs文件夹下会有4个Android平台的.aar(Android平台打包格式)压缩文件,其中ocrsdk.aar是自身应用程序工程中需要着重引用到的压缩开发包,与.jar打包单一类文件相似,此.aar压缩包也涵盖了一些必须用到的so文件,在应用中可以直接调用,还有几个.aar是OCR封装的自定义用户视图界面可以直接在项目

19、中使用,直接复制这几个.aar文件至自身的工程项目中,然后在项目构建工具(gradle)配置文件中加入引用依赖即可直接调用了。当然也可以在自已应用下建立本地接口库(jniLibs)的动态库调用文件夹并复制到百度的相应库文件,同时将.jar包加入应用的libs文件夹下,在原始目录(assets)中也需要加入之前的调用许可文件。在项目中集成添加操作完成之后,将工程与gradle文件同步,可以试着在工程中写入代码OCR,如果后边有包名的代码联想提示,表明引用依赖的开发支持包已经能够被识别调用,再经过代码完成识别包调用的原始初始化操作,使用OCR实例以百度授予的License为参数进行初始化访问令牌操

20、作,之后就可以调用识别库方法识别函数(recognizeaccu-(下转第88页)752023.6电脑编程技巧与维护ratebasic)进行识别,这里识别的返回值可以提取成数据封装格式(JSON)的数据,也可以以单词列表的形式一行行枚举由程序得到,解析JSON数据可以运用其官方库或第三方开源库进行循环遍历。4应用示例在此所述的这种交互式编程技术,可以在绝大部分需要人工机械性参与的Android端人机交互环境中应用。其更多的是用在县级新媒体App的一些功能性辅助测试中,用批量的模拟浏览、转发、留言、点赞等操作来测试应用的健壮性,也可制作一些小工具,例如,微信视频通话的自动接听(让手机成为监控)、

21、手机隔时自动拍照、网络视频自动播放的后台守护服务程序等,当然这类应用前端仅仅是几个按钮,更多的功能是一些算法和驻留后台的操作。下面是实际开发一个媒体App交互工具重要环节的截图,如图3图5所示。5结语智能掌端设备的兴起,颠覆了人们以往Windows平台下的传统认知,Android的用户体量是巨大的,并且一直以来呈现快速发展的势头,相比于Windows终端,它虽起步较晚,但技术革新发展较快,可以用相关技术让这些掌端设备提供一些有趣的操作,但要与Android系统这趟时代快车接轨并保持比肩而行,还需要在相关技术的引领下不断思考、探索和学习。图3monitor工具获取控件属性图4图标匹配成功(SIF

22、T算法特征匹配绘制方法)图5边缘检测_模板匹配(点赞图标的绘制)得越来越好,预测精确率越来越高。通过研究能够揭示学生学习成绩背后的规律和模式,为学生的学习提供更好的支持和指导,同时提高教师的教学效率和学校的管理决策水平,从而推动教育事业的发展和进步。参考文献1吴兴惠,周玉萍,邢海花.利用随机森林算法对学生成绩评价与预测研究J.电脑知识与技术,2020,16(4):254-255.2宋园,朱丽琴,程泽凯.基于随机森林的学生成绩评价研究J.齐齐哈尔大学学报(自然科学版),2017,33(6):1-5.3杨小娟.决策树算法在学生课程成绩分析中的应用研究D.昆明:云南师范大学,2021.4刘亚琴,刘瑞卿,颜中玉.基于粗糙集和随机森林算法的数学师范生就业预测研究J/OL.湖南师范大学自然科学学报,2023(1):136-142.5沈金榕.基于决策树的逐步回归算法及在股票预测上的应用D.广州:广东工业大学,2017.6王潇瑾.基于决策树的智能交通信号系统攻击预测及分析D.北京:北京交通大学,2021.7沈林豪,唐海,许睿.基于教育数据挖掘的学业表现影响因素研究J.佳木斯大学学报(自然科学版),2022,40(6):139-144.8杨志禹,吴士雨,王增琦,等.近十年国内教育数据挖掘领域的应用技术分析J.中国教育信息化,2022,28(4):62-69.(上接第75页)88

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服