首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >教你用android玩冲顶大会——实现几个小时的财务自由

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

作者头像
何时夕
发布2018-05-02 15:40:13
8020
发布2018-05-02 15:40:13
举报
文章被收录于专栏:求索之路求索之路

最近答题类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的同学,如果冲顶成功了,别忘了发红包哈,嘿嘿!
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.01.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.用app去冲顶
    • 1.让app跑起来
      • 2.举个例子
        • 3.冲顶经验
        • 二.app用到的技术解析
          • 1.需要实现的功能分析
            • 2.确定了需求之后要使用的技术
              • 3.代码详解
              • 三.总结
              相关产品与服务
              AI 应用产品
              文字识别(Optical Character Recognition,OCR)基于腾讯优图实验室的深度学习技术,将图片上的文字内容,智能识别成为可编辑的文本。OCR 支持身份证、名片等卡证类和票据类的印刷体识别,也支持运单等手写体识别,支持提供定制化服务,可以有效地代替人工录入信息。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档