2011-07-13 6 views
11

एंड्रॉइड एसडीके में मोनकीरुनर नामक फोन पर कमांड भेजने के लिए एक एपीआई है। यह एक पायथन एपीआई प्रतीत होता है। क्या मैं जावा एप्लिकेशन में इसका उपयोग कर सकता हूं?मैं Monkeyrunner API का उपयोग कर जावा ऐप कैसे बना सकता हूं?

उत्तर

8

खैर मैं यह करने के प्रयास कर रहे हैं, यहाँ मैं क्या पाया (धन्यवाद गूगल के लिए और इंटरनेट पर सदस्यों से कुछ मदद की)

यह एक छोटा सा जावा प्रोग्राम 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 शामिल करने के लिए की जरूरत है।

+1

मुझे एक त्रुटि मिल रही है device.getProperty। आवश्यक: org.python.core.PyObject [], java.lang.String [] मिला: java.lang.String –

+1

आपने डिवाइस के बजाय डिवाइस.getProperty (PyObject [] pos, स्ट्रिंग स्ट्रिंग्स) का उपयोग किया होगा। getProperty (स्ट्रिंग स्ट्रिंग) मेरा सबसे अच्छा अनुमान है। कृपया अपना कोड पोस्ट करें ताकि मैं इसे देख सकूं – Harkish

+0

मैंने आपके कोड का उपयोग किया ... –

5

यहाँ @ 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 एडीटी बंडल की उपनिर्देशिका में।

3

मैं अभी तक एक और अद्यतन उत्तर प्रदान करने के लिए कूद रहा हूं। यही एक Google देव ने भी सलाह दी है। मुझे लगता है कि यह एक और ठोस कार्यान्वयन है और यह अधिक असफल-सुरक्षित तरीकों का उपयोग करता है। एपीआई आप डॉक्स यहाँ देख सकते हैं पर जानकारी के लिए

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

:

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

आप के साथ सभी डिवाइस गुण देख सकते हैं monkey runner api classes

1

बस ValarDohaeris से महान जवाब पूरक, यहां यह मैवेन प्रारूप में वर्तमान निर्भरता है:

<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> 
+0

का उपयोग कर रहे हैं वर्तमान में, सबसे अद्यतित lib https://mvnrepository.com/artifact/net.sf.jali/jali-adm/1.0.7 प्रतीत होता है – Ajax

संबंधित मुद्दे