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

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

Ну, я пытался это сделать, вот что я нашел (спасибо 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> 
Intereting Posts
Список контактов Библиотека проверки лицензии Android в автономном режиме Android DrawerLayout не показывает значок правильного индикатора Является ли использование общих настроек Android для хранения больших объемов данных хорошей идеей? Все библиотеки com.android.support должны использовать ту же самую версию Сбой предварительного просмотра в Eclipse Модифицировать метод 2.0 без ответа Как использовать exoplayer для воспроизведения mp4, когда я загружаю его из локального прокси-сервера? В Android, как изменить цвет конкретной буквы / символа, который выполняется в списке в списке Как я могу получить доступ к файлу logcat на устройстве Android Как нарисовать гладкую линию после пальца Как я могу просматривать изображение между действиями в android Обнаружение устройства, если есть android? Android – установить вид поверх элементов, нарисованных с помощью холста Android Support Package / Compatibility Library – используйте v4 или v13?