教你用android玩冲顶大会——实现几个小时的财务自由

最近答题类app比较火,玩了几把之后想到为什么不用技术来查找答案呢?因此搞了一款辅助app,能够帮助大家直接搜索答案.经过两天的开发和三天的测试,终于让我的冲顶率达到了80%左右,先上几个不错的战绩装个逼.

一.用app去冲顶

这一节是教大家如何使用app的,如果对使用app不感兴趣,想了解技术的同学,可以直接去第二节,新建了一个辅助交流QQ群:314100393,大家有问题可以来这个群里问。

1.让app跑起来

  1. 安装app。点击下载app
  2. 进入手机的文件管理器,在本app的cache目录下面新建 tessdata目录 和 ShotImage目录。例如我的小米Mix2的目录是:Android/data/com.example.whensunet.chongdingdahui/cache
  3. 将chi_sim.traineddata文件放入上面新建的tessdata文件夹中,这个文件是ocr识别的语言库,没有的话就只能查找题干,不能查找选项点击下载语言库
  4. 在 设置—>无障碍/辅助功能—>WhenSunsetBaiWanYinXiongFuZhu中点击开启,开启app的服务。
  5. 下载夸克浏览器,这个浏览器比较轻便,能够减少查找答案的时间
  6. 打开app,同意所有权限要求,点击屏幕上的按钮,选择搜索引擎
  7. 此时只要点击本app冲顶大会的app的任意按钮,就会跳转到夸克浏览器按钮的内容或者题干+按钮内容进行搜索 ,点击屏幕最底端屏幕最底端上升500像素内的按钮会直接搜索题干。
  8. 如果无效请 进入设置中找到 app的权限界面,然后开启所有权限。
  9. 本app目前适配了mi5、mix2、谷歌nexus5和小米Max,适用于5.0以上的android系统,其他手机可能不能搜索按钮内容,但是题干一般情况下所有手机都能搜索。

2.举个例子

以冲顶大会app来举个例子

  1. 点击2区域中任意选项按钮,将会搜索题目+选项内容
  2. 注意需要让弹幕处于静止状态,要不然可能会搜索到错误答案。
  3. 如果要单独搜索题干,那么需要在3区域点击右下角的按钮,将3区域的输入框唤出并将其限制在3区域中,最后点击输入框,这样就能搜索题干了。

3.冲顶经验

经过3天的测试,我的冲顶率已经达到了80%左右,所以分享几个使用辅助的经验。

  1. 12道题目中一般会有10题是只需要搜索题干的
  2. 一般来说可以准备两只手机,一只运行速度快的手机进行答案的搜索,再搜索到答案之后先帮另一只手机选择答案,然后点击返回键回到本手机的冲顶大会选择答案。
  3. 比较难的场次会有1-2道需要查询选项的题目,此时需要两到三个人,每个人查一个选项,这样能够确保总结出最后的正确答案。
  4. 一般来说ios系统的直播速度比android系统慢2-3秒,可以利用好这个时间差,延长找答案的时间。建议第二只手机使用iphone或者ipad。
  5. 建议如果两个人搜索答案的话,可以一个人使用谷歌搜索,一个人使用百度搜索

二.app用到的技术解析

本节是对本app使用到的技术进行解析,没有兴趣的同学可以直接跳过.

1.需要实现的功能分析

  1. 监听冲顶大会app在前台的时候,我们点击按钮的事件
  2. 获取到被点击按钮的文字内容。
  3. 如果不能获取被点击按钮的文字内容,需要使用ocr技术,对图片进行文字解析
  4. 为了在3的情况下获取到图片,我们需要在运行后台service的时候对屏幕进行截图
  5. 获取到查找内容之后拼接搜索引擎的url,调起浏览器

2.确定了需求之后要使用的技术

1.使用android内置的无障碍服务可以实现监听冲顶大会app的各种事件。 2.我测试的时候发现,冲顶大会做了某些处理,使得不能通过无障碍来获取选项按钮的文字内容,只能获取该view的区域。此时我就想到额使用ocr技术,来识别该区域的文字。具体的库是tess-two,这是一个c++的库,需要开发者自己编译出so文件。然后调用java层的api,来实现ocr识别。 3.在运行在后台的情况下,对屏幕进行截图。这里5.0起的android系统提供了MediaProjection这个api,能够获取当前屏幕的帧。至于5.0以下需要root才能在后台进行屏幕截图,所以就放弃了。 4.可以通过Intent和浏览器包名,调起指定浏览器。这里我用了比较简洁快速的夸克浏览器

3.代码详解

因为某些原因,打算过一段时间之后再放出源码,所以这里就讲解一下,app整个运行流程.当然我放出的apk是debug版,大家如果会反编译的话,还是能看见源码的

  1. 首先是在MainActivity中初始化一些东西
    1. 初始化tess-two的库
    2. 向用户请求无障碍屏幕截图的权限
    3. 运行无障碍service
  2. 1结束之后,此时无障碍service已经运行起来了,当我们点击冲顶大会的一个按钮的时候
    1. 进入了onAccessibilityEvent()方法。

    onAccessibilityEvent

    1. 进入了按钮点击的事件
    2. 获取题干信息,这里我们需要注意到的问题是,冲顶大会的题干是不可点击的,所以在getQuestionRecursion方法中我会获取到,当前界面的Root View树的结构,然后递归寻找每个view中符合题干特征的文字.(这里需要大家对 view的绘制原理和view树的结构有一定的了解)

    getQuestionRecursion

    1. 方法传入的getRootInActiveWindow()是获取到当前屏幕上面window的view树结构
    2. 可以看见方法内部就是对view树进行递归查找

    1. 判断点击区域是否在只查询题干的区域,有了题干信息我们还需要判断,查的是题干还是选项。所以我规定了只要点击了屏幕上某个区域的按钮,那么就是要对题干进行查询。(细心的同学会发现,这个区域就是我前面提到的 屏幕底部 到 底部向上500像素的区域。)getIsSearchQuestion方法内部如图

    getIsSearchQuestion

    1. 内部的结构很简单,仅仅是比较当前点击的view的区域,是否在我规定的区域内部

    1. 如果3中返回的字符串不为空,就表示我们需要直接查询题干,此时直接调起夸克浏览器,否则就要识别点击的view区域的图像,来对选项进行查询,这里我们就只讲ocr识别的部分。useOcrToSearch方法内部如图

    useOcrToSearch

    1. 这里的代码也很简单,构造MediaProjection
    2. 通过MediaProjection获取一个VirtualDisplay并将ImageReaderSurface放入。
    3. 此时ImageReader中每时每刻都会暂存一张当前屏幕的图片。
    4. 接下来就是处理截图,然后进行ocr识别了,这里使用了AsyncTask在其他线程执行操作。
      1. 前面我们都知道了怎么获取view的区域—————一个Rect,使用这个我们就可以将点击的按钮的区域变成一个bitmap
      2. 有了view区域的图片,就可以直接调用tess-two的java api来进行ocr了。
      3. 最后我们终于获取到了选项的内容,此时就可以调起浏览器进行搜索了。速度挺快的,我的mi5识别起来在500毫秒内,网好的情况下从点击到显示查找界面不会超过1.5秒。

三.总结

  • 大家可能会问,为什么这个app不是百万英雄的辅助,其实有两个原因:
    • 百万英雄玩的人太多,每场能分的钱等级分化太严重。冲顶大会总的奖金少,但是奖金比较平均。
    • 其实上面一个原因是屁话,哈哈。最开始本app是针对百万英雄的辅助,但是头条毕竟是大厂,技术还是很好的。可能是为了防止作弊吧,西瓜视频的无障碍功能被禁止了 ,所以只能先用冲顶大会试试水。但是目前我已经找到了百万英雄的漏洞,或许下一次博客就是百万英雄的辅助介绍了,大家如果想知道的话,要多多关注我哈。
  • 在简书上写了一年多的博客,终于混了一个简书程序员优秀作者的称号,还是多靠了大家的捧场,接下还会发表更多关于android的高质量文章,如果大家觉得有帮助希望能多多点赞。
  • 最后,用了本app的同学,如果冲顶成功了,别忘了发红包哈,嘿嘿!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信小程序开发

小程序授权逻辑如何更改为button形式

63290
来自专栏DeveWork

Google Fonts导致WordPress 速度问题的三个解决方案

本来实在是不想写这个的,因为相关方法在圈子里面已经烂大街了。但无奈,一些客户将近期的Google Fonts导致 WordPress 打开速度慢的现象归咎于我的...

33190
来自专栏开源项目

Git 项目推荐 | 基于 C# 的极速 WEB + ORM 框架

NFine 是基于 C# 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展,让Web开发更迅速、简单...

60080
来自专栏iOSDevLog

Unity 3D 开发《王者荣耀》:英雄攻击创建按钮源码:https://github.com/iOSDevLog/ArenaOfValor

53460
来自专栏伪君子的梦呓

不用 ps 都可以获得双色调图片

17260
来自专栏二次元

网页抓包之我的歌单

最近见不少人博客都发了关于网页抓包的教程,然后也激起了我的兴(zhuang)趣(bi),就诞生了这篇文章

10720
来自专栏狮乐园

高级 Angular 组件模式 (1)

Angular到现在已经到5.x的版本了,对于MVVM框架我首先接触的是angularjs后来又转为react,之后换了工作因项目技术栈的原因又转换到之前的an...

10620
来自专栏汇智网教程

angular教程推荐

28920
来自专栏安恒信息

微软发出Word漏洞警报,网民防范带毒文档

如果最近有用户收到RTF格式的Word文档,一定不要轻易打开。根据微软的紧急安全公告显示,Word所有版本均存在一个高危漏洞,并已被黑客攻击,W...

29170
来自专栏phodal

这些改成中文名的前端框架,你还能认识几个?

受不了了~~,我也要取一堆名字。 ? AngularJS 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框...

241100

扫码关注云+社区

领取腾讯云代金券