• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=MonkeyDevice
2parent.title=monkeyrunner
3parent.link=index.html
4@jd:body
5<style>
6    h4.jd-details-title {background-color: #DEE8F1;}
7</style>
8<p>
9    A monkeyrunner class that represents a device or emulator accessible by the workstation running
10<code><a href="{@docRoot}tools/help/monkeyrunner_concepts.html">monkeyrunner</a></code>.
11</p>
12<p>
13    This class is used to control an Android device or emulator. The methods send UI events,
14    retrieve information, install and remove applications, and run applications.
15</p>
16<p>
17    You normally do not have to create an instance of <code>MonkeyDevice</code>. Instead, you
18    use
19<code><a href="{@docRoot}tools/help/MonkeyRunner.html#waitForConnection">
20MonkeyRunner.waitForConnection()</a></code> to create a new object from a connection to a device or
21emulator. For example, instead of
22using:</p>
23<pre>
24newdevice = MonkeyDevice()
25</pre>
26<p>
27    you would use:
28</p>
29<pre>
30newdevice = MonkeyRunner.waitForConnection()
31</pre>
32<h2>Summary</h2>
33    <table id="constants" class="jd-sumtable" style="background-color: white;">
34       <tr>
35            <th colspan="12" style="background-color: #E2E2E2">Constants</th>
36       </tr>
37        <tr class="api" style="background-color: white;">
38            <td class="jd-typecol"><em>string</em></td>
39            <td class="jd-linkcol"><a href="#ACTION_DOWN">DOWN</a></td>
40            <td class="jd-descrcol" width="100%">
41                Use this with the <code>type</code> argument of
42                <code><a href="#press">press()</a></code> or <code><a href="#touch">touch()</a>
43                </code>
44                to send a DOWN event.
45            </td>
46        </tr>
47        <tr class="api" style="background-color: white;">
48            <td class="jd-typecol"><em>string</em></td>
49            <td class="jd-linkcol"><a href="#ACTION_UP">UP</a></td>
50            <td class="jd-descrcol" width="100%">
51                Use this with the <code>type</code> argument of
52                <code><a href="#press">press()</a></code> or <code><a href="#touch">touch()</a>
53                </code>
54                to send an UP event.
55            </td>
56        </tr>
57        <tr class="api" style="background-color: white;">
58            <td class="jd-typecol"><em>string</em></td>
59            <td class="jd-linkcol"><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></td>
60            <td class="jd-descrcol" width="100%">
61                Use this with the <code>type</code> argument of
62                <code><a href="#press">press()</a></code> or <code><a href="#touch">touch()</a>
63                </code>
64                to send a DOWN event immediately followed by an UP event.
65            </td>
66        </tr>
67    </table>
68<table id="pubmethods" class="jd-sumtable">
69    <tr>
70        <th colspan="12" style="background-color: #E2E2E2">Methods</th>
71    </tr>
72    <tr class="api" >
73        <td class="jd-typecol">
74            <nobr>
75                void
76            </nobr>
77        </td>
78        <td class="jd-linkcol" width="100%">
79            <nobr>
80                <span class="sympad">
81                    <a href="#broadcastIntent">broadcastIntent</a>
82                </span>
83                (<em>string</em> uri,
84                <em>string</em> action,
85                <em>string</em> data,
86                <em>string</em> mimetype,
87                <em>iterable</em> categories
88                <em>dictionary</em> extras,
89                <em>component</em> component,
90                <em>iterable</em> flags)
91            </nobr>
92            <div class="jd-descrdiv">
93                Broadcasts an Intent to this device, as if the Intent were coming from an
94                application.
95            </div>
96        </td>
97    </tr>
98    <tr class="api" >
99        <td class="jd-typecol">
100            <nobr>
101                void
102            </nobr>
103        </td>
104        <td class="jd-linkcol" width="100%">
105            <nobr>
106                <span class="sympad">
107                    <a href="#drag">drag</a>
108                </span>
109                (<em>tuple</em> start,
110                <em>tuple</em> end,
111                <em>float</em> duration,
112                <em>integer</em> steps)
113            </nobr>
114            <div class="jd-descrdiv">
115                Simulates a drag gesture (touch, hold, and move) on this device's screen.
116            </div>
117        </td>
118    </tr>
119    <tr class="api" >
120        <td class="jd-typecol">
121            <nobr>
122                <em>object</em>
123            </nobr>
124        </td>
125        <td class="jd-linkcol" width="100%">
126            <nobr>
127                <span class="sympad">
128                    <a href="#getProperty">getProperty</a>
129                </span>
130                (<em>string</em> key)
131            </nobr>
132            <div class="jd-descrdiv">
133                Given the name of a system environment variable, returns its value for this device.
134                The available variable names are listed in the <a href="#getProperty">
135                detailed description</a> of this method.
136            </div>
137        </td>
138    </tr>
139    <tr class="api" >
140        <td class="jd-typecol">
141            <nobr>
142                <em>object</em>
143            </nobr>
144        </td>
145        <td class="jd-linkcol" width="100%">
146            <nobr>
147                <span class="sympad">
148                    <a href="#getSystemProperty">getSystemProperty</a>
149                </span>
150                (<em>string</em> key)
151            </nobr>
152            <div class="jd-descrdiv">
153.               The API equivalent of <code>adb shell getprop &lt;key&gt;. This is provided for use
154                by platform developers.
155            </div>
156        </td>
157    </tr>
158    <tr class="api" >
159        <td class="jd-typecol">
160            <nobr>
161                void
162            </nobr>
163        </td>
164        <td class="jd-linkcol" width="100%">
165            <nobr>
166                <span class="sympad">
167                    <a href="#installPackage">installPackage</a>
168                </span>
169                (<em>string</em> path)
170            </nobr>
171            <div class="jd-descrdiv">
172                Installs the Android application or test package contained in packageFile onto this
173                device. If the application or test package is already installed, it is replaced.
174            </div>
175        </td>
176    </tr>
177    <tr class="api" >
178        <td class="jd-typecol">
179            <nobr>
180                <em>dictionary</em>
181            </nobr>
182        </td>
183        <td class="jd-linkcol" width="100%">
184            <nobr>
185                <span class="sympad">
186                    <a href="#instrument">instrument</a>
187                </span>
188                (<em>string</em> className,
189                <em>dictionary</em> args)
190            </nobr>
191            <div class="jd-descrdiv">
192                Runs the specified component under Android instrumentation, and returns the results
193                in a dictionary whose exact format is dictated by the component being run. The
194                component must already be present on this device.
195            </div>
196        </td>
197    </tr>
198    <tr class="api">
199        <td class="jd-typecol">
200            <nobr>
201                void
202            </nobr>
203        </td>
204        <td class="jd-linkcol" width="100%">
205            <nobr>
206                <span class="sympad">
207                    <a href="#press">press</a>
208                </span>
209                (<em>string</em> name,
210                <em>dictionary</em> type)
211            </nobr>
212            <div class="jd-descrdiv">
213                Sends the key event specified by type to the key specified by
214                keycode.
215            </div>
216        </td>
217    </tr>
218    <tr class="api" >
219        <td class="jd-typecol">
220            <nobr>
221                void
222            </nobr>
223        </td>
224        <td class="jd-linkcol" width="100%">
225            <nobr>
226                <span class="sympad">
227                    <a href="#reboot">reboot</a>
228                </span>
229                (<em>string</em> into)
230            </nobr>
231            <div class="jd-descrdiv">
232                Reboots this device into the bootloader specified by bootloadType.
233            </div>
234        </td>
235    </tr>
236    <tr class="api" >
237        <td class="jd-typecol">
238            <nobr>
239                void
240            </nobr>
241        </td>
242        <td class="jd-linkcol" width="100%">
243            <nobr>
244                <span class="sympad">
245                    <a href="#removePackage">removePackage</a>
246                </span>
247                (<em>string</em> package)
248            </nobr>
249            <div class="jd-descrdiv">
250                Deletes the specified package from this device, including its data and cache.
251            </div>
252        </td>
253    </tr>
254    <tr class="api" >
255        <td class="jd-typecol">
256            <nobr>
257                <em>object</em>
258            </nobr>
259        </td>
260        <td class="jd-linkcol" width="100%">
261            <nobr>
262                <span class="sympad">
263                    <a href="#shell">shell</a>
264                </span>
265                (<em>string</em> cmd)
266            </nobr>
267            <div class="jd-descrdiv">
268                Executes an <code>adb</code> shell command and returns the result, if any.
269            </div>
270        </td>
271    </tr>
272    <tr class="api" >
273        <td class="jd-typecol">
274            <nobr>
275                void
276            </nobr>
277        </td>
278        <td class="jd-linkcol" width="100%">
279            <nobr>
280                <span class="sympad">
281                    <a href="#startActivity">startActivity</a>
282                </span>
283                (<em>string</em> uri,
284                <em>string</em> action,
285                <em>string</em> data,
286                <em>string</em> mimetype,
287                <em>iterable</em> categories
288                <em>dictionary</em> extras,
289                <em>component</em> component,
290                <em>flags</em>)
291            </nobr>
292            <div class="jd-descrdiv">
293                Starts an Activity on this device by sending an Intent constructed from the
294                supplied arguments.
295            </div>
296        </td>
297    </tr>
298    <tr class="api" >
299        <td class="jd-typecol">
300            <nobr>
301                <code>
302                <a href="{@docRoot}tools/help/MonkeyImage.html">
303                        MonkeyImage
304                    </a>
305                </code>
306            </nobr>
307        </td>
308        <td class="jd-linkcol" width="100%">
309            <nobr>
310                <span class="sympad">
311                    <a href="#takeSnapshot">takeSnapshot</a>()
312                </span>
313            </nobr>
314            <div class="jd-descrdiv">
315                Captures the entire screen buffer of this device, yielding a
316                <code>
317                <a href="{@docRoot}tools/help/MonkeyImage.html">
318                        MonkeyImage
319                </a>
320                </code> object containing a screen capture of the current display.
321            </div>
322        </td>
323    </tr>
324    <tr class="api" >
325        <td class="jd-typecol">
326            <nobr>
327                void
328            </nobr>
329        </td>
330        <td class="jd-linkcol" width="100%">
331            <nobr>
332                <span class="sympad">
333                    <a href="#touch">touch</a>
334                </span>
335               (<em>integer</em> x,
336                 <em>integer</em> y,
337                 <em>integer</em> type)
338            </nobr>
339            <div class="jd-descrdiv">
340                Sends a touch event specified by type to the screen location specified
341                by x and y.
342            </div>
343        </td>
344    </tr>
345    <tr class="api" >
346        <td class="jd-typecol">
347            <nobr>
348                void
349            </nobr>
350        </td>
351        <td class="jd-linkcol" width="100%">
352            <nobr>
353                <span class="sympad">
354                    <a href="#touch">type</a>
355                </span>
356                   (<em>string</em> message)
357            </nobr>
358            <div class="jd-descrdiv">
359                Sends the characters contained in message to this device, as if they
360                had been typed on the device's keyboard. This is equivalent to calling
361                <code><a href="#press">press()</a></code> for each keycode in <code>message</code>
362                using the key event type <code><a href="#ACTION_DOWN_AND_UP"></a>DOWN_AND_UP</code>.
363            </div>
364        </td>
365    </tr>
366    <tr class="api" >
367        <td class="jd-typecol">
368            <nobr>
369                void
370            </nobr>
371        </td>
372        <td class="jd-linkcol" width="100%">
373            <nobr>
374                <span class="sympad">
375                    <a href="#touch">wake</a>
376                </span>
377                   ()
378            </nobr>
379            <div class="jd-descrdiv">
380                Wakes the screen of this device.
381            </div>
382        </td>
383    </tr>
384</table>
385<!-- ========= ENUM CONSTANTS DETAIL ======== -->
386<h2>Constants</h2>
387<A NAME="ACTION_DOWN"></a>
388<div class="jd-details api">
389    <h4 class="jd-details-title">
390        <span class="normal">
391            <em>string</em>
392        </span>
393            DOWN
394    </h4>
395    <div class="jd-details-descr">
396        <div class="jd-tagdata jd-tagdescr">
397            <p>
398                <code><a href="#press">press()</a></code> or
399                <code><a href="#press">touch()</a></code> value.
400                Specifies that a DOWN event type should be sent to the device, corresponding to
401                pressing down on a key or touching the screen.
402            </p>
403        </div>
404    </div>
405</div>
406<A NAME="ACTION_UP"></A>
407<div class="jd-details api">
408    <h4 class="jd-details-title">
409        <span class="normal">
410            <em>string</em>
411        </span>
412            UP
413    </h4>
414    <div class="jd-details-descr">
415        <div class="jd-tagdata jd-tagdescr">
416            <p>
417                <code><a href="#press">press()</a></code> or
418                <code><a href="#press">touch()</a></code> value.
419                Specifies that an UP event type should be sent to the device, corresponding to
420                releasing a key or lifting up from the screen.
421            </p>
422        </div>
423    </div>
424</div>
425<A NAME="ACTION_DOWN_AND_UP"></A>
426
427<div class="jd-details api">
428    <h4 class="jd-details-title">
429        <span class="normal">
430            <em>string</em>
431        </span>
432            DOWN_AND_UP
433    </h4>
434    <div class="jd-details-descr">
435        <div class="jd-tagdata jd-tagdescr">
436            <p>
437                <code><a href="#press">press()</a></code>,
438                <code><a href="#press">touch()</a></code> or
439                <code><a href="#type">type()</a></code> value.
440                Specifies that a DOWN event type followed by an UP event type should be sent to the
441                device, corresponding to typing a key or clicking the screen.
442            </p>
443        </div>
444    </div>
445</div>
446<!-- ========= METHOD DETAIL ======== -->
447<!-- Public methods -->
448<h2>Public Methods</h2>
449<A NAME="broadcastIntent"></A>
450<div class="jd-details api ">
451    <h4 class="jd-details-title">
452      <span class="normal">
453        void
454      </span>
455      <span class="sympad">broadcastIntent</span>
456      <span class="normal">
457      (
458            <em>string</em> uri,
459            <em>string</em> action,
460            <em>string</em> data,
461            <em>string</em> mimetype,
462            <em>iterable</em> categories
463            <em>dictionary</em> extras,
464            <em>component</em> component,
465            <em>iterable</em> flags)
466      </span>
467    </h4>
468  <div class="jd-details-descr">
469
470    <div class="jd-tagdata jd-tagdescr">
471        <p>
472            Broadcasts an Intent to this device, as if the Intent were coming from an
473            application. See {@link android.content.Intent Intent} for more information about the
474            arguments.
475        </p>
476    </div>
477    <div class="jd-tagdata">
478      <h5 class="jd-tagtitle">Arguments</h5>
479      <table class="jd-tagtable">
480        <tr>
481          <th>uri</th>
482            <td>
483                The URI for the Intent.
484                (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
485            </td>
486        </tr>
487        <tr>
488            <th>action</th>
489            <td>
490                The action for this Intent
491                (see {@link android.content.Intent#setAction(java.lang.String) Intent.setAction()}).
492            </td>
493        </tr>
494        <tr>
495            <th>data</th>
496            <td>
497                The data URI for this Intent
498                (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
499            </td>
500        </tr>
501        <tr>
502            <th>mimetype</th>
503            <td>
504                The MIME type for the Intent
505                (see {@link android.content.Intent#setType(java.lang.String) Intent.setType()}).
506            </td>
507        </tr>
508        <tr>
509            <th>categories</th>
510            <td>
511                An iterable data structure containing strings that define categories for this
512                Intent
513                (see
514                {@link android.content.Intent#addCategory(java.lang.String) Intent.addCategory()}).
515            </td>
516        </tr>
517        <tr>
518            <th>extras</th>
519            <td>
520                A dictionary of extra data for this Intent
521                (see {@link android.content.Intent#putExtra(java.lang.String,java.lang.String)
522                Intent.putExtra()}
523                for an example).
524                <p>
525                    The key for each dictionary item should be a <em>string</em>. The item's value
526                    can be any simple or structured data type.
527                </p>
528            </td>
529        </tr>
530        <tr>
531            <th>component</th>
532            <td>
533                The component for this Intent (see {@link android.content.ComponentName}).
534                Using this argument will direct the Intent to a specific class within a specific
535                Android package.
536            </td>
537        </tr>
538        <tr>
539            <th>flags</th>
540            <td>
541                An iterable data structure containing flags that control how the Intent is handled
542                (see {@link android.content.Intent#setFlags(int) Intent.setFlags()}).
543            </td>
544        </tr>
545      </table>
546    </div>
547  </div>
548</div>
549<A NAME="drag"></A>
550<div class="jd-details api ">
551    <h4 class="jd-details-title">
552      <span class="normal">
553        void
554      </span>
555      <span class="sympad">drag</span>
556      <span class="normal">
557      (
558            <em>tuple</em> start,
559            <em>tuple</em> end,
560            <em>float</em> duration,
561            <em>integer</em> steps)
562      </span>
563    </h4>
564  <div class="jd-details-descr">
565
566    <div class="jd-tagdata jd-tagdescr">
567        <p>
568            Simulates a drag gesture (touch, hold, and move) on this device's screen.
569        </p>
570    </div>
571    <div class="jd-tagdata">
572      <h5 class="jd-tagtitle">Arguments</h5>
573      <table class="jd-tagtable">
574        <tr>
575          <th>start</th>
576          <td>
577            The starting point of the drag gesture, in the form of a <em>tuple</em>
578            (x,y) where x and y are <em>integers</em>.
579          </td>
580        </tr>
581        <tr>
582          <th>end</th>
583          <td>
584            The end point of the drag gesture, in the form of a <em>tuple</em> (x,y)
585            where x and y are <em>integers</em>.
586          </td>
587        </tr>
588        <tr>
589            <th>duration</th>
590            <td>The duration of the drag gesture in seconds. The default is 1.0 seconds.</td>
591        </tr>
592        <tr>
593            <th>steps</th>
594            <td>The number of steps to take when interpolating points. The default is 10.</td>
595        </tr>
596      </table>
597    </div>
598  </div>
599</div>
600<A NAME="getProperty"></A>
601<div class="jd-details api ">
602    <h4 class="jd-details-title">
603      <span class="normal">
604        <em>object</em>
605      </span>
606      <span class="sympad">getProperty</span>
607      <span class="normal">
608        (<em>string</em> key)
609      </span>
610    </h4>
611  <div class="jd-details-descr">
612
613    <div class="jd-tagdata jd-tagdescr">
614        <p>
615            Given the name of a system environment variable, returns its value for this device.
616        </p>
617    </div>
618    <div class="jd-tagdata">
619      <h5 class="jd-tagtitle">Arguments</h5>
620      <table class="jd-tagtable">
621        <tr>
622          <th>key</th>
623          <td>
624            The name of the system environment variable. The available variable names are listed in
625            <a href="#table1">Table 1. Property variable names</a> at the end of this topic.
626          </td>
627        </tr>
628      </table>
629    </div>
630    <div class="jd-tagdata">
631      <h5 class="jd-tagtitle">Returns</h5>
632      <ul class="nolist">
633        <li>
634            The value of the variable. The data format varies according to the variable requested.
635        </li>
636      </ul>
637    </div>
638  </div>
639</div>
640<A NAME="getSystemProperty"></A>
641<div class="jd-details api ">
642    <h4 class="jd-details-title">
643      <span class="normal">
644        <em>object</em>
645      </span>
646      <span class="sympad">getSystemProperty</span>
647      <span class="normal">
648      (<em>string</em> key)
649      </span>
650    </h4>
651  <div class="jd-details-descr">
652
653    <div class="jd-tagdata jd-tagdescr">
654        <p>
655            Synonym for <code><a href="#getProperty">getProperty()</a></code>.
656        </p>
657    </div>
658    <div class="jd-tagdata">
659      <h5 class="jd-tagtitle">Arguments</h5>
660      <table class="jd-tagtable">
661        <tr>
662          <th>key</th>
663          <td>
664            The name of the system environment variable. The available variable names are listed in
665            <a href="#table1">Table 1. Property Variable Names</a>.
666          </td>
667        </tr>
668      </table>
669    </div>
670    <div class="jd-tagdata">
671      <h5 class="jd-tagtitle">Returns</h5>
672      <ul class="nolist">
673        <li>
674            The value of the variable. The data format varies according to the variable requested.
675        </li>
676      </ul>
677    </div>
678  </div>
679</div>
680<A NAME="installPackage"></A>
681<div class="jd-details api ">
682    <h4 class="jd-details-title">
683      <span class="normal">
684        void
685      </span>
686      <span class="sympad">installPackage</span>
687      <span class="normal">
688      (<em>string</em> path)
689      </span>
690    </h4>
691  <div class="jd-details-descr">
692
693    <div class="jd-tagdata jd-tagdescr">
694        <p>
695            Installs the Android application or test package contained in packageFile
696            onto this device. If the application or test package is already installed, it is
697            replaced.
698        </p>
699    </div>
700    <div class="jd-tagdata">
701      <h5 class="jd-tagtitle">Arguments</h5>
702      <table class="jd-tagtable">
703        <tr>
704          <th>path</th>
705          <td>
706            The fully-qualified path and filename of the <code>.apk</code> file to install.
707          </td>
708        </tr>
709      </table>
710    </div>
711  </div>
712</div>
713<A NAME="instrument"></A>
714<div class="jd-details api ">
715    <h4 class="jd-details-title">
716      <span class="normal">
717        <em>dictionary</em>
718      </span>
719      <span class="sympad">instrument</span>
720      <span class="normal">
721      (
722            <em>string</em> className,
723            <em>dictionary</em> args)
724      </span>
725    </h4>
726  <div class="jd-details-descr">
727
728    <div class="jd-tagdata jd-tagdescr">
729        <p>
730            Runs the specified component with Android instrumentation, and returns the results
731            in a dictionary whose exact format is dictated by the component being run. The
732            component must already be present on this device.
733        </p>
734        <p>
735            Use this method to start a test case that uses one of Android's test case classes.
736            See <a href="{@docRoot}tools/testing/testing_android.html">Testing
737            Fundamentals</a> to learn more about unit testing with the Android testing
738            framework.
739        </p>
740    </div>
741    <div class="jd-tagdata">
742      <h5 class="jd-tagtitle">Arguments</h5>
743      <table class="jd-tagtable">
744        <tr>
745          <th>className</th>
746          <td>
747            The name of an Android component that is already installed on this device, in the
748            standard form packagename/classname, where packagename is the
749            Android package name of a <code>.apk</code> file on this device, and
750            classname is the class name of an Android component (Activity,
751            ContentProvider, Service, or BroadcastReceiver) in that file. Both
752            packagename and classname must be fully qualified. See
753            {@link android.content.ComponentName} for more details.
754          </td>
755        </tr>
756        <tr>
757          <th>args</th>
758          <td>
759            A dictionary containing flags and their values. These are passed to the component as it
760            is started. If the flag does not take a value, set its dictionary value to an empty
761            string.
762          </td>
763        </tr>
764      </table>
765    <div class="jd-tagdata">
766      <h5 class="jd-tagtitle">Returns</h5>
767        <ul class="nolist">
768            <li>
769                <p>
770                    A dictionary containing the component's output. The contents of the dictionary
771                    are defined by the component itself.
772                </p>
773                <p>
774                    If you use {@link android.test.InstrumentationTestRunner} as the class name in
775                    the componentName argument, then the result dictionary contains
776                    the single key "stream". The value of "stream" is a <em>string</em> containing
777                    the test output, as if <code>InstrumentationTestRunner</code> was run from the
778                    command line. The format of this output is described in
779                    <a href="{@docRoot}tools/testing/testing_otheride.html">
780                    Testing in Other IDEs</a>.
781                </p>
782            </li>
783        </ul>
784    </div>
785    </div>
786  </div>
787</div>
788<A NAME="press"></A>
789<div class="jd-details api ">
790    <h4 class="jd-details-title">
791      <span class="normal">
792        void
793      </span>
794      <span class="sympad">press</span>
795      <span class="normal">
796      (<em>string</em> name,
797      <em>integer</em> type)
798      </span>
799    </h4>
800  <div class="jd-details-descr">
801    <div class="jd-tagdata jd-tagdescr">
802        <p>
803            Sends the key event specified by <code>type</code> to the key specified by
804            <code>keycode</code>.
805        </p>
806    </div>
807    <div class="jd-tagdata">
808      <h5 class="jd-tagtitle">Arguments</h5>
809      <table class="jd-tagtable">
810        <tr>
811          <th>name</th>
812          <td>
813            The name of the keycode to send. See {@link android.view.KeyEvent} for a list of
814            keycode names. Use the keycode name, not its integer value.
815          </td>
816        </tr>
817        <tr>
818          <th>type</th>
819          <td>
820            The type of key event to send. The allowed values are <code><a href="#ACTION_DOWN">
821            DOWN</a></code>, <code><a href="#ACTION_UP">UP</a></code>, and
822            <code><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></code>.
823          </td>
824        </tr>
825      </table>
826    </div>
827  </div>
828</div>
829<A NAME="reboot"></A>
830<div class="jd-details api ">
831    <h4 class="jd-details-title">
832      <span class="normal">
833        void
834      </span>
835      <span class="sympad">reboot</span>
836      <span class="normal">
837      (<em>string</em> bootloadType)
838      </span>
839    </h4>
840  <div class="jd-details-descr">
841
842    <div class="jd-tagdata jd-tagdescr">
843        <p>
844                Reboots this device into the bootloader specified by <code>bootloadType</code>.
845        </p>
846    </div>
847    <div class="jd-tagdata">
848      <h5 class="jd-tagtitle">Arguments</h5>
849      <table class="jd-tagtable">
850        <tr>
851          <th>into</th>
852          <td>
853            The type of bootloader to reboot into. The allowed values are
854            "bootloader", "recovery", or "None".
855          </td>
856        </tr>
857      </table>
858    </div>
859  </div>
860</div>
861<A NAME="removePackage"></A>
862<div class="jd-details api ">
863    <h4 class="jd-details-title">
864      <span class="normal">
865        void
866      </span>
867      <span class="sympad">removePackage</span>
868      <span class="normal">
869      (<em>string</em> package)
870      </span>
871    </h4>
872  <div class="jd-details-descr">
873
874    <div class="jd-tagdata jd-tagdescr">
875        <p>
876            Deletes the specified package from this device, including its data and cache.
877        </p>
878    </div>
879    <div class="jd-tagdata">
880      <h5 class="jd-tagtitle">Arguments</h5>
881      <table class="jd-tagtable">
882        <tr>
883          <th>package</th>
884          <td>
885            The Android package name of an <code>.apk</code> file on this device.
886          </td>
887      </table>
888    </div>
889  </div>
890</div>
891<A NAME="shell"></A>
892<div class="jd-details api ">
893    <h4 class="jd-details-title">
894      <span class="normal">
895        <em>object</em>
896      </span>
897      <span class="sympad">shell</span>
898      <span class="normal">
899      (<em>string</em> cmd)
900      </span>
901    </h4>
902  <div class="jd-details-descr">
903    <div class="jd-tagdata jd-tagdescr">
904        <p>
905            Executes an <code>adb</code> shell command and returns the result, if any.
906        </p>
907    </div>
908    <div class="jd-tagdata">
909      <h5 class="jd-tagtitle">Arguments</h5>
910      <table class="jd-tagtable">
911        <tr>
912          <th>cmd</th>
913          <td>
914            The command to execute in the <code>adb</code> shell. The form of these commands is
915            described in the topic <a href="{@docRoot}tools/help/adb.html">Android
916            Debug Bridge</a>.
917          </td>
918        </tr>
919      </table>
920    </div>
921    <div class="jd-tagdata">
922      <h5 class="jd-tagtitle">Returns</h5>
923      <ul class="nolist">
924        <li>
925            The results of the command, if any. The format of the results is determined by the
926            command.
927        </li>
928      </ul>
929    </div>
930  </div>
931</div>
932<A NAME="startActivity"></A>
933<div class="jd-details api ">
934    <h4 class="jd-details-title">
935      <span class="normal">
936        void
937      </span>
938      <span class="sympad">startActivity</span>
939      <span class="normal">
940      (
941            <em>string</em> uri,
942            <em>string</em> action,
943            <em>string</em> data,
944            <em>string</em> mimetype,
945            <em>iterable</em> categories
946            <em>dictionary</em> extras,
947            <em>component</em> component,
948            <em>iterable</em> flags)
949      </span>
950    </h4>
951  <div class="jd-details-descr">
952    <div class="jd-tagdata jd-tagdescr">
953        <p>
954           Starts an Activity on this device by sending an Intent constructed from the
955           supplied arguments.
956        </p>
957    </div>
958    <div class="jd-tagdata">
959      <h5 class="jd-tagtitle">Arguments</h5>
960      <table class="jd-tagtable">
961        <tr>
962          <th>uri</th>
963          <td>
964            The URI for the Intent.
965            (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
966          </td>
967        </tr>
968        <tr>
969            <th>action</th>
970            <td>
971                The action for the Intent
972                (see {@link android.content.Intent#setAction(java.lang.String) Intent.setAction()}).
973            </td>
974        </tr>
975        <tr>
976            <th>data</th>
977            <td>
978                The data URI for the Intent
979                (see {@link android.content.Intent#setData(android.net.Uri) Intent.setData()}).
980            </td>
981        </tr>
982        <tr>
983            <th>mimetype</th>
984            <td>
985                The MIME type for the Intent
986                (see {@link android.content.Intent#setType(java.lang.String) Intent.setType()}).
987            </td>
988        </tr>
989        <tr>
990            <th>categories</th>
991            <td>
992                An iterable data structure containing strings that define categories for the
993                Intent
994                (see
995                {@link android.content.Intent#addCategory(java.lang.String) Intent.addCategory()}).
996            </td>
997        </tr>
998        <tr>
999            <th>extras</th>
1000            <td>
1001                A dictionary of extra data for the Intent
1002                (see
1003                {@link android.content.Intent#putExtra(java.lang.String,java.lang.String)
1004                Intent.putExtra()}
1005                for an example).
1006                <p>
1007                    The key for each dictionary item should be a <em>string</em>. The item's value
1008                    can be any simple or structured data type.
1009                </p>
1010            </td>
1011        </tr>
1012        <tr>
1013            <th>component</th>
1014            <td>
1015                The component for the Intent
1016                (see {@link android.content.ComponentName}). Using this argument will direct the
1017                Intent to a specific class within a specific Android package.
1018            </td>
1019        </tr>
1020        <tr>
1021            <th>flags</th>
1022            <td>
1023                An iterable data structure containing flags that control how the Intent is handled
1024                (see {@link android.content.Intent#setFlags(int) Intent.setFlags()}).
1025            </td>
1026        </tr>
1027      </table>
1028    </div>
1029  </div>
1030</div>
1031<A NAME="takeSnapshot"></A>
1032<div class="jd-details api ">
1033    <h4 class="jd-details-title">
1034      <span class="normal">
1035        <code>
1036            <a href="{@docRoot}tools/help/MonkeyImage.html">
1037                MonkeyImage
1038            </a>
1039        </code>
1040      </span>
1041      <span class="sympad">takeSnapshot</span>
1042      <span class="normal">
1043      ()
1044      </span>
1045    </h4>
1046  <div class="jd-details-descr">
1047    <div class="jd-tagdata jd-tagdescr">
1048        <p>
1049            Captures the entire screen buffer of this device, yielding a
1050            screen capture of the current display.
1051        </p>
1052    </div>
1053    <div class="jd-tagdata">
1054      <h5 class="jd-tagtitle">Returns</h5>
1055      <ul class="nolist">
1056        <li>
1057            A <a href="{@docRoot}tools/help/MonkeyImage.html">
1058            MonkeyImage</a> object containing the image of the current display.
1059        </li>
1060      </ul>
1061    </div>
1062  </div>
1063</div>
1064<A NAME="touch"></A>
1065<div class="jd-details api ">
1066    <h4 class="jd-details-title">
1067      <span class="normal">
1068        void
1069      </span>
1070      <span class="sympad">touch</span>
1071      <span class="normal">
1072      (
1073            <em>integer</em> x,
1074            <em>integer</em> y,
1075            <em>string</em> type)
1076      </span>
1077    </h4>
1078  <div class="jd-details-descr">
1079    <div class="jd-tagdata jd-tagdescr">
1080        <p>
1081            Sends a touch event specified by type to the screen location specified
1082            by x and y.
1083        </p>
1084    </div>
1085    <div class="jd-tagdata">
1086      <h5 class="jd-tagtitle">Arguments</h5>
1087      <table class="jd-tagtable">
1088        <tr>
1089          <th>x</th>
1090          <td>
1091            The horizontal position of the touch in actual device pixels, starting from the left of
1092            the screen in its current orientation.
1093          </td>
1094        </tr>
1095        <tr>
1096          <th>y</th>
1097          <td>
1098            The vertical position of the touch in actual device pixels, starting from the top of
1099            the screen in its current orientation.
1100          </td>
1101        </tr>
1102        <tr>
1103            <th>type</th>
1104            <td>
1105                The type of key event to send. The allowed values are <code><a href="#ACTION_DOWN">
1106                DOWN</a></code>, <code><a href="#ACTION_UP">UP</a></code>, and
1107                <code><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></code>.
1108            </td>
1109        </tr>
1110      </table>
1111    </div>
1112  </div>
1113</div>
1114<A NAME="type"></A>
1115<div class="jd-details api ">
1116    <h4 class="jd-details-title">
1117      <span class="normal">
1118        void
1119      </span>
1120      <span class="sympad">type</span>
1121      <span class="normal">
1122      (<em>string</em> message)
1123      </span>
1124    </h4>
1125  <div class="jd-details-descr">
1126    <div class="jd-tagdata jd-tagdescr">
1127        <p>
1128            Sends the characters contained in message to this device, as if they
1129            had been typed on the device's keyboard. This is equivalent to calling
1130            <code><a href="#press">press()</a></code> for each keycode in <code>message</code>
1131            using the key event type <code><a href="#ACTION_DOWN_AND_UP">DOWN_AND_UP</a></code>.
1132        </p>
1133    </div>
1134    <div class="jd-tagdata">
1135      <h5 class="jd-tagtitle">Arguments</h5>
1136      <table class="jd-tagtable">
1137        <tr>
1138          <th>message</th>
1139          <td>
1140              A string containing the characters to send.
1141          </td>
1142        </tr>
1143      </table>
1144    </div>
1145  </div>
1146</div>
1147<A NAME="wake"></A>
1148<div class="jd-details api">
1149    <h4 class="jd-details-title">
1150      <span class="normal">
1151        void
1152      </span>
1153      <span class="sympad">wake</span>
1154      <span class="normal">
1155      ()
1156      </span>
1157    </h4>
1158  <div class="jd-details-descr">
1159    <div class="jd-tagdata jd-tagdescr">
1160        <p>
1161            Wakes the screen of this device.
1162        </p>
1163    </div>
1164  </div>
1165</div>
1166<hr></hr>
1167<h2>Appendix</h2>
1168    <p class="table-caption" id="table1">
1169        <strong>Table 1.</strong>Property variable names used with
1170        <span class="sympad"><a href="#getProperty">getProperty()</a></span> and
1171        <span class="sympad"><a href="#getSystemProperty">getSystemProperty()</a></span>.
1172    </p>
1173    <table>
1174        <tr>
1175            <th>
1176                Property Group
1177            </th>
1178            <th>
1179                Property
1180            </th>
1181            <th>
1182                Description
1183            </th>
1184            <th>
1185                Notes
1186            </th>
1187        </tr>
1188        <tr>
1189            <td rowspan="17"><code>build</code></td>
1190            <td><code>board</code></td>
1191            <td>Code name for the device's system board</td>
1192            <td rowspan="17">
1193                See {@link android.os.Build}
1194            </td>
1195        </tr>
1196        <tr>
1197            <td><code>brand</code></td>
1198            <td>The carrier or provider for which the OS is customized.</td>
1199        </tr>
1200            <tr>
1201            <td><code>device</code></td>
1202            <td>The device design name.</td>
1203        </tr>
1204            <tr>
1205            <td><code>fingerprint</code></td>
1206            <td>A unique identifier for the currently-running build.</td>
1207        </tr>
1208            <tr>
1209            <td><code>host</code></td>
1210            <td></td>
1211        </tr>
1212            <tr>
1213            <td><code>ID</code></td>
1214            <td>A changelist number or label.</td>
1215        </tr>
1216            <tr>
1217            <td><code>model</code></td>
1218            <td>The end-user-visible name for the device.</td>
1219        </tr>
1220            <tr>
1221            <td><code>product</code></td>
1222            <td>The overall product name.</td>
1223        </tr>
1224            <tr>
1225            <td><code>tags</code></td>
1226            <td>Comma-separated tags that describe the build, such as "unsigned" and "debug".</td>
1227        </tr>
1228            <tr>
1229            <td><code>type</code></td>
1230            <td>The build type, such as "user" or "eng".</td>
1231        </tr>
1232        <tr>
1233            <td><code>user</code></td>
1234            <td></td>
1235        </tr>
1236        <tr>
1237            <td><code>CPU_ABI</code></td>
1238            <td>
1239                The name of the native code instruction set, in the form CPU type plus
1240                ABI convention.
1241            </td>
1242        </tr>
1243        <tr>
1244            <td><code>manufacturer</code></td>
1245            <td>The product/hardware manufacturer.</td>
1246        </tr>
1247        <tr>
1248            <td><code>version.incremental</code></td>
1249            <td>
1250                The internal code used by the source control system to represent this version
1251                of the software.
1252            </td>
1253        </tr>
1254        <tr>
1255            <td><code>version.release</code></td>
1256            <td>The user-visible name of this version of the software.</td>
1257        </tr>
1258        <tr>
1259            <td><code>version.sdk</code></td>
1260            <td>The user-visible SDK version associated with this version of the OS.</td>
1261        </tr>
1262        <tr>
1263            <td><code>version.codename</code></td>
1264            <td>
1265                The current development codename, or "REL" if this version of the software has been
1266                released.
1267            </td>
1268        </tr>
1269        <tr>
1270            <td rowspan="3"><code>display</code></td>
1271            <td><code>width</code></td>
1272            <td>The device's display width in pixels.</td>
1273            <td rowspan="3">
1274                See
1275                {@link android.util.DisplayMetrics} for details.
1276            </td>
1277        </tr>
1278        <tr>
1279            <td><code>height</code></td>
1280            <td>The device's display height in pixels.</td>
1281        </tr>
1282        <tr>
1283            <td><code>density</code></td>
1284            <td>
1285                The logical density of the display. This is a factor that scales
1286                DIP (Density-Independent Pixel) units to the device's resolution. DIP is adjusted so
1287                that 1 DIP is equivalent to one pixel on a 160 pixel-per-inch display. For example,
1288                on a 160-dpi screen, density = 1.0, while on a 120-dpi screen, density = .75.
1289                <p>
1290                    The value does not exactly follow the real screen size, but is adjusted to
1291                    conform to large changes in the display DPI. See
1292                    {@link android.util.DisplayMetrics#density} for more details.
1293                </p>
1294            </td>
1295        </tr>
1296        <tr>
1297            <td rowspan="6"><code>am.current</code></td>
1298            <td><code>package</code></td>
1299            <td>The Android package name of the currently running package.</td>
1300            <td rowspan="6">
1301                The <code>am.current</code> keys return information about the currently-running
1302                Activity.
1303            </td>
1304        </tr>
1305        <tr>
1306            <td><code>action</code></td>
1307            <td>
1308                The current activity's action. This has the same format as the <code>name</code>
1309                attribute of the <code>action</code> element in a package manifest.
1310            </td>
1311        </tr>
1312        <tr>
1313            <td><code>comp.class</code></td>
1314            <td>
1315                The class name of the component that started the current Activity. See
1316                <code><a href="#comppackage">comp.package</a></code> for more details.</td>
1317        </tr>
1318        <tr>
1319            <td><a name="comppackage"><code>comp.package</code></a></td>
1320            <td>
1321                The package name of the component that started the current Activity. A component
1322                is specified by a package name and the name of class that the package contains.
1323            </td>
1324        </tr>
1325        <tr>
1326            <td><code>data</code></td>
1327            <td>The data (if any) contained in the Intent that started the current Activity.</td>
1328        </tr>
1329        <tr>
1330            <td><code>categories</code></td>
1331            <td>The categories specified by the Intent that started the current Activity.</td>
1332        </tr>
1333        <tr>
1334            <td rowspan="3"><code>clock</code></td>
1335            <td><code>realtime</code></td>
1336            <td>
1337                The number of milliseconds since the device rebooted, including deep-sleep
1338                time.
1339            </td>
1340            <td rowspan="3">
1341                See {@link android.os.SystemClock} for more information.
1342            </td>
1343        </tr>
1344        <tr>
1345            <td><code>uptime</code></td>
1346            <td>
1347                The number of milliseconds since the device rebooted, <em>not</em> including
1348                deep-sleep time
1349            </td>
1350        </tr>
1351        <tr>
1352            <td><code>millis</code></td>
1353            <td>current time since the UNIX epoch, in milliseconds.</td>
1354        </tr>
1355    </table>
1356