Mat*_*son 13 python java api android monkeyrunner
Android SDK有一个API,用于向手机发送名为Monkeyrunner的命令.它似乎是一个Python API.无论如何我可以在Java应用程序中使用它吗?
好吧,我一直在尝试这样做,这是我发现的(感谢谷歌和互联网上的成员的一些帮助)
这是一个使用monkeyrunner打印设备名称的Java程序
import com.android.monkeyrunner.MonkeyDevice;
import com.android.monkeyrunner.adb.AdbBackend;
public class Monk {
public static void main(String[] args) {
// TODO code application logic here
Monk monk=new Monk();
monk.demo();
}
public void demo()
{
AdbBackend ab = new AdbBackend();
MonkeyDevice device = ab.waitForConnection();
//Print Device Name
System.out.println(device.getProperty("build.model"));
device.dispose();
}
Run Code Online (Sandbox Code Playgroud)
}
对于上面的代码也工作,我需要包括以下jar monkeyrunner,ddmlib,jython,guavalib,sdklib.
这是对@Harkish的回答的更新,它与我认为是当前版本的MonkeyRunner有关:
import com.android.chimpchat.adb.AdbBackend;
import com.android.chimpchat.core.IChimpDevice;
public class MonkeyTest {
public static void main(String[] args) {
// sdk/platform-tools has to be in PATH env variable in order to find adb
IChimpDevice device = new AdbBackend().waitForConnection();
// Print Device Name
System.out.println(device.getProperty("build.model"));
// Take a snapshot and save to out.png
device.takeSnapshot().writeToFile("out.png", null);
device.dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
库依赖项是:
chimpchat.jar, common.jar, ddmlib.jar, guava-13.0.1.jar, sdklib.jar
Run Code Online (Sandbox Code Playgroud)
它们都可以在sdk/tools/libADT包的子目录中找到.
我正在提供另一个更新的答案。这也是谷歌开发人员的建议。我认为它是一个更可靠的实现,它使用了更多的故障安全方法。
import java.util.Map;
import java.util.TreeMap;
import com.android.chimpchat.ChimpChat;
import com.android.chimpchat.core.IChimpDevice;
public class MonkeyRunnerTest {
private static final String ADB = "/path-to-your-sdk/sdk/platform-tools/adb";
private static final long TIMEOUT = 5000;
/**
* @param args
*/
public static void main(String[] args) {
Map<String, String> options = new TreeMap<String, String>();
options.put("backend", "adb");
//this is so you don't need to add adb or platform-tools to your system path
options.put("adbLocation", ADB);
ChimpChat chimpchat = ChimpChat.getInstance(options);
//Using this method is advised as to avoid hangs,as this would wait indefinitely
//Actually waitForConnection() doesn't wait indefinitely but for Integer.MAX_VALUE milliseconds, which still makes up for 596 hours
IChimpDevice device = chimpchat.waitForConnection(TIMEOUT, ".*");
chimpchat.shutdown();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式查看所有设备属性:
for (String prop: device.getPropertyList()) {
System.out.println(prop + ": " + device.getProperty(prop));
}
Run Code Online (Sandbox Code Playgroud)
有关 API 的信息,您可以查看此处的文档:monkey runner api classes