安卓版微信跳一跳辅助 跳一跳辅助Java代码

安卓版微信跳一跳辅助,java实现,具体内容如下

已经看到网上有大神用各种方式实现了,我这是属于简易版ADB命令式实现。

操作方法

1.光标移动到起始点,点击FORM
2.光标移动到目标点,点击TO
3.小人已经跳过去了

原理说明

安装APP,通过设置起点和目标点位置,获得弹跳的毫秒数,发送请求到连接手机的电脑中,电脑执行adb命令起跳。

具体实现

本人的测试设备是Mate9,android版本为7.0,由于在非Root环境下,普通安卓应用并不能通过Runtime.getRuntime().exec()来点击本应用外的区域,所以将手机直接通过USB调试模式连接到电脑,在点击TO按钮后,

int a = Math.abs(mToX - mFromX);
int b = Math.abs(mToY - mFromY);
double c = Math.sqrt(a * a + b * b);

已知起点和终点的坐标,得到两条直角边长度,用勾股定理很容易就求出了斜边长度,经过测试,mate9每ms的弹跳距离是0.75像素,长度除0.75得到time的毫秒数,直接发起一次GET请求到电脑中发布的Servlet,然后电脑执行Runtime.getRuntime().exec("adb shell input swipe 100 100 100 100 " + time)来控制起跳,一次完美的起跳就完成了。

源代码

源代码非常简单,就直接放在这里了

//写在安卓APP中的起跳
public class Jump {
private static final String TAG = "Jump";

private Context mContext;
private int mFromX = 0;
private int mFromY = 0;
private int mToX = 0;
private int mToY = 0;

/**
 * 每毫秒的距离
 */
private static final double MS_DISTANCE = 0.75;

private WindowManager wm;
private View mIndicatorView;
private View mIndicator;
private WindowManager.LayoutParams params;
private TextView mTv_time;

public Jump(Context context) {
 mContext = context;
 init();
}

private void init() {
 wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);

 mIndicatorView = LayoutInflater.from(mContext).inflate(R.layout.indicator, null, false);
 mIndicatorView.measure(0, 0);
 mIndicator = mIndicatorView.findViewById(R.id.indicator);
 mTv_time = mIndicatorView.findViewById(R.id.tv_time);
 mIndicatorView.findViewById(R.id.btnForm)
 .setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
  setForm();
 }
 });
 mIndicatorView.findViewById(R.id.btnTo)
 .setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
  setTo();
 }
 });

 mIndicatorView.setOnTouchListener(new View.OnTouchListener() {
 int startX;
 int startY;

 @Override
 public boolean onTouch(View v, MotionEvent event) {
 switch (event.getAction()) {
 case MotionEvent.ACTION_DOWN:
  startX = (int) event.getRawX();
  startY = (int) event.getRawY();
  break;

 case MotionEvent.ACTION_MOVE:
  int newX = (int) event.getRawX();
  int newY = (int) event.getRawY();
  int dx = newX - startX;
  int dy = newY - startY;
  params.x += dx;
  params.y += dy;
  wm.updateViewLayout(mIndicatorView, params);
  startX = (int) event.getRawX();
  startY = (int) event.getRawY();
  break;

 default:
  break;
 }
 return true;
 }
 });
 params = new WindowManager.LayoutParams();
 params.height = WindowManager.LayoutParams.WRAP_CONTENT;
 params.width = WindowManager.LayoutParams.WRAP_CONTENT;
 params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
 | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
 params.format = PixelFormat.TRANSLUCENT;
 params.gravity = Gravity.TOP + Gravity.LEFT;
 params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
 wm.addView(mIndicatorView, params);
}

public void setForm() {
 int[] mLocation = new int[2];
 mIndicator.getLocationOnScreen(mLocation);
 int wOffset = mIndicator.getMeasuredWidth() / 2;
 int hOffset = mIndicator.getMeasuredHeight() / 2;
 mFromX = mLocation[0] + wOffset;
 mFromY = mLocation[1] + hOffset;
}

public void setTo() {
 int[] mLocation = new int[2];
 mIndicator.getLocationOnScreen(mLocation);
 int wOffset = mIndicator.getMeasuredWidth() / 2;
 int hOffset = mIndicator.getMeasuredHeight() / 2;
 mToX = mLocation[0] + wOffset;
 mToY = mLocation[1] + hOffset;

 int a = Math.abs(mToX - mFromX);
 int b = Math.abs(mToY - mFromY);
 double c = Math.sqrt(a * a + b * b);
 final int time = (int) (c / MS_DISTANCE);
 mTv_time.setText(String.valueOf(time));

 mFromX = 0;
 mFromY = 0;
 mToX = 0;
 mToY = 0;

 new Thread(new Runnable() {
 @Override
 public void run() {
 requestGet(time);
 }
 }).start();
}

private void requestGet(int time) {
 try {
 StringBuilder requestUrl = new StringBuilder("http://192.168.1.140:8080/jump/JumpTime").append("?").append("time=").append(time);
 // 新建一个URL对象
 URL url = new URL(requestUrl.toString());
 // 打开一个HttpURLConnection连接
 HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
 // 设置连接主机超时时间
 urlConn.setConnectTimeout(5 * 1000);
 //设置从主机读取数据超时
 urlConn.setReadTimeout(5 * 1000);
 // 设置是否使用缓存 默认是true
 urlConn.setUseCaches(true);
 // 设置为Post请求
 urlConn.setRequestMethod("GET");
 //urlConn设置请求头信息
 //设置请求中的媒体类型信息。
 urlConn.setRequestProperty("Content-Type", "application/json");
 //设置客户端与服务连接类型
 urlConn.addRequestProperty("Connection", "Keep-Alive");
 // 开始连接
 urlConn.connect();
 // 判断请求是否成功
 if (urlConn.getResponseCode() == 200) {
 // 获取返回的数据
 Log.e(TAG, "Get方式请求成功,result--->");
 } else {
 Log.e(TAG, "Get方式请求失败");
 Log.e(TAG, urlConn.getResponseMessage());
 }
 // 关闭连接
 urlConn.disconnect();
 } catch (Exception e) {
 Log.e(TAG, e.toString());
 }
}
}
//标靶的布局文件
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="150dp">

<RelativeLayout
 android:layout_width="100dp"
 android:layout_height="wrap_content">

 <TextView
 android:id="@+id/tv_time"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_centerHorizontal="true"/>

 <RelativeLayout
 android:id="@+id/rl"
 android:layout_width="100dp"
 android:layout_height="100dp"
 android:layout_below="@id/tv_time">

 <View
 android:layout_width="match_parent"
 android:layout_height="1dp"
 android:layout_centerVertical="true"
 android:background="@android:color/black"/>

 <View
 android:layout_width="1dp"
 android:layout_height="match_parent"
 android:layout_centerHorizontal="true"
 android:background="@android:color/black"/>

 <View
 android:id="@+id/indicator"
 android:layout_width="30dp"
 android:layout_height="30dp"
 android:layout_centerInParent="true"
 android:background="@drawable/mid"/>

 </RelativeLayout>

 <Button
 android:id="@+id/btnForm"
 android:layout_width="50dp"
 android:layout_height="wrap_content"
 android:layout_below="@id/rl"
 android:onClick="setForm"
 android:text="form"
 android:textSize="8sp"/>

 <Button
 android:id="@+id/btnTo"
 android:layout_width="50dp"
 android:layout_height="wrap_content"
 android:layout_alignParentRight="true"
 android:layout_below="@id/rl"
 android:onClick="setTo"
 android:text="to"
 android:textSize="8sp"/>
</RelativeLayout>
</FrameLayout>
//Servlet文件
public class Jump extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 int time = Integer.parseInt(req.getParameter("time"));
 Runtime.getRuntime().exec("adb shell input swipe 100 100 100 100 " + time);
}
}

以上就是此Java版跳一跳辅助的核心内容,从此制霸排行榜不是梦φ(>ω<*)--->(告诉一个秘密:跳太多分数会被直接删除的哟  ̄へ ̄)

更多内容大家可以参考专题《微信跳一跳》进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java微信跳一跳操作指南

    Java微信跳一跳操作指南,指哪挑哪. 本文的思路是通过adb来控制手机进行操作,通过java写一个jframe覆盖在手机屏幕上,用鼠标获取跳的起点和终点,经过试验获取跳的jframe距离和按压时长的关系(线性关系),然后通过adb来根据计算出的结果操作按下时长,(此处还需要一个第三方工具来实时把画面传送给电脑,将jframe覆盖在电脑上的画面上). 代码很短,如下: package jump; import java.awt.FlowLayout; import java.awt.event.

  • 100行java写的微信跳一跳辅助程序

    前几天没事干看别人一直在玩微信上线的那一个跳一跳小游戏,玩着玩着老是掉下去,闲着没事呗就想了想做一个辅助程序的呗.不过先做的手动版的.自动版的有点麻烦.就不发了.用的Java写的,也就一个蒙版. 下面就开始介绍我的小程序,没好多东西,真正的代码应该就是100行左右,没啥难的. 下面这是我的微信朋友们的跳一跳 也就这样吧,因为wechat还是有那个仿作弊系统的,所以还是低调的吧... 话不多说,还是下面奉上我的code吧,说多了墨迹呢.... package com.rain.jump.util;

  • 微信跳一跳游戏Android刷分代码

    本文实例为大家分享了微信跳一跳游戏Android实现刷分,供大家参考,具体内容如下 # coding:utf-8 ''' # === 思路 === # 核心:每次落稳之后截图,根据截图算出棋子的坐标和下一个块顶面的中点坐标, # 根据两个点的距离乘以一个时间系数获得长按的时间 # 识别棋子:靠棋子的颜色来识别位置,通过截图发现最下面一行大概是一条直线,就从上往下一行一行遍历, # 比较颜色(颜色用了一个区间来比较)找到最下面的那一行的所有点,然后求个中点, # 求好之后再让 Y 轴坐标减小棋子底

  • 基于VS+Opencv2.4.10微信跳一跳辅助工具

    最近微信的跳一跳小程序可谓火了一把,不是因为它本身多好玩,而是有大部分的程序员们加入其中,利用各种领域方法,实现了微信跳一跳的外挂,分数轻松上千或上万.之前也看了基于Python开源的代码,GitHub上现在的star已经快超过1W了,简直不敢想.趁着今天礼拜天,在实验室中也简单的实现了一下微信跳一跳的辅助工具,精度还不够高,我跑了一下才到90,纯属娱乐好玩的,后期再继续改进,主要是依赖C++来实现了一下. 环境: Win10+VS2012+Opencv2.4.10+ADB工具 环境的搭建请查阅

  • 微信跳一跳刷分java代码实现

    朋友圈晒跳一跳成绩好久了,今天无意中看到以前一个同事小妞晒用代码刷分的视频,百度了一下果然看到了代码(代码在最后),几经波折,终于成功运行,刷了一点分数. 首先大概说一下步骤: 1.百度下载刷分代码 2.安装adb 3.找个手机使用USB调试模式连接电脑 4.启动跳一跳微信小程序 5.在eclipse中运行代码(此处要不断调试根据手机屏幕大小修改参数) 结果就是你的手机屏幕会自动按压然后让棋子跳. 再说下问题: 一.安装adb问题集: 下载adb工具地址 在此处的设备管理器中,如果没有安装在其他

  • 微信跳一跳python辅助脚本(总结)

    这段时间微信跳一跳这个游戏非常火爆,但是上分又非常的难,对于程序员来说第一个念头就是通过写一个辅助脚本外挂让上分变的容易,python现在比较火,我们一起来以python语言为基础总结以下各路神仙写的关于跳一跳的辅助脚本,大家在学习的时候主要理解他们的写法思路,对你学习python非常的有帮助. 1.微信跳一跳自动运行python脚本 注解:思路 核心:每次落稳之后截图,根据截图算出棋子的坐标和下一个块顶面的中点坐标, 根据两个点的距离乘以一个时间系数获得长按的时间 识别棋子:靠棋子的颜色来识别

  • python版微信跳一跳游戏辅助

    本文实例为大家分享了微信跳一跳游戏辅助python代码,供大家参考,具体内容如下 import os import PIL import numpy import matplotlib matplotlib.use('TKAgg') import matplotlib.pyplot as plt import time from matplotlib.animation import FuncAnimation # 是否需要进行图片更新 need_update = True def get_sc

  • 微信跳一跳辅助Java代码实现

    微信跳一跳辅助的Java具体实现代码,供大家参考,具体内容如下 1.参考知乎教你用Python来玩微信跳一跳,鉴于本人Python一直都是半吊子水平,之前打算用python刷分,可无奈安装python环境各种模块缺失,报错不停,于是乎,使用Java重新实现了一下. 2.环境配置及相关说明: 1).Windows系统,本人win10 2).AVA环境安装,JDK7以上即可 3).安卓手机一部.数据线一条 4).电脑安装ADB驱动,连接安卓手机,同时打开USB调试模式 5).打开微信小程序的跳一跳游

  • 安卓版微信跳一跳辅助 跳一跳辅助Java代码

    安卓版微信跳一跳辅助,java实现,具体内容如下 已经看到网上有大神用各种方式实现了,我这是属于简易版ADB命令式实现. 操作方法 1.光标移动到起始点,点击FORM 2.光标移动到目标点,点击TO 3.小人已经跳过去了 原理说明 安装APP,通过设置起点和目标点位置,获得弹跳的毫秒数,发送请求到连接手机的电脑中,电脑执行adb命令起跳. 具体实现 本人的测试设备是Mate9,android版本为7.0,由于在非Root环境下,普通安卓应用并不能通过Runtime.getRuntime().ex

  • 安卓版微信小程序跳一跳辅助

    今天一上班 被github上的一篇名为<教你用python玩跳一跳>吸引,它的星也瞬间从3400涨到4400 原作者主要就是用python 脚本去 玩微信小程序跳一跳,本次是基于安卓机型配合Mac电脑进行测试 ios版本请移动     ios 直通车点击打开链接 ios 直接改分版本戳这里 飞机票 大致就是需要先去安装adb 然后执行作者的脚本 1.先安装brew(如果有可忽略,直接执行第二步) 官网下载 2.在mac终端中输入以下指令 安装adb 环境: brew cask install

  • Android版微信跳一跳小游戏利用技术手段达到高分的操作方法

    本文主要来讲个个好玩的东西,近来微信刚出的跳一跳微信小程序的游戏很火,看到很多人都达到了二三百分就各种刷朋友圈了. 甩手一个表情 最终我们达到的分数却是这样的: 羡慕吧 一定会有人拍手叫好,"黄金右手"!说真的,我已经不用右手好多年,而且我玩这个游戏压根就没用手,而是意念!哈哈,别喷我,开个玩笑而已,肯定是利用技术手段啦,什么技术?python喽-哈哈,不过不是我写的,我自己是做Android开发的,我对于python从来没有接触,只是恰好在蛋哥公众号看到关于这个游戏的文章,觉得有意思

  • 微信小程序 页面跳转传参详解

    微信小程序 页面跳转传参,做微信小程序必定会用的这样的功能,这里就记录下本人学习实现代码资料. 刚接触微信小程序,多里面的语法和属性还不怎么聊解,如有不多的地方希望各位大神多多指教.今天来说下微信小程序怎么跳转和传参,话不多说直接上代码. 实现的功能是给列表增加点击功能传参到下一页: 代码如下: <import src="../WXtemplate/headerTemplate.wxml"/> <view> <!--滚动图--> <view&g

  • 微信小程序 页面跳转事件绑定的实例详解

    微信小程序 页面跳转事件绑定的实例详解 什么是事件 事件是视图层到逻辑层的通讯方式. 事件可以将用户的行为反馈到逻辑层进行处理. 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数. 事件对象可以携带额外信息,如 id, dataset, touches. 在组件中绑定一个事件处理函数. 如bindtap,当用户点击该组件的时候会在该页面对应的Page中找到相应的事件处理函数 <view bindtap="view"> <text bindtap

  • 微信小程序 页面跳转传值实现代码

    微信小程序 页面跳转传值实现代码 微信小程序的页面路径只能是五层: 现在场景如下: index(首页)打开新页面 list(列表)打开新页面search(条件查询)确定条件返回 list(列表): 这里有个限制,微信只能打开五层网页,意味着:在search页面点击确定的时候是要返回上一页: wx.navigateBack(OBJECT) 该api是无法带参数返回上一页的,微信给出的方法是在全局变量里面添加对象:(真特么操蛋) app.js加入变量search search:'', 后续js头部全

  • 微信小程序 页面跳转和数据传递实例详解

    微信小程序 页面跳转和数据传递 1.先导 在Android中,我们Activity和Fragment都有栈的概念在里面,微信小程序页面也有栈的概念在里面.微信小程序页面跳转有四种方式: 1.wx.navigateTo(OBJECT): 2.wx.redirectTo(OBJECT): 3.wx.switchTab(OBJECT): 4.wx.navigateBack(OBJECT) 5.使用实现对应的跳转功能: 分析: 其中navigateTo是将原来的页面保存在页面栈中,在跳入到下一个页面的时

  • 微信小程序 页面跳转传递值几种方法详解

    微信小程序 页面跳转传递值 微信小程序导航有两种形式:一种是在写在js中进行跳转,另一种是写在wxml页面中进行跳转. 1.js导航 (1).wx.navigateTo(OBJECT) :保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面. wx.navigateTo({ url: 'test?id=1' }) 获取传递的值: //test.js Page({ onLoad: function(option){ console.log(option.id)

随机推荐