Как я могу создать приложение Java с помощью API Monkeyrunner?

Android SDK имеет API для отправки команд на телефон под названием Monkeyrunner. Похоже, что это Python API. В любом случае я могу использовать его в приложении Java?

Solutions Collecting From Web of "Как я могу создать приложение Java с помощью API Monkeyrunner?"

Ну, я пытался это сделать, вот что я нашел (спасибо google и некоторую помощь от пользователей в Интернете)

Вот небольшая Java-программа, которая использует monkeyrunner для печати имени устройства

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(); } 

}

Для приведенного выше кода тоже нужно включить следующие банки: 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(); } } 

Библиотечные зависимости:

 chimpchat.jar, common.jar, ddmlib.jar, guava-13.0.1.jar, sdklib.jar 

Все они могут быть найдены в подкаталоге sdk/tools/lib пакета ADT.

Я вскакиваю, чтобы предоставить еще один обновленный ответ. Это то, о чем также сообщил google dev.I думаю, что это более надежная реализация, и он использует больше отказобезопасных методов.

 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(); } } 

Вы можете увидеть все свойства устройств с помощью:

 for (String prop: device.getPropertyList()) { System.out.println(prop + ": " + device.getProperty(prop)); } 

Для получения информации о API-интерфейсах вы можете ознакомиться с документами здесь: классы api runner api

Чтобы дополнить отличный ответ от ValarDohaeris, здесь это текущие зависимости в формате maven:

 <properties> <com.android.tools.version>24.3.1</com.android.tools.version> </properties> <dependencies> <dependency> <groupId>net.sf.sociaal</groupId> <artifactId>chimpchat</artifactId> <version>22.6.3</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>18.0</version> </dependency> <dependency> <groupId>com.android.tools</groupId> <artifactId>sdklib</artifactId> <version>${com.android.tools.version}</version> </dependency> <dependency> <groupId>com.android.tools</groupId> <artifactId>common</artifactId> <version>${com.android.tools.version}</version> </dependency> <dependency> <groupId>com.android.tools</groupId> <artifactId>sdk-common</artifactId> <version>${com.android.tools.version}</version> </dependency> <dependency> <groupId>com.android.tools.ddms</groupId> <artifactId>ddmlib</artifactId> <version>${com.android.tools.version}</version> </dependency> </dependencies>