Android accessibility annotation tool for capturing:
- Accessibility events
- Accessibility tree snapshots
- Optional screenshot snapshots linked to tree snapshots
Pre-1.0 prototype.
- Overlay start/stop control (transparent floating edge button)
- AccessibilityService-based event + tree capture
- Session XML output with strict event->snapshot mapping
- Optional screenshot capture (MediaProjection), delayed 2s after each event
- First screenshot at session start
- Rename recording file on stop
- One-tap open/share (including Feishu share fallback)
RecorderAccessibilityService: event listener + tree extractionSessionRecorder: recording lifecycle, buffering, snapshot-image mappingSessionXmlWriter: XML serializationOverlayControlService: persistent overlay controlSessionForegroundService: foreground recording lifecycleScreenCaptureManager: MediaProjection screenshot pipeline
Requirements:
- Android Studio (recent stable)
- JDK 17
Commands:
./gradlew clean assembleDebug- Install app
- Enable Accessibility Service
- Enable Overlay permission
- (Optional) Grant screen capture permission when prompted
- Start recording
- XML:
Android/data/com.annotation.recorder/files/sessions/<sessionId>.xml - Images:
Android/data/com.annotation.recorder/files/sessions/<sessionId>/images/<snapshotId>.png
treeSnapshots/snapshot@imagePath points to the linked image.
- Global raw touch coordinates are not available under standard Android app permissions.
- Coordinate fields are estimated from accessible node bounds.
- Screenshot capture depends on runtime MediaProjection consent.
Read:
See CONTRIBUTING.md.
MIT, see LICENSE.