Zestaw Android SDK zawiera interfejs API do wysyłania poleceń na telefon o nazwie Monkeyrunner. Wygląda na to, że jest to API Pythona. Czy mimo to mogę go używać w aplikacji Java?Jak mogę utworzyć aplikację Java za pomocą interfejsu API Monkeyrunner?
Odpowiedz
Więc staram się to zrobić, oto co znalazłem (dzięki Google i pomocy ze strony członków w Internecie)
Oto mały program Java, który używa monkeyrunner wydrukować nazwę urządzenie
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();
}
}
w powyższym kodu za działa, musi uwzględniać następujące słoiki monkeyrunner, ddmlib, jython, guavalib, sdklib.
Oto aktualizacja @ odpowiedź Harkish, która współpracuje z co zakładam być obecna wersja 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();
}
}
Zależności bibliotek są:
chimpchat.jar, common.jar, ddmlib.jar, guava-13.0.1.jar, sdklib.jar
Mogą je znaleźć w podkatalogu pakietu ADT o numerze sdk/tools/lib
.
Wskakuję, aby zapewnić kolejną zaktualizowaną odpowiedź. To jest to, co polecił również programista google. Myślę, że jest to bardziej solidna implementacja i używa bardziej odpornych na awarie metod.
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();
}
}
można zobaczyć wszystkie właściwości urządzeń z:
for (String prop: device.getPropertyList()) {
System.out.println(prop + ": " + device.getProperty(prop));
}
Więcej informacji na temat API Możesz zajrzeć tutaj docs: monkey runner api classes
Wystarczy uzupełnić wielką odpowiedź od ValarDohaeris, tutaj są obecne zależności w formacie 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>
Obecnie najbardziej aktualną biblioteką wydaje się być https://mvnrepository.com/artifact/net.sf.jali/jali-adm/1.0.7 – Ajax
- 1. Jak utworzyć przypomnienie za pomocą interfejsu API Kalendarza Google?
- 2. oauth2orize za pomocą interfejsu API?
- 3. Jak utworzyć aplikację internetową za pomocą LISP?
- 4. Jak testować aplikację za pomocą interfejsu Google Drive API (klient Java)?
- 5. Jak mogę przeczytać całą wiadomość za pomocą interfejsu Gmail API
- 6. Konfigurowanie niestandardowych konwerterów za pomocą interfejsu API Dozer Java
- 7. Jak zaimplementować złożone zapytania za pomocą interfejsu REST API?
- 8. Uwierzytelnianie za pomocą interfejsu API Google za pomocą konta AccountManager
- 9. Czy mogę "dodać przyjaciela" za pomocą interfejsu API Facebooka?
- 10. jak utworzyć wyodrębnione excelsheet za pomocą java
- 11. Zapisywanie plików za pomocą spinacza za pomocą interfejsu API
- 12. Jak ustawić miejsce wydarzenia za pomocą interfejsu Graph API
- 13. Tworzenie zestawu za pomocą interfejsu API Soundcloud
- 14. Jak utworzyć aplikację internetową maven za pomocą intellij IDEA 12?
- 15. Jak uruchomić aplikację i przenieść ją do przodu za pomocą interfejsu API Cocoa?
- 16. Zapytanie POST za pomocą interfejsu API pobierania?
- 17. Dlaczego nie mogę połączyć się z ElasticSearch za pomocą interfejsu API języka Java?
- 18. W jaki sposób utworzyć płatną aplikację Chrome za pomocą PayPal?
- 19. Jak utworzyć bezpieczną licencjonowaną aplikację Java EE?
- 20. Pobierz zawartość za pomocą interfejsu REST API REST API
- 21. Jak uzyskać ostatnio wstawiony identyfikator za pomocą interfejsu API JS?
- 22. Jak uzyskać "opis" firmy za pomocą interfejsu API Miejsc Google?
- 23. Uwierzytelnianie za pomocą Onedrive SDK/API (lub dowolnego interfejsu API)
- 24. Jak oznaczać elementy czytane za pomocą interfejsu API czytnika Google?
- 25. Jak aktualizować grupowanie za pomocą interfejsu API Mailchimp?
- 26. Jak znaleźć najbliższe skrzyżowanie za pomocą interfejsu API Map Google?
- 27. Jak zarządzać subskrypcjami PayPal za pomocą interfejsu API?
- 28. Zarządzanie pamięcią JNI za pomocą interfejsu API Inwokacji
- 29. Jak zidentyfikować użytkownika zalogowanego za pomocą interfejsu API Facebook?
- 30. Zmiana ustawienia za pomocą interfejsu API w Gmailu?
Otrzymuję błąd z device.getProperty. wymagane: org.python.core.PyObject [], java.lang.String [] znalezione: java.lang.String –
musisz użyć device.getProperty (PyObject [] pos, ciągi znaków) zamiast urządzenia. getProperty (String string) to moje najlepsze przypuszczenie. Proszę napisać kod ur, żeby móc go obejrzeć – Harkish
Użyłem twojego kodu ... –