You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
4.1 KiB
130 lines
4.1 KiB
SIMPLE PROTOCOL FOR AUTOMATED NETWORK CONTROL
|
|
|
|
The Simple Protocol for Automated Network Control was designed to be a
|
|
low-level way to programmability inject KeyEvents and MotionEvents
|
|
into the input system. The idea is that a process will run on a host
|
|
computer that will support higher-level operations (like conditionals,
|
|
etc.) and will talk (via TCP over ADB) to the device in Simple
|
|
Protocol for Automated Network Control. For security reasons, the
|
|
Monkey only binds to localhost, so you will need to use adb to setup
|
|
port forwarding to actually talk to the device.
|
|
|
|
INITIAL SETUP
|
|
|
|
Setup port forwarding from a local port on your machine to a port on
|
|
the device:
|
|
|
|
$ adb forward tcp:1080 tcp:1080
|
|
|
|
Start the monkey server
|
|
|
|
$ adb shell monkey --port 1080
|
|
|
|
Now you're ready to run commands
|
|
|
|
COMMAND LIST
|
|
|
|
Individual commands are separated by newlines. The Monkey will
|
|
respond to every command with a line starting with OK for commands
|
|
that executed without a problem, or a line starting with ERROR for
|
|
commands that had problems being run. For commands that return a
|
|
value, that value is returned on the same line as the OK or ERROR
|
|
response. The value is everything after (but not include) the colon
|
|
on that line. For ERROR values, this could be a message indicating
|
|
what happened. A possible example:
|
|
|
|
key down menu
|
|
OK
|
|
touch monkey
|
|
ERROR: monkey not a number
|
|
getvar sdk
|
|
OK: donut
|
|
getvar foo
|
|
ERROR: no such var
|
|
|
|
The complete list of commands follows:
|
|
|
|
key [down|up] keycode
|
|
|
|
This command injects KeyEvent's into the input system. The keycode
|
|
parameter refers to the KEYCODE list in the KeyEvent class
|
|
(http://developer.android.com/reference/android/view/KeyEvent.html).
|
|
The format of that parameter is quite flexible. Using the menu key as
|
|
an example, it can be 82 (the integer value of the keycode),
|
|
KEYCODE_MENU (the name of the keycode), or just menu (and the Monkey
|
|
will add the KEYCODE part). Do note that this last part doesn't work
|
|
for things like KEYCODE_1 for obvious reasons.
|
|
|
|
Note that sending a full button press requires sending both the down
|
|
and the up event for that key
|
|
|
|
touch [down|up|move] x y
|
|
|
|
This command injects a MotionEvent into the input system that
|
|
simulates a user touching the touchscreen (or a pointer event). x and
|
|
y specify coordinates on the display (0 0 being the upper left) for
|
|
the touch event to happen. Just like key events, touch events at a
|
|
single location require both a down and an up. To simulate dragging,
|
|
send a "touch down", then a series of "touch move" events (to simulate
|
|
the drag), followed by a "touch up" at the final location.
|
|
|
|
trackball dx dy
|
|
|
|
This command injects a MotionEvent into the input system that
|
|
simulates a user using the trackball. dx and dy indicates the amount
|
|
of change in the trackball location (as opposed to exact coordinates
|
|
that the touch events use)
|
|
|
|
flip [open|close]
|
|
|
|
This simulates the opening or closing the keyboard (like on dream).
|
|
|
|
wake
|
|
|
|
This command will wake the device up from sleep and allow user input.
|
|
|
|
tap x y
|
|
The tap command is a shortcut for the touch command. It will
|
|
automatically send both the up and the down event.
|
|
|
|
press keycode
|
|
|
|
The press command is a shortcut for the key command. The keycode
|
|
paramter works just like the key command and will automatically send
|
|
both the up and the down event.
|
|
|
|
type string
|
|
|
|
This command will simulate a user typing the given string on the
|
|
keyboard by generating the proper KeyEvents.
|
|
|
|
listvar
|
|
|
|
This command lists all the vars that the monkey knows about. They are
|
|
returned as a whitespace separated list.
|
|
|
|
getvar varname
|
|
|
|
This command returns the value of the given var. listvar can be used
|
|
to find out what vars are supported.
|
|
|
|
quit
|
|
|
|
Fully quit the monkey and accept no new sessions.
|
|
|
|
done
|
|
|
|
Close the current session and allow a new session to connect
|
|
|
|
OTHER NOTES
|
|
|
|
There are some convenience features added to allow running without
|
|
needing a host process.
|
|
|
|
Lines starting with a # character are considered comments. The Monkey
|
|
eats them and returns no indication that it did anything (no ERROR and
|
|
no OK).
|
|
|
|
You can put the Monkey to sleep by using the "sleep" command with a
|
|
single argument, how many ms to sleep.
|