Android
DemoTake Agent records an Android emulator or a USB phone straight from its screen through adb, logs every tap as a touch indicator, and lets your agent tap, type and swipe on the device.
What you need
| adb | From Android Studio or the SDK platform-tools. DemoTake finds it in ANDROID_HOME, ANDROID_SDK_ROOT or ~/Library/Android/sdk; choose another in Settings → Recording → Android. It doesn't have to be on your PATH. |
| A device | An emulator from Android Studio's Device Manager, or a phone with USB debugging on (allow this Mac on the phone the first time). |
| Edition | DemoTake Agent. DemoTake Studio, from the Mac App Store, can't run adb: record the emulator's window there and keep it visible. |
Screen Recording permission isn't needed for Android devices: DemoTake records the device itself.
Record a device
Start an emulator, or plug in a phone with USB debugging on. Open your app on it.
In Choose Window…, connected devices appear under Android with their Android version and screen size. Agents find them with targets_list as kind android and target id android:<serial>.
Record as usual. The emulator window can be covered, minimized or on another desktop; a phone can lie on your desk.
DemoTake asks the device's own screen recorder for its picture over adb and writes the take on your Mac. Nothing is installed on the device and nothing is saved to its storage. Frames arrive whenever the screen changes, so a still screen costs almost nothing. On Android versions that stop a screen recording after three minutes, DemoTake starts the next one straight away.
Taps become touch indicators
Taps you make on the device, or with the mouse in the emulator, are logged as they happen and render as a touch indicator: a soft circle with a ripple instead of a Mac arrow. A swipe is logged as a scroll. In 9:16 exports the device gets a phone frame, like iOS takes (Framing).
Let your agent drive
DemoTake Agent can operate the device for your agent, through adb, without touching your Mac's mouse:
| Tool | On Android |
|---|---|
pointer_click |
A tap on an element (found in the app's UI hierarchy, or by its text on screen) or a point; button: "right" is a long press |
keyboard_type |
Types into the focused field, or taps the field first |
keyboard_key |
back, home, recents, return, arrows, ctrl+a (Android 13 and later) or any KEYCODE_… |
pointer_scroll |
A swipe |
observe_state |
The UI hierarchy: classes, texts, resource ids and frames |
Apps that draw their own UI (many games, Flutter apps) have no readable hierarchy; DemoTake then reads the text on screen instead. Password fields are never shown in observe_state or the trace.
You can also drive the device with your own tools (adb, Appium, Maestro). Log each tap with take_log_event { "kind": "click", "point": { "x": 0.5, "y": 0.8 } } (normalized to the screen) or device_point in dp.
Store screenshots
screenshot_capture with target: "android:<serial>" captures the device at full resolution for the Google Play sizes; see Store screenshots.