feat(android-agent): Meilenstein 2 — sehen (Screenshot + ui_dump)

Screenshot via MediaProjection (ScreenCapturer, gleicher {format,bytes,base64}-
Vertrag wie der Desktop-Agent -> host_screenshot, inkl. Vision). UI-Baum via
AriaAccessibilityService (nur lesend) -> neues Brain-Tool host_ui_dump. Freigabe
einmalig in der App: 'Bildschirm-Zugriff erlauben' + 'Bedienungshilfe oeffnen'.
caps = [info, screenshot, ui_dump]. targetSdk 33 -> keine mediaProjection-FGS-
Typpflicht.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-09-24 20:22:52 +02:00
co-authored by Claude Opus 4.8
parent 1ad85fb687
commit be202b1fa1
11 changed files with 395 additions and 11 deletions
+9 -5
View File
@@ -103,11 +103,14 @@ identisch, nur der Wecker ändert sich.
## Meilensteine
1. **Verbinden + sichtbar** — Gradle-Projekt, AndroidManifest, RVS-WS-Client,
1. **✅ Verbinden + sichtbar** — Gradle-Projekt, AndroidManifest, RVS-WS-Client,
Foreground-Service, Connect-UI (QR-Scan + manuell), `host_hello`/`host_ping`.
→ Agent erscheint in der Diagnostic. Noch keine Steuerung.
2. **Sehen** — MediaProjection-Screenshot + `ui_dump` (AccessibilityService,
read-only). → ARIA kann den Schirm ansehen und beschreiben.
→ Agent erscheint in der Diagnostic. `info` funktioniert.
2. **✅ Sehen** — MediaProjection-Screenshot (`ScreenCapturer`, gleicher
`{format,bytes,base64}`-Vertrag wie der Desktop-Agent → `host_screenshot`) +
`ui_dump` (`AriaAccessibilityService`, nur lesend → Brain-Tool `host_ui_dump`).
Freigabe einmalig in der App: „Bildschirm-Zugriff erlauben" + „Bedienungshilfe
öffnen". → ARIA sieht den Schirm und liest die UI-Elemente mit Koordinaten.
3. **Steuern** — `ui_tap`/`ui_text`/`ui_swipe`/`ui_key`/`app_launch` über den
AccessibilityService. → ARIA bedient Apps (E-Mail-Setup).
4. **Feinschliff** — `info`/`app_list`/`notify`, Build-Härtung, `release.sh`
@@ -124,4 +127,5 @@ cd host-agent/android
APK wird manuell aufs Zielgerät kopiert + installiert (unbekannte Quellen
erlauben). Gitea-Release macht den Download einfach (wie die Haupt-App).
> Status: **Design.** Als Nächstes Meilenstein 1 (Verbinden + sichtbar).
> Status: **M1 + M2 fertig** (verbinden, `info`, `screenshot`, `ui_dump`).
> Als Nächstes Meilenstein 3 (Steuern).