diff --git a/web/monitor.py b/web/monitor.py index 52f33c8..dcfca73 100644 --- a/web/monitor.py +++ b/web/monitor.py @@ -542,6 +542,25 @@ def api_screen_text(): return jsonify({"ok": False, "error": f"输入失败: {e}"}), 503 +@bp.route("/api/screen/size") +@perm_required(PERM_DEVICES) +def api_screen_size(): + """屏幕原生分辨率(只读,供 MCP 坐标换算:截图是缩放图,操作需原生坐标)。 + + 返回 {ok, width, height}(如 1080x2400);离线/不可达 → 503。 + """ + serial = request.args.get("serial", "") + if not serial: + return jsonify({"ok": False, "error": "缺少 serial"}), 400 + try: + d = _screen_get_device(serial) + w, h = d.window_size() + return jsonify({"ok": True, "width": w, "height": h}) + except Exception as e: + _screen_invalidate(serial) + return jsonify({"ok": False, "error": f"获取分辨率失败: {e}"}), 503 + + # ================== API:应用管理(APK 上传/安装)================== def _current_focus_pkg(serial):