Files
agentic-mobile-control/tools/describe_screen.py
T
2026-07-16 08:13:04 +08:00

34 lines
1.0 KiB
Python

from __future__ import annotations
import logging
from core.models import Scene
from device.manager import DeviceManager
from perception.ocr import PaddleOCREngine
from perception.provider import DefaultPerceptionProvider, PerceptionProvider
from tools._device import get_active_app_info, get_driver
logger = logging.getLogger(__name__)
def describe_screen(
device_id: str | None = None,
*,
manager: DeviceManager | None = None,
ocr_engine: PaddleOCREngine | None = None,
perception_provider: PerceptionProvider | None = None,
) -> Scene:
driver = get_driver(device_id, manager=manager)
screenshot = driver.screenshot()
try:
raw_tree = driver.tree()
except Exception:
logger.warning(
"UI tree retrieval failed; continuing without UI tree", exc_info=True
)
raw_tree = None
provider = perception_provider or DefaultPerceptionProvider(ocr_engine=ocr_engine)
scene = provider.build_scene(screenshot, raw_tree)
scene.active_app = get_active_app_info(driver)
return scene