微信跳一跳纯安卓端实现方法

  微信跳一跳出来好长了,有点时间就沉迷ow,最近有点时间开始看看跳一跳,无奈手残党,没超过100分过,看到朋友圈动不动五六百,也确实佩服那些流弊的人,手残怎么办,于是看到有大神用Python实现自动刷分,确实厉害,无奈Python一点不懂,博主是个Java党,作为跨平台的Java语言,做这个辅助应该还是绰绰有余的。用Java有的基于pc端,用adb模拟点击实现全自动,博主用的是纯安卓客户端,当然有个root权限的手机,要不然都是白谈,不赘述了,正文开始。

  跳一跳实现原理很简单,计算出棋子的中心点和目标的中心点,然后进行弹跳系数运算,模拟点击屏幕时间,这些只要计算准确,再内心毫无波澜的程序面前,不会出现手抖哈哈。

 安卓端实现原理---------------------------主要通过opencv这个开源库识别棋子,网上算法各种各样,总的来说就两种,一种使用opencv的模板识别算法,一种就是计算像素点,棋子的颜色是固定的,可以通过算法得到位置,但是手机性能就那个样子,复杂点算法手机算也要好长,直接第一种,简单快捷。通过opencv识别棋子坐标,用户手动点击目标坐标,通过计算距离得到点击时间,然后模拟点击时间,然后搞定。

1 导入opencv开源库到Androidstudio,到opencv官网(https://opencv.org/releases.html),转到release页面,点击Androidpack,下载下来,然后import module,直接把项目作为module导入项目中,然后配置opencv。我直接在Mainactivity进行配置,配置界面在下面。

微信跳一跳纯安卓端实现方法

2申请su,即root权限,必须手机有root权限,申请也比较简单,直接贴代码。

微信跳一跳纯安卓端实现方法



2 通过opencv的模板匹配算法,matchTemplate 方法匹配模板棋子,方法很简单,代码贴出来。

微信跳一跳纯安卓端实现方法

3得到棋子坐标,开始考虑得到目标点坐标,目标点坐标我的办法是用户手动点击,要想得到坐标,可以在跳一跳上面建一个透明悬浮窗,拦截点击事件,然后通过手势直接得到点击事件在悬浮窗本身的view里面的坐标,但是要记住,你的悬浮窗不是全屏,要在y轴上面加上状态栏的高度,这样就可以得到目标点的真正坐标。实现方法就是安卓悬浮窗,申请下悬浮窗权限,alertwindow,并且要引导用户开启这个权限,部分国产rom对悬浮窗看的比较严格,默认申请也不会给的,因为都懂的,锁机软件相当一部分就是靠悬浮窗作用的。代码贴上。由于app运行时候大部分都在微信跳一跳界面。所以肯定在service创建悬浮窗,由于service单独运行,跟activity也没啥交流,也不绑定了,要注意一点就是最好绑个通知栏,省的系统内存不够先把你service杀了然后留你看着屏幕发呆哈哈。

4跳的时候系数运算可以根据实际结果微调,安卓屏幕一大堆,dpi也一大堆,也只能这样了,博主测试手机1920*1080,算法如下。


5做到这基本差不多了,就剩下一些小东西了,用root权限实现随意截屏,模拟点击啊,实际上运行su里面的adb shell命令。没啥好说的,直接贴。

6处理下细节,比如啥时候取消悬浮窗,防止悬浮窗拦截点击事件之类的,其实做起来还是比较简单的,只是把思路说下,也没啥技术含量,也就看个无聊。最后放上一些注意的事情。




opencv开源库不做处理你要使用就要安装一个叫opencvmanager的app,还要二次安装app,用户体验不好,可以百度大神们的办法,实现免安装运行。还有一个就是要等到库加载完成再运行模板匹配方法,不然会报错,我是在库加载成果功跑service。就那么多,也挺简单的。微信挑一挑就是吸引用户注意的,告诉微信用户我出了微信小游戏了,快来充钱玩。微信小程序跟小游戏就是基于微信庞大用户才风生水起的,没做过小程序,还是专心原生Android开发,各有各的优点,像我这种网页手残无解了GG。结尾了,该申请权限的赶紧申请,不想申请sdk不要适配23,适配了不要忘记动态申请权限END。