如何调用AdbWinUsbApi.dll 和AdbWinApi.dll 的接口

2020-09-17 教育 99阅读
[mw_shl_code=java,true]package ei.workshop.monkey.service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import com.android.monkeyrunner.adb.AdbBackend;
import com.android.monkeyrunner.core.IMonkeyDevice;
import com.android.monkeyrunner.core.TouchPressType;
/**
* MonkeyRunner的运行代理类,相关方法
* @see #connect(String)
* @see #touchDown(int, int)
* @see #touchUp(int, int)
* @see #type(String)
* @see #press(String)
* @see #startActivity(String)
* @see #drag(int, int, int, int)
* @see #dispose()
* @author "laladin.syd"
*
*/
public class RunnerProxy {
private IMonkeyDevice device;
private static AdbBackend adb;
public RunnerProxy() {
if (adb==null){
adb = new AdbBackend();//你看这个是不是你需要的,通过他可以连接到手机,然后可以对手机进行类似于豌豆荚的操作
}
}

/**
* 连接设备,
* @param deviceID 超时时间,应该尽可能短
* @return 是否连接成功
*/
public boolean connect(String deviceID) {
if (adb != null){
device = adb.waitForConnection(5000,deviceID);
System.out.println("adb 连接,得到device:"+deviceID+"="+device);
}
if (device==null) return false;
return true;
}

/**
* 释放
*/
public void dispose() {
if (device != null) {
device.dispose();
device = null;
}
}

/**
* 摸拟touch方法
* @param x 坐标x
* @param y 坐标y
*
*/
public void touch(int x, int y,String type) {
if("DOWNANDUP".equals(type.toUpperCase())){
device.touch(x, y, TouchPressType.DOWN_AND_UP);
}else if("DOWN".equals(type.toUpperCase())){
device.touch(x, y, TouchPressType.DOWN);

}else if("UP".equals(type.toUpperCase())){
device.touch(x, y, TouchPressType.UP);
}
}
/**
* 摸拟长按
* @param x 坐标x
* @param y 坐标y
*/
public void longTouch(int x, int y) {
device.drag(x, y, x, y, 10, 2);
}

/**
* 摸拟滑动超作
* @param x
* @param y
* @param endX
* @param endY
*/
public void drag(int x, int y, int endX, int endY) {
device.drag(x, y, endX, endY, 10, 2);
}
/**
* 摸拟滑动操作
* @param x
* @param y
* @param endX
* @param endY
* @param step
* @param ms
*/
public void drag(int x, int y, int endX, int endY,int step,int ms) {
device.drag(x, y, endX, endY, 10, 2);
}
/**
* 输入文本内容,PS:只支持英文
* @param value 要输入的文本内容
*/
public void type(String value) {
device.type(value);
}

/**
* 同Touch方法,Down和UP连做
* @param keyCode
*/
public void press(String keyCode) {
device.press(keyCode, TouchPressType.DOWN_AND_UP);
}

/**
* 启动一个窗体
* @param component
*/
public void startActivity(String component) {
String action = "android.intent.action.MAIN";
Collection categories = new ArrayList();
categories.add("android.intent.category.LAUNCHER");
device.startActivity(null, action, null, null, categories,
new HashMap(), component, 0);
}

} [/mw_shl_code]
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com