B2BÍøÂçÈí¼þ

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á ÉóºËÍøÕ¾ºÅ:QQ:896757558
ËÑË÷
²é¿´: 6|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

½âÎöKimi·µ»ØµÄÍ϶¯¾àÀëʾÀý

[¸´ÖÆÁ´½Ó]

1137

Ö÷Ìâ

1142

Ìû×Ó

7825

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7825
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷

½âÎöKimi·µ»ØµÄÍ϶¯¾àÀëʾÀý
½âÎöKimi·µ»ØµÄÍ϶¯¾àÀëʾÀý B2BÍøÂçÈí¼þ

  1. // AIWROK ×Ô¶¯»¯Á÷³Ì£º½ØÍ¼BÕ¾ÑéÖ¤Âë ¡ú Æô¶¯KimiÖúÊÖ ¡ú ·¢ËͽØÍ¼Ñ¯ÎÊÍ϶¯¾àÀë ¡ú ²É¼¯»Ø´ð ¡ú ÇлØBÕ¾Í϶¯»¬¿é
  2. // °üÃû£ºcom.moonshot.kimichat£¨Kimi AI£©
  3. //
  4. // ʹÓÃ˵Ã÷£º
  5. //   1. ÔÚBÕ¾ÑéÖ¤ÂëÒ³ÃæÔËÐнű¾
  6. //   2. ½Å±¾×Ô¶¯½ØÍ¼²¢·¢Ë͸øKimiʶ±ð
  7. //   3. ½âÎöKimi·µ»ØµÄÍ϶¯¾àÀ룬ÇлØBÕ¾Í϶¯»¬¿é
  8. //   4. KimiʹÓÃWebView/ComposeäÖȾ£¬XML¿ÉÄÜÎÞ¿ÉÓýڵ㣬¹Ê²ÉÓÃOCRÓÅÏÈ+×ø±ê¶µµ×²ßÂÔ

  9. print.log("===== KIMIʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³ÌÆô¶¯ =====");
  10. print.time();

  11. // ========== ÅäÖÃÇø ==========
  12. var KIMI°üÃû = "com.moonshot.kimichat";
  13. var BÕ¾°üÃû = "tv.danmaku.bili";
  14. var ½ØÍ¼±£´æÂ·¾¶ = "/sdcard/ÑéÖ¤Âë½ØÍ¼.png";

  15. var µÈ´ý»Ø´ð³¬Ê±Ãë = 60;
  16. var »Ø´ðÊä³öµÈ´ýÃë = 60;
  17. var »¬¿éУ׼ϵÊý = 1.0;

  18. var ÌáÎÊ»°Êõ = "Çë°ïÎÒ·ÖÎöÕâÕÅͼƬ£¬¸æËßÎÒ×ó±ßµÄ·½¿éÐèÒªÏòÓÒÒÆ¶¯¶àÉÙÏñËØ²ÅÄܺÍÓұߵÄȱ¿Ú¶ÔÆë£¬Ö»Êä³ö£º¾àÀë¼ÓÊý×Ö¡£";

  19. // ========== »ñÈ¡É豸ÐÅÏ¢ ==========
  20. var ÆÁÄ»¿í = screen.getScreenWidth();
  21. var ÆÁÄ»¸ß = screen.getScreenHeight();
  22. var ÑéÖ¤Â뻬¿é¾àÀë = null;
  23. print.log("ÆÁÄ»³ß´ç£º" + ÆÁÄ»¿í + " x " + ÆÁÄ»¸ß);
  24. try {
  25.     var ´úÀí״̬ = agent.isOpen();
  26.     print.log("´úÀí״̬£º" + (´úÀí״̬ ? "ÒÑ¿ªÆô" : "먦Æô"));
  27. } catch (e) {
  28.     print.log("´úÀí״̬¼ì²éʧ°Ü£º" + e.message);
  29. }

  30. // ========== ¹¤¾ßº¯Êý ==========

  31. function »ñÈ¡UI() {
  32.     var xml = agent.getXml();
  33.     return "" + xml;
  34. }

  35. function ×Ö·û´®³¤¶È(s) {
  36.     var str = "" + s;
  37.     return str.length;
  38. }

  39. function ½âÂëHTMLʵÌå(s) {
  40.     var str = "" + s;
  41.     str = str.replace(/
  42. /g, "\n");
  43.     str = str.replace(/
  44. /g, "\r");
  45.     str = str.replace(/        /g, "\t");
  46.     str = str.replace(/'/g, "'");
  47.     str = str.replace(/"/g, '"');
  48.     str = str.replace(/"/g, '"');
  49.     str = str.replace(/'/g, "'");
  50.     str = str.replace(/&/g, "&");
  51.     str = str.replace(/</g, "<");
  52.     str = str.replace(/>/g, ">");
  53.     return str;
  54. }

  55. function »ñÈ¡µ±Ç°×îºóAI»Ø´ð(xml) {
  56.     var »Ø´ðÁбí = ²É¼¯AI»Ø´ðÁбí(xml);
  57.     if (»Ø´ðÁбí.length === 0) return "";
  58.    
  59.     print.log("µ÷ÊÔ£º»Ø´ðÁÐ±í¹²" + »Ø´ðÁбí.length + "Ìõ£º" + »Ø´ðÁбí.join(", "));
  60.    
  61.     var ºòÑ¡»Ø´ð = [];
  62.     for (var i = 0; i < »Ø´ðÁбí.length; i++) {
  63.         var »Ø´ð = »Ø´ðÁбí[i];
  64.         if (»Ø´ð.indexOf("¾àÀë") !== -1 || »Ø´ð.indexOf("ÏñËØ") !== -1) {
  65.             ºòÑ¡»Ø´ð.push({ text: »Ø´ð, len: »Ø´ð.length });
  66.         }
  67.     }
  68.    
  69.     if (ºòÑ¡»Ø´ð.length > 0) {
  70.         ºòÑ¡»Ø´ð.sort(function(a, b) { return a.len - b.len; });
  71.         print.log("✓ ÕÒµ½°üº¬¾àÀëÐÅÏ¢µÄ»Ø´ð£¬Ñ¡Ôñ×î¶ÌµÄ£º'" + ºòÑ¡»Ø´ð[0].text + "'");
  72.         return ºòÑ¡»Ø´ð[0].text;
  73.     }
  74.    
  75.     for (var j = 0; j < »Ø´ðÁбí.length; j++) {
  76.         var »Ø´ð2 = »Ø´ðÁбí[j];
  77.         var Êý×ÖÆ¥Åä = »Ø´ð2.match(/\d+/g);
  78.         if (Êý×ÖÆ¥Åä && Êý×ÖÆ¥Åä.length > 0) {
  79.             var Êý×Ö = parseInt(Êý×ÖÆ¥Åä[0]);
  80.             if (Êý×Ö >= 10 && Êý×Ö <= 500) {
  81.                 print.log("✓ ÕÒµ½°üº¬ºÏÀíÊý×ֵĻشð£º'" + »Ø´ð2 + "'");
  82.                 return »Ø´ð2;
  83.             }
  84.         }
  85.     }
  86.    
  87.     return »Ø´ðÁбí[»Ø´ðÁбí.length - 1];
  88. }

  89. function OCRʶ±ðÆÁÄ»ÇøÓò(xml) {
  90.     try {
  91.         var img = screen.screenShotFull();
  92.         
  93.         var ocrres = img.MLKitOcr('zhs');
  94.         var ocrText = "";
  95.         
  96.         if (ocrres && typeof ocrres.getAllString === 'function') {
  97.             ocrText = "" + ocrres.getAllString();
  98.         } else if (ocrres && typeof ocrres.getJsonString === 'function') {
  99.             var jsonStr = "" + ocrres.getJsonString();
  100.             var textPattern = /"text"\s*:\s*"([^"]+)"/g;
  101.             var match;
  102.             var allText = [];
  103.             while ((match = textPattern.exec(jsonStr)) !== null) {
  104.                 if (match[1] && match[1].length > 0) {
  105.                     allText.push(match[1]);
  106.                 }
  107.             }
  108.             ocrText = allText.join("\n");
  109.         } else {
  110.             var str = "" + ocrres;
  111.             var textPattern2 = /"text"\s*:\s*"([^"]+)"/g;
  112.             var match2;
  113.             var allText2 = [];
  114.             while ((match2 = textPattern2.exec(str)) !== null) {
  115.                 if (match2[1] && match2[1].length > 0) {
  116.                     allText2.push(match2[1]);
  117.                 }
  118.             }
  119.             ocrText = allText2.join("\n");
  120.         }
  121.         
  122.         img.recycle();
  123.         
  124.         if (ocrText && ocrText.length > 0) {
  125.             print.log("✓ MLKitOcrʶ±ð³É¹¦");
  126.             print.log("--- OCR½á¹û¿ªÊ¼ ---");
  127.             print.log(ocrText);
  128.             print.log("--- OCR½á¹û½áÊø ---");
  129.             return "" + ocrText;
  130.         }
  131.         
  132.         print.log("⚠ MLKitOcrδʶ±ðµ½ÄÚÈÝ");
  133.         return "";
  134.     } catch (e) {
  135.         print.log("⚠ OCRʶ±ðÒì³££º" + e.message);
  136.         return "";
  137.     }
  138. }

  139. function ÌáÈ¡Êý×Ö(Îı¾) {
  140.     var str = "" + Îı¾;
  141.     var ¾«È·Æ¥Åä = str.match(/¾àÀë¼Ó(\d+)/);
  142.     if (¾«È·Æ¥Åä) {
  143.         var num = parseInt(¾«È·Æ¥Åä[1]);
  144.         if (num >= 30) {
  145.             return "" + num;
  146.         }
  147.     }
  148.     var ±¸Ñ¡Æ¥Åä = str.match(/¾àÀ뾫[\u51c6\u79ef\u786e]¼Ó?(\d+)/);
  149.     if (±¸Ñ¡Æ¥Åä) {
  150.         var num2 = parseInt(±¸Ñ¡Æ¥Åä[1]);
  151.         if (num2 >= 30) {
  152.             return "" + num2;
  153.         }
  154.     }
  155.     var ¾àÀëÆ¥Åä = str.match(/¾àÀë[\uFF0C,\s]*(\d+)/);
  156.     if (¾àÀëÆ¥Åä) {
  157.         var num3 = parseInt(¾àÀëÆ¥Åä[1]);
  158.         if (num3 >= 30) {
  159.             return "" + num3;
  160.         }
  161.     }
  162.     var allMatches = str.match(/\d+/g);
  163.     if (allMatches) {
  164.         var ºòÑ¡Êý×Ö = [];
  165.         for (var i = 0; i < allMatches.length; i++) {
  166.             var n = parseInt(allMatches[i]);
  167.             if (n >= 30 && n < 1000) {
  168.                 ºòÑ¡Êý×Ö.push(n);
  169.             }
  170.         }
  171.         if (ºòÑ¡Êý×Ö.length > 0) {
  172.             ºòÑ¡Êý×Ö.sort(function(a, b) { return b - a; });
  173.             return "" + ºòÑ¡Êý×Ö[0];
  174.         }
  175.         var allNums = [];
  176.         for (var j = 0; j < allMatches.length; j++) {
  177.             allNums.push(parseInt(allMatches[j]));
  178.         }
  179.         allNums.sort(function(a, b) { return b - a; });
  180.         return "" + allNums[0];
  181.     }
  182.     return "";
  183. }

  184. function ²É¼¯AI»Ø´ðÁбí(xml) {
  185.     var xmlStr = "" + xml;
  186.     var »Ø´ðÁбí = [];

  187.     var textViewPattern = /<node[^>]*?text="([^"]+)"[^>]*?class="android\.widget\.TextView"[^>]*?\/?>/g;
  188.     var tvMatch;
  189.     while ((tvMatch = textViewPattern.exec(xmlStr)) !== null) {
  190.         if (tvMatch[1] && ×Ö·û´®³¤¶È(tvMatch[1]) > 1) {
  191.             var ԭʼÎı¾ = tvMatch[1];
  192.             var ½âÂëÎı¾ = ½âÂëHTMLʵÌå(ԭʼÎı¾);
  193.             
  194.             if (½âÂëÎı¾.includes("¸øKimi·¢ÏûÏ¢") ||
  195.                 ½âÂëÎı¾.includes("ÓÐÎÊÌ⾡¹ÜÎÊÎÒ") ||
  196.                 ½âÂëÎı¾.includes("ÅÄÕÕ½âÌâ") ||
  197.                 ½âÂëÎı¾.includes("Éî¶ÈÑо¿") ||
  198.                 ½âÂëÎı¾.includes("OK Computer") ||
  199.                 ½âÂëÎı¾.includes("·¢ËÍ") ||
  200.                 ½âÂëÎı¾.includes("ÏûÏ¢")) {
  201.                 continue;
  202.             }
  203.             
  204.             if (!»Ø´ðÁбí.includes(½âÂëÎı¾)) {
  205.                 »Ø´ðÁбí.push(½âÂëÎı¾);
  206.                 print.log("✓ ÔÚTextViewÖÐÕÒµ½Îı¾: '" + ½âÂëÎı¾ + "'");
  207.             }
  208.         }
  209.     }

  210.     if (»Ø´ðÁбí.length === 0) {
  211.         print.log("⚠ δÕÒµ½AI»Ø´ð½Úµã");
  212.     } else {
  213.         print.log("✓ ²É¼¯µ½" + »Ø´ðÁбí.length + "ÌõAI»Ø´ð");
  214.     }

  215.     return »Ø´ðÁбí;
  216. }

  217. function È«ÆÁ½ØÍ¼(±£´æÂ·¾¶) {
  218.     try {
  219.         var result = agent.shell("screencap -p " + ±£´æÂ·¾¶);
  220.         print.log("✓ ½ØÍ¼ÃüÁîÖ´ÐУº" + result);
  221.         
  222.         var lsResult = agent.shell("ls -la " + ±£´æÂ·¾¶);
  223.         print.log("✓ ½ØÍ¼Îļþ¼ì²é£º" + lsResult);
  224.         
  225.         return true;
  226.     } catch (e) {
  227.         print.log("⚠ ½ØÍ¼Ê§°Ü£º" + e.message);
  228.         return false;
  229.     }
  230. }

  231. function ÅжÏKIMI´ò¿ªÐÎʽ(xml) {
  232.     var xmlStr = "" + xml;
  233.    
  234.     var inputKeywords = ["¸øKimi·¢ÏûÏ¢", "ÓÐÎÊÌ⾡¹ÜÎÊÎÒ", "ÊäÈëÏûÏ¢", "·¢ÏûÏ¢"];
  235.     var hasInput = false;
  236.     for (var i = 0; i < inputKeywords.length; i++) {
  237.         if (xmlStr.indexOf('text="' + inputKeywords[i] + '"') !== -1) {
  238.             hasInput = true;
  239.             break;
  240.         }
  241.     }
  242.    
  243.     var plusKeywords = ["¼ÓºÅ", "¸½¼þ", "ͼƬ", "Ïà²á"];
  244.     var hasPlus = false;
  245.     for (var j = 0; j < plusKeywords.length; j++) {
  246.         if (xmlStr.indexOf('text="' + plusKeywords[j] + '"') !== -1 ||
  247.             xmlStr.indexOf('content-desc="' + plusKeywords[j] + '"') !== -1) {
  248.             hasPlus = true;
  249.             break;
  250.         }
  251.     }
  252.    
  253.     if (hasInput || hasPlus) {
  254.         print.log("✓ Kimi APP´ò¿ªÐÎʽ£º¶Ô»°Ò³Ãæ");
  255.         return "¶Ô»°Ò³";
  256.     }
  257.    
  258.     print.log("⚠ Kimi APP´ò¿ªÐÎʽ£ºÎ´ÖªÒ³Ãæ");
  259.     return "δ֪";
  260. }

  261. function ¿ªÆôжԻ°(xml) {
  262.     var xmlStr = "" + xml;
  263.    
  264.     var newChatIdx = xmlStr.indexOf('content-desc="¿ªÆôлỰ"');
  265.     if (newChatIdx !== -1) {
  266.         var ¶Î = xmlStr.substring(newChatIdx);
  267.         var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  268.         if (m) {
  269.             var x = (parseInt(m[1]) + parseInt(m[3])) / 2;
  270.             var y = (parseInt(m[2]) + parseInt(m[4])) / 2;
  271.             agent.click(x, y);
  272.             print.log("✓ Òѵã»÷¿ªÆôжԻ°°´Å¥£¬content-desc=¿ªÆôлỰ£¬×ø±ê(" + Math.round(x) + "," + Math.round(y) + ")");
  273.             sleep.second(Ãë = 3);
  274.             return true;
  275.         }
  276.     }
  277.    
  278.     var rightButtonPattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  279.     var rbMatch;
  280.     var ÓÒÉϽǰ´Å¥ = [];
  281.     while ((rbMatch = rightButtonPattern.exec(xmlStr)) !== null) {
  282.         var bx1 = parseInt(rbMatch[1]);
  283.         var by1 = parseInt(rbMatch[2]);
  284.         if (bx1 > ÆÁÄ»¿í * 0.85 && by1 > 100 && by1 < 400) {
  285.             ÓÒÉϽǰ´Å¥.push({ x: (bx1 + parseInt(rbMatch[3])) / 2, y: (by1 + parseInt(rbMatch[4])) / 2 });
  286.         }
  287.     }
  288.    
  289.     if (ÓÒÉϽǰ´Å¥.length > 0) {
  290.         ÓÒÉϽǰ´Å¥.sort(function(a, b) { return a.x - b.x; });
  291.         var ×îÓұ߰´Å¥ = ÓÒÉϽǰ´Å¥[ÓÒÉϽǰ´Å¥.length - 1];
  292.         agent.click(×îÓұ߰´Å¥.x, ×îÓұ߰´Å¥.y);
  293.         print.log("✓ Òѵã»÷ÓÒÉϽǰ´Å¥¿ªÆôжԻ°£¬×ø±ê(" + Math.round(×îÓұ߰´Å¥.x) + "," + Math.round(×îÓұ߰´Å¥.y) + ")");
  294.         sleep.second(Ãë = 3);
  295.         return true;
  296.     }
  297.    
  298.     print.log("⚠ δÕÒµ½¿ªÆôжԻ°°´Å¥£¬Ê¹ÓÃ×ø±ê¶µµ×£¨ÓÒÉϽǣ©");
  299.     var ¶µµ×X = ÆÁÄ»¿í * 0.96;
  300.     var ¶µµ×Y = ÆÁÄ»¸ß * 0.06;
  301.     agent.click(¶µµ×X, ¶µµ×Y);
  302.     print.log("✓ Òѵã»÷ÓÒÉϽǶµµ×λÖÿªÆôжԻ°£¬×ø±ê(" + Math.round(¶µµ×X) + "," + Math.round(¶µµ×Y) + ")");
  303.     sleep.second(Ãë = 3);
  304.     return true;
  305. }

  306. function ²éÕÒÊäÈë¿òÖÐÐÄ(xml) {
  307.     var xmlStr = "" + xml;
  308.    
  309.     var inputKeywords = ["ÓÐÎÊÌ⾡¹ÜÎÊÎÒ...", "¸øKimi·¢ÏûÏ¢", "ÊäÈëÏûÏ¢", "·¢ÏûÏ¢", "½Ó×ÅÎÊ"];
  310.     for (var i = 0; i < inputKeywords.length; i++) {
  311.         var kw = inputKeywords[i];
  312.         var inputIdx = xmlStr.indexOf('text="' + kw + '"');
  313.         if (inputIdx !== -1) {
  314.             var ¶Î = xmlStr.substring(inputIdx);
  315.             var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  316.             if (m) {
  317.                 var x1 = parseInt(m[1]);
  318.                 var y1 = parseInt(m[2]);
  319.                 var x2 = parseInt(m[3]);
  320.                 var y2 = parseInt(m[4]);
  321.                 print.log("✓ ÊäÈë¿ò¶¨Î»£ºtext=" + kw + "£¬bounds=[" + x1 + "," + y1 + "][" + x2 + "," + y2 + "]");
  322.                 return {
  323.                     x: (x1 + x2) / 2,
  324.                     y: (y1 + y2) / 2
  325.                 };
  326.             }
  327.         }
  328.     }

  329.     var editTextIdx = xmlStr.indexOf('class="android.widget.EditText"');
  330.     if (editTextIdx !== -1) {
  331.         var ¶Î2 = xmlStr.substring(editTextIdx);
  332.         var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  333.         if (m2) {
  334.             var x1 = parseInt(m2[1]);
  335.             var y1 = parseInt(m2[2]);
  336.             var x2 = parseInt(m2[3]);
  337.             var y2 = parseInt(m2[4]);
  338.             print.log("✓ ÊäÈë¿ò¶¨Î»£¨EditText£©£ºbounds=[" + x1 + "," + y1 + "][" + x2 + "," + y2 + "]");
  339.             return {
  340.                 x: (x1 + x2) / 2,
  341.                 y: (y1 + y2) / 2
  342.             };
  343.         }
  344.     }

  345.     var viewFactoryHolderIdx = xmlStr.indexOf('class="androidx.compose.ui.viewinterop.ViewFactoryHolder"');
  346.     if (viewFactoryHolderIdx !== -1) {
  347.         var ¶Î3 = xmlStr.substring(viewFactoryHolderIdx);
  348.         var m3 = ¶Î3.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  349.         if (m3) {
  350.             var x1 = parseInt(m3[1]);
  351.             var y1 = parseInt(m3[2]);
  352.             var x2 = parseInt(m3[3]);
  353.             var y2 = parseInt(m3[4]);
  354.             print.log("✓ ÊäÈë¿ò¶¨Î»£¨ViewFactoryHolder£©£ºbounds=[" + x1 + "," + y1 + "][" + x2 + "," + y2 + "]");
  355.             return {
  356.                 x: (x1 + x2) / 2,
  357.                 y: (y1 + y2) / 2
  358.             };
  359.         }
  360.     }

  361.     print.log("⚠ δÕÒµ½ÊäÈë¿ò£¬Ê¹ÓÃ×ø±ê¶µµ×£¨ÆÁĻϷ½ÇøÓò£©");
  362.     return {
  363.         x: ÆÁÄ»¿í * 0.35,
  364.         y: ÆÁÄ»¸ß * 0.55
  365.     };
  366. }

  367. function ²éÕҼӺŰ´Å¥(xml) {
  368.     var xmlStr = "" + xml;
  369.    
  370.     var plusDescIdx = xmlStr.indexOf('content-desc="¸ü¶àÊäÈ뷽ʽ"');
  371.     if (plusDescIdx !== -1) {
  372.         var ¶Î = xmlStr.substring(plusDescIdx);
  373.         var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  374.         if (m) {
  375.             var x1 = parseInt(m[1]);
  376.             var y1 = parseInt(m[2]);
  377.             var x2 = parseInt(m[3]);
  378.             var y2 = parseInt(m[4]);
  379.             var centerX = (x1 + x2) / 2;
  380.             var centerY = (y1 + y2) / 2;
  381.             print.log("✓ ¼ÓºÅ°´Å¥¶¨Î»£ºcontent-desc=¸ü¶àÊäÈ뷽ʽ£¬×ø±ê(" + Math.round(centerX) + "," + Math.round(centerY) + ")");
  382.             return { x: centerX, y: centerY };
  383.         }
  384.     }

  385.     var inputIdx = xmlStr.indexOf('text="ÓÐÎÊÌ⾡¹ÜÎÊÎÒ..."');
  386.     if (inputIdx === -1) {
  387.         inputIdx = xmlStr.indexOf('text="¸øKimi·¢ÏûÏ¢"');
  388.     }
  389.     if (inputIdx === -1) {
  390.         inputIdx = xmlStr.indexOf('text="ÓÐÎÊÌ⾡¹ÜÎÊÎÒ"');
  391.     }
  392.    
  393.     if (inputIdx !== -1) {
  394.         var ÊäÈë¿ò¶Î = xmlStr.substring(inputIdx);
  395.         var ÊäÈë¿ò±ß½ç = ÊäÈë¿ò¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  396.         if (ÊäÈë¿ò±ß½ç) {
  397.             var ÊäÈë¿òX2 = parseInt(ÊäÈë¿ò±ß½ç[3]);
  398.             var ÊäÈë¿òY = parseInt(ÊäÈë¿ò±ß½ç[2]);
  399.             var ÊäÈë¿òµ×²¿Y = parseInt(ÊäÈë¿ò±ß½ç[4]);
  400.             var ÊäÈë¿òÖÐÐÄY = (ÊäÈë¿òY + ÊäÈë¿òµ×²¿Y) / 2;
  401.             
  402.             var clickablePattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  403.             var clickMatch;
  404.             var ºòÑ¡°´Å¥ = [];
  405.             
  406.             while ((clickMatch = clickablePattern.exec(xmlStr)) !== null) {
  407.                 var bx1 = parseInt(clickMatch[1]);
  408.                 var by1 = parseInt(clickMatch[2]);
  409.                 var bx2 = parseInt(clickMatch[3]);
  410.                 var by2 = parseInt(clickMatch[4]);
  411.                
  412.                 if (by1 >= ÊäÈë¿òÖÐÐÄY - 100 && by2 <= ÊäÈë¿òÖÐÐÄY + 200 && bx1 > ÊäÈë¿òX2 - 50) {
  413.                     ºòÑ¡°´Å¥.push({ x: (bx1 + bx2) / 2, y: (by1 + by2) / 2 });
  414.                 }
  415.             }
  416.             
  417.             if (ºòÑ¡°´Å¥.length > 0) {
  418.                 ºòÑ¡°´Å¥.sort(function(a, b) { return a.x - b.x; });
  419.                 print.log("✓ ¼ÓºÅ°´Å¥¶¨Î»£ºÊäÈë¿òÓÒ²àclickableÔªËØ£¬×ø±ê(" + Math.round(ºòÑ¡°´Å¥[0].x) + "," + Math.round(ºòÑ¡°´Å¥[0].y) + ")");
  420.                 return ºòÑ¡°´Å¥[0];
  421.             }
  422.         }
  423.     }

  424.     print.log("⚠ ¼ÓºÅ°´Å¥Ê¹ÓÃ×ø±ê¶µµ×£¨ÊäÈë¿òÓҲࣩ");
  425.     var ÊäÈë¿ò = ²éÕÒÊäÈë¿òÖÐÐÄ(xml);
  426.     return {
  427.         x: ÆÁÄ»¿í * 0.92,
  428.         y: ÊäÈë¿ò.y
  429.     };
  430. }

  431. function ²éÕÒÏà²á°´Å¥(xml) {
  432.     var xmlStr = "" + xml;
  433.    
  434.     var clickablePattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  435.     var clickMatch;
  436.     var ºòÑ¡°´Å¥ = [];
  437.    
  438.     while ((clickMatch = clickablePattern.exec(xmlStr)) !== null) {
  439.         var bx1 = parseInt(clickMatch[1]);
  440.         var by1 = parseInt(clickMatch[2]);
  441.         var bx2 = parseInt(clickMatch[3]);
  442.         var by2 = parseInt(clickMatch[4]);
  443.         
  444.         var ½Úµã¶Î = xmlStr.substring(xmlStr.indexOf(clickMatch[0]));
  445.         var ½Úµã½áÊø = ½Úµã¶Î.indexOf('</node>');
  446.         if (½Úµã½áÊø !== -1) {
  447.             var ×Ó½ÚµãÄÚÈÝ = ½Úµã¶Î.substring(0, ½Úµã½áÊø);
  448.             if (×Ó½ÚµãÄÚÈÝ.indexOf('text="Ïà²á"') !== -1 ||
  449.                 ×Ó½ÚµãÄÚÈÝ.indexOf('content-desc="Ïà²á"') !== -1) {
  450.                 var centerX = (bx1 + bx2) / 2;
  451.                 var centerY = (by1 + by2) / 2;
  452.                 print.log("✓ Ïà²á°´Å¥¶¨Î»£ºclickable¸¸½Úµã°üº¬Ïà²á£¬bounds=[" + bx1 + "," + by1 + "][" + bx2 + "," + by2 + "]£¬×ø±ê(" + Math.round(centerX) + "," + Math.round(centerY) + ")");
  453.                 return { x: centerX, y: centerY };
  454.             }
  455.         }
  456.     }
  457.    
  458.     var albumDescIdx = xmlStr.indexOf('content-desc="Ïà²á"');
  459.     if (albumDescIdx !== -1) {
  460.         var ¶Î = xmlStr.substring(albumDescIdx);
  461.         var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  462.         if (m) {
  463.             var x1 = parseInt(m[1]);
  464.             var y1 = parseInt(m[2]);
  465.             var x2 = parseInt(m[3]);
  466.             var y2 = parseInt(m[4]);
  467.             var centerX = (x1 + x2) / 2;
  468.             var centerY = (y1 + y2) / 2;
  469.             print.log("✓ Ïà²á°´Å¥¶¨Î»£ºcontent-desc=Ïà²á£¬bounds=[" + x1 + "," + y1 + "][" + x2 + "," + y2 + "]£¬×ø±ê(" + Math.round(centerX) + "," + Math.round(centerY) + ")");
  470.             return { x: centerX, y: centerY };
  471.         }
  472.     }
  473.    
  474.     var albumKeywords = ["Ïà²á", "ͼƬ", "ÕÕÆ¬"];
  475.     for (var i = 0; i < albumKeywords.length; i++) {
  476.         var kw = albumKeywords[i];
  477.         var albumIdx = xmlStr.indexOf('text="' + kw + '"');
  478.         if (albumIdx !== -1) {
  479.             var ¶Î = xmlStr.substring(albumIdx);
  480.             var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  481.             if (m) {
  482.                 var x1 = parseInt(m[1]);
  483.                 var y1 = parseInt(m[2]);
  484.                 var x2 = parseInt(m[3]);
  485.                 var y2 = parseInt(m[4]);
  486.                 var centerX = (x1 + x2) / 2;
  487.                 var centerY = (y1 + y2) / 2;
  488.                 print.log("✓ Ïà²á°´Å¥¶¨Î»£ºtext=" + kw + "£¬bounds=[" + x1 + "," + y1 + "][" + x2 + "," + y2 + "]£¬×ø±ê(" + Math.round(centerX) + "," + Math.round(centerY) + ")");
  489.                 return { x: centerX, y: centerY };
  490.             }
  491.         }
  492.     }

  493.     print.log("⚠ Ïà²á°´Å¥Ê¹ÓÃ×ø±ê¶µµ×£¨µ×²¿Öм䣩");
  494.     return {
  495.         x: ÆÁÄ»¿í * 0.5,
  496.         y: ÆÁÄ»¸ß * 0.88
  497.     };
  498. }

  499. function ²éÕÒÏà²áÑ¡Ïî(xml) {
  500.     var xmlStr = "" + xml;
  501.    
  502.     var text¹Ø¼ü´Ê = ["Ïà²á", "ͼƬ", "ÕÕÆ¬", "ËùÓÐÕÕÆ¬", "´ÓÏà²áÑ¡Ôñ", "Ñ¡ÔñͼƬ"];
  503.     for (var i = 0; i < text¹Ø¼ü´Ê.length; i++) {
  504.         var kw = text¹Ø¼ü´Ê[i];
  505.         var idx = xmlStr.indexOf('text="' + kw + '"');
  506.         if (idx !== -1) {
  507.             var ¶Î = xmlStr.substring(idx);
  508.             var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  509.             if (m) {
  510.                 print.log("✓ Ïà²áÑ¡Ïλ£ºtext=" + kw);
  511.                 return {
  512.                     x: (parseInt(m[1]) + parseInt(m[3])) / 2,
  513.                     y: (parseInt(m[2]) + parseInt(m[4])) / 2
  514.                 };
  515.             }
  516.         }
  517.     }

  518.     var desc¹Ø¼ü´Ê = ["Ïà²á", "ͼƬ", "ÕÕÆ¬"];
  519.     for (var j = 0; j < desc¹Ø¼ü´Ê.length; j++) {
  520.         var kw2 = desc¹Ø¼ü´Ê[j];
  521.         var idx2 = xmlStr.indexOf('content-desc="' + kw2 + '"');
  522.         if (idx2 !== -1) {
  523.             var ¶Î2 = xmlStr.substring(idx2);
  524.             var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  525.             if (m2) {
  526.                 print.log("✓ Ïà²áÑ¡Ïλ£ºcontent-desc=" + kw2);
  527.                 return {
  528.                     x: (parseInt(m2[1]) + parseInt(m2[3])) / 2,
  529.                     y: (parseInt(m2[2]) + parseInt(m2[4])) / 2
  530.                 };
  531.             }
  532.         }
  533.     }
  534.    
  535.     return null;
  536. }

  537. function Õ³ÌùÎı¾(Îı¾) {
  538.     try {
  539.         Clipboard.copy("" + Îı¾);
  540.     } catch (e) {
  541.         print.log("⚠ Clipboard.copy ʧ°Ü£º" + e.message);
  542.     }
  543.     sleep.millisecond(ºÁÃë = 300);

  544.     try {
  545.         agent.shell("service call clipboard 3 i32 1 s16 '" + Îı¾ + "' i32 0");
  546.     } catch (e2) {
  547.         // ºöÂÔ´íÎó
  548.     }
  549.     sleep.millisecond(ºÁÃë = 300);

  550.     agent.shell("input keyevent 279");
  551.     sleep.millisecond(ºÁÃë = 500);
  552.    
  553.     try {
  554.         agent.shell("input text '" + Îı¾ + "'");
  555.         print.log("✓ ÒÑͨ¹ýinput textÖ±½ÓÊäÈëÎı¾");
  556.     } catch (e3) {
  557.         print.log("⚠ input textʧ°Ü£º" + e3.message);
  558.     }
  559.    
  560.     sleep.second(Ãë = 1);
  561.     print.log("✓ ÒÑÕ³ÌùÎı¾£º" + Îı¾);
  562. }

  563. function ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xml) {
  564.     var xmlStr = "" + xml;
  565.    
  566.     var packageMatch = xmlStr.match(/package="([^"]+)"/);
  567.     var µ±Ç°°üÃû = packageMatch ? packageMatch[1] : "";
  568.    
  569.     if (µ±Ç°°üÃû && µ±Ç°°üÃû !== KIMI°üÃû) {
  570.         print.log("✓ ¼ì²âµ½ÏµÍ³Ïà²áÒ³Ãæ£¬°üÃû£º" + µ±Ç°°üÃû);
  571.         return true;
  572.     }
  573.    
  574.     return false;
  575. }

  576. function ÊÇ·ñÔÚͼƬԤÀÀÒ³Ãæ(xml) {
  577.     var xmlStr = "" + xml;
  578.     if (xmlStr.indexOf('text="Íê³É"') !== -1 || xmlStr.indexOf('text="·¢ËÍ"') !== -1) {
  579.         return true;
  580.     }
  581.     if (xmlStr.indexOf('content-desc="Íê³É"') !== -1 || xmlStr.indexOf('content-desc="·¢ËÍ"') !== -1) {
  582.         return true;
  583.     }
  584.     return false;
  585. }

  586. function ²éÕÒͼƬԤÀÀÈ·Èϰ´Å¥(xml) {
  587.     var xmlStr = "" + xml;
  588.    
  589.     var ¹Ø¼ü´Ê = ["Íê³É", "·¢ËÍ", "È·ÈÏ"];
  590.     for (var i = 0; i < ¹Ø¼ü´Ê.length; i++) {
  591.         var kw = ¹Ø¼ü´Ê[i];
  592.         var textIdx = xmlStr.indexOf('text="' + kw + '"');
  593.         if (textIdx !== -1) {
  594.             var ¶Î = xmlStr.substring(textIdx);
  595.             var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  596.             if (m) {
  597.                 var x = (parseInt(m[1]) + parseInt(m[3])) / 2;
  598.                 var y = (parseInt(m[2]) + parseInt(m[4])) / 2;
  599.                 print.log("✓ ͼƬԤÀÀÈ·Èϰ´Å¥¶¨Î»£ºtext=" + kw + "£¬×ø±ê(" + Math.round(x) + "," + Math.round(y) + ")");
  600.                 return { x: x, y: y };
  601.             }
  602.         }
  603.     }
  604.    
  605.     for (var j = 0; j < ¹Ø¼ü´Ê.length; j++) {
  606.         var kw2 = ¹Ø¼ü´Ê[j];
  607.         var descIdx = xmlStr.indexOf('content-desc="' + kw2 + '"');
  608.         if (descIdx !== -1) {
  609.             var ¶Î2 = xmlStr.substring(descIdx);
  610.             var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  611.             if (m2) {
  612.                 var x = (parseInt(m2[1]) + parseInt(m2[3])) / 2;
  613.                 var y = (parseInt(m2[2]) + parseInt(m2[4])) / 2;
  614.                 print.log("✓ ͼƬԤÀÀÈ·Èϰ´Å¥¶¨Î»£ºcontent-desc=" + kw2 + "£¬×ø±ê(" + Math.round(x) + "," + Math.round(y) + ")");
  615.                 return { x: x, y: y };
  616.             }
  617.         }
  618.     }
  619.    
  620.     print.log("⚠ ͼƬԤÀÀÈ·Èϰ´Å¥Ê¹ÓÃ×ø±ê¶µµ×£¨µ×²¿Öм䣩");
  621.     return { x: ÆÁÄ»¿í * 0.5, y: ÆÁÄ»¸ß * 0.92 };
  622. }

  623. function ²éÕÒÏà²áÑ¡Ôñ°´Å¥(xml) {
  624.     var xmlStr = "" + xml;
  625.    
  626.     var ¹Ø¼ü´ÊÁбí = ["Ñ¡Ôñ", "Íê³É", "È·ÈÏ", "·¢ËÍ", "È·¶¨"];
  627.     for (var i = 0; i < ¹Ø¼ü´ÊÁбí.length; i++) {
  628.         var kw = ¹Ø¼ü´ÊÁбí[i];
  629.         
  630.         var textPattern = new RegExp('text="' + kw + '[^"]*"[^>]*?bounds="\\[(\\d+),(\\d+)\\]\\[(\\d+),(\\d+)\\]"', 'gi');
  631.         var textMatch = textPattern.exec(xmlStr);
  632.         if (textMatch) {
  633.             var x = (parseInt(textMatch[1]) + parseInt(textMatch[3])) / 2;
  634.             var y = (parseInt(textMatch[2]) + parseInt(textMatch[4])) / 2;
  635.             print.log("✓ Ïà²áÑ¡Ôñ°´Å¥¶¨Î»£ºtext=" + kw + "£¬×ø±ê(" + Math.round(x) + "," + Math.round(y) + ")");
  636.             return { x: x, y: y };
  637.         }
  638.         
  639.         var descIdx = xmlStr.indexOf('content-desc="' + kw + '"');
  640.         if (descIdx !== -1) {
  641.             var ¶Î2 = xmlStr.substring(descIdx);
  642.             var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  643.             if (m2) {
  644.                 var x = (parseInt(m2[1]) + parseInt(m2[3])) / 2;
  645.                 var y = (parseInt(m2[2]) + parseInt(m2[4])) / 2;
  646.                 print.log("✓ Ïà²áÑ¡Ôñ°´Å¥¶¨Î»£ºcontent-desc=" + kw + "£¬×ø±ê(" + Math.round(x) + "," + Math.round(y) + ")");
  647.                 return { x: x, y: y };
  648.             }
  649.         }
  650.     }
  651.    
  652.     var bottomButtonPattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  653.     var bottomMatch;
  654.     var µ×²¿°´Å¥Áбí = [];
  655.     while ((bottomMatch = bottomButtonPattern.exec(xmlStr)) !== null) {
  656.         var bx1 = parseInt(bottomMatch[1]);
  657.         var by1 = parseInt(bottomMatch[2]);
  658.         var bx2 = parseInt(bottomMatch[3]);
  659.         var by2 = parseInt(bottomMatch[4]);
  660.         if (by1 >= ÆÁÄ»¸ß * 0.85) {
  661.             µ×²¿°´Å¥Áбí.push({ x: (bx1 + bx2) / 2, y: (by1 + by2) / 2 });
  662.         }
  663.     }
  664.    
  665.     if (µ×²¿°´Å¥Áбí.length > 0) {
  666.         µ×²¿°´Å¥Áбí.sort(function(a, b) { return b.x - a.x; });
  667.         var ×îÓұ߰´Å¥ = µ×²¿°´Å¥Áбí[0];
  668.         print.log("✓ Ïà²áÑ¡Ôñ°´Å¥¶¨Î»£ºµ×²¿×îÓұ߰´Å¥£¬×ø±ê(" + Math.round(×îÓұ߰´Å¥.x) + "," + Math.round(×îÓұ߰´Å¥.y) + ")");
  669.         return { x: ×îÓұ߰´Å¥.x, y: ×îÓұ߰´Å¥.y };
  670.     }
  671.    
  672.     print.log("⚠ Ïà²áÑ¡Ôñ°´Å¥Ê¹ÓÃ×ø±ê¶µµ×£¨µ×²¿£©");
  673.     return { x: ÆÁÄ»¿í * 0.78, y: ÆÁÄ»¸ß * 0.92 };
  674. }

  675. function ²éÕÒµÚÒ»ÕÅͼƬ(xml) {
  676.     var xmlStr = "" + xml;
  677.    
  678.     if (ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xmlStr)) {
  679.         agent.shell("echo '" + xmlStr.substring(0, 5000) + "' > /sdcard/Ïà²áUI_dump.xml");
  680.         print.log("✓ Òѱ£´æÏà²áUI XMLµ½/sdcard/Ïà²áUI_dump.xml");
  681.         
  682.         var nafPattern = /<node[^>]*?NAF="true"[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  683.         var nafMatch;
  684.         var NAFСԲµãÁбí = [];
  685.         
  686.         while ((nafMatch = nafPattern.exec(xmlStr)) !== null) {
  687.             var nx1 = parseInt(nafMatch[1]);
  688.             var ny1 = parseInt(nafMatch[2]);
  689.             var nx2 = parseInt(nafMatch[3]);
  690.             var ny2 = parseInt(nafMatch[4]);
  691.             var nw = nx2 - nx1;
  692.             var nh = ny2 - ny1;
  693.             
  694.             if (nw >= 50 && nw <= 300 && nh >= 50 && nh <= 300) {
  695.                 if (ny1 >= 400 && ny2 <= ÆÁÄ»¸ß - 400) {
  696.                     NAFСԲµãÁбí.push({ x1: nx1, y1: ny1, x2: nx2, y2: ny2, x: (nx1 + nx2) / 2, y: (ny1 + ny2) / 2 });
  697.                 }
  698.             }
  699.         }
  700.         
  701.         if (NAFСԲµãÁбí.length > 0) {
  702.             NAFСԲµãÁбí.sort(function(a, b) {
  703.                 if (a.y1 !== b.y1) return a.y1 - b.y1;
  704.                 return a.x1 - b.x1;
  705.             });
  706.             var Ñ¡ÖÐСԲµã = NAFСԲµãÁбí[0];
  707.             print.log("✓ ComposeViewÕÒµ½NAFСԲµãÑ¡Ôñ¿ò£º×ø±ê(" + Math.round(Ñ¡ÖÐСԲµã.x) + "," + Math.round(Ñ¡ÖÐСԲµã.y) + ")£¬bounds=[" + Ñ¡ÖÐСԲµã.x1 + "," + Ñ¡ÖÐСԲµã.y1 + "][" + Ñ¡ÖÐСԲµã.x2 + "," + Ñ¡ÖÐСԲµã.y2 + "]");
  708.             return { x: Ñ¡ÖÐСԲµã.x, y: Ñ¡ÖÐСԲµã.y };
  709.         }
  710.         
  711.         var imageDescPattern = /<node[^>]*?content-desc="([^"]+\.(png|jpg|jpeg|gif))"[^>]*?class="android\.view\.View"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/gi;
  712.         var imgMatch;
  713.         var ͼƬ½ÚµãÁбí = [];
  714.         
  715.         while ((imgMatch = imageDescPattern.exec(xmlStr)) !== null) {
  716.             var ÎļþÃû = imgMatch[1];
  717.             var ix1 = parseInt(imgMatch[3]);
  718.             var iy1 = parseInt(imgMatch[4]);
  719.             var ix2 = parseInt(imgMatch[5]);
  720.             var iy2 = parseInt(imgMatch[6]);
  721.             var iw = ix2 - ix1;
  722.             var ih = iy2 - iy1;
  723.             
  724.             if (iw >= 100 && ih >= 100) {
  725.                 ͼƬ½ÚµãÁбí.push({ ÎļþÃû: ÎļþÃû, x1: ix1, y1: iy1, x2: ix2, y2: iy2, w: iw, h: ih });
  726.             }
  727.         }
  728.         
  729.         if (ͼƬ½ÚµãÁбí.length > 0) {
  730.             Í¼Æ¬½ÚµãÁбí.sort(function(a, b) {
  731.                 if (a.y1 !== b.y1) return a.y1 - b.y1;
  732.                 return a.x1 - b.x1;
  733.             });
  734.             var µÚÒ»ÕÅͼƬ = ͼƬ½ÚµãÁбí[0];
  735.             print.log("✓ ÕÒµ½Í¼Æ¬£º" + µÚÒ»ÕÅͼƬ.ÎļþÃû + "£¬bounds=[" + µÚÒ»ÕÅͼƬ.x1 + "," + µÚÒ»ÕÅͼƬ.y1 + "][" + µÚÒ»ÕÅͼƬ.x2 + "," + µÚÒ»ÕÅͼƬ.y2 + "]");
  736.             
  737.             var Ñ¡Ôñ¿òX = µÚÒ»ÕÅͼƬ.x1 + µÚÒ»ÕÅͼƬ.w * 0.77;
  738.             var Ñ¡Ôñ¿òY = µÚÒ»ÕÅͼƬ.y1 + µÚÒ»ÕÅͼƬ.h * 0.24;
  739.             print.log("✓ ¼ÆËãСԲµãÑ¡Ôñ¿ò×ø±ê£º(" + Math.round(Ñ¡Ôñ¿òX) + "," + Math.round(Ñ¡Ôñ¿òY) + ")");
  740.             return { x: Ñ¡Ôñ¿òX, y: Ñ¡Ôñ¿òY };
  741.         }
  742.         
  743.         var clickableViewPattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  744.         var clickMatch;
  745.         var ¿Éµã»÷ÇøÓò = [];
  746.         while ((clickMatch = clickableViewPattern.exec(xmlStr)) !== null) {
  747.             var cx1 = parseInt(clickMatch[1]);
  748.             var cy1 = parseInt(clickMatch[2]);
  749.             var cx2 = parseInt(clickMatch[3]);
  750.             var cy2 = parseInt(clickMatch[4]);
  751.             var cw = cx2 - cx1;
  752.             var ch = cy2 - cy1;
  753.             ¿Éµã»÷ÇøÓò.push({ x1: cx1, y1: cy1, x2: cx2, y2: cy2, w: cw, h: ch, x: (cx1 + cx2) / 2, y: (cy1 + cy2) / 2 });
  754.         }
  755.         
  756.         var Í¼Æ¬ÇøÓòÄڿɵã»÷ = [];
  757.         for (var k = 0; k < ¿Éµã»÷ÇøÓò.length; k++) {
  758.             var item = ¿Éµã»÷ÇøÓò[k];
  759.             if (item.y >= 400 && item.y <= ÆÁÄ»¸ß - 400) {
  760.                 Í¼Æ¬ÇøÓòÄڿɵã»÷.push(item);
  761.             }
  762.         }
  763.         
  764.         if (Í¼Æ¬ÇøÓòÄڿɵã»÷.length > 0) {
  765.             Í¼Æ¬ÇøÓòÄڿɵã»÷.sort(function(a, b) {
  766.                 if (a.y !== b.y) return a.y - b.y;
  767.                 return a.x - b.x;
  768.             });
  769.             var µÚÒ»¸ö¿Éµã»÷ = Í¼Æ¬ÇøÓòÄڿɵã»÷[0];
  770.             print.log("✓ ComposeViewÍ¼Æ¬ÇøÓòÄÚµÚÒ»¸ö¿Éµã»÷ÔªËØ£º×ø±ê(" + Math.round(µÚÒ»¸ö¿Éµã»÷.x) + "," + Math.round(µÚÒ»¸ö¿Éµã»÷.y) + ")");
  771.             return { x: µÚÒ»¸ö¿Éµã»÷.x, y: µÚÒ»¸ö¿Éµã»÷.y };
  772.         }

  773.         print.log("⚠ ϵͳÏà²áδÕÒµ½Í¼Æ¬£¬Ê¹ÓÃ×ø±ê¶µµ×");
  774.         return { x: ÆÁÄ»¿í * 0.25, y: ÆÁÄ»¸ß * 0.3 };
  775.     }

  776.     print.log("⚠ δÕÒµ½Í¼Æ¬£¬Ê¹ÓÃ×ø±ê¶µµ×£¨µ×²¿µÚÒ»ÐеÚÒ»ÁУ©");
  777.     return { x: ÆÁÄ»¿í * 0.15, y: ÆÁÄ»¸ß * 0.85 };
  778. }

  779. function ²éÕÒ·¢ËͰ´Å¥ÖÐÐÄ(xml) {
  780.     var xmlStr = "" + xml;

  781.     try {
  782.         var detects = opencv.findImagesEx('ͼɫ168638.cv');
  783.         if (detects != null && detects.length > 0) {
  784.             print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºÍ¼É«Æ¥Åä");
  785.             var dStr = "" + detects[0];
  786.             print.log("ͼɫƥÅä½á¹û£º" + dStr);
  787.             var m = dStr.match(/¾ØÐÎÇøÓò:([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/);
  788.             if (m) {
  789.                 var left = parseFloat(m[1]);
  790.                 var top = parseFloat(m[2]);
  791.                 var right = parseFloat(m[3]);
  792.                 var bottom = parseFloat(m[4]);
  793.                 var centerX = (left + right) / 2;
  794.                 var centerY = (top + bottom) / 2;
  795.                 print.log("ͼɫƥÅä°Ù·Ö±È×ø±ê£ºleft=" + left + ", top=" + top + ", right=" + right + ", bottom=" + bottom);
  796.                 print.log("¼ÆËãµã»÷°Ù·Ö±È£º(" + centerX + "," + centerY + ")");
  797.                 agent.clickPercent(centerX, centerY);
  798.                 print.log("✓ Òѵã»÷·¢ËͰ´Å¥£¨Í¼É«£©");
  799.                 return null;
  800.             }
  801.             print.log("⚠ ͼɫƥÅä½á¹û¸ñʽ½âÎöʧ°Ü");
  802.         }
  803.     } catch (e) {
  804.         print.log("⚠ ͼɫƥÅäʧ°Ü£º" + e.message);
  805.     }

  806.     var inputKeywords = ["¸øKimi·¢ÏûÏ¢", "ÓÐÎÊÌ⾡¹ÜÎÊÎÒ"];
  807.     var inputIdx = -1;
  808.     for (var k = 0; k < inputKeywords.length; k++) {
  809.         inputIdx = xmlStr.indexOf('text="' + inputKeywords[k] + '"');
  810.         if (inputIdx !== -1) break;
  811.     }
  812.    
  813.     if (inputIdx !== -1) {
  814.         var ÊäÈë¿ò¶Î = xmlStr.substring(inputIdx);
  815.         var ÊäÈë¿ò±ß½ç = ÊäÈë¿ò¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  816.         
  817.         if (ÊäÈë¿ò±ß½ç) {
  818.             var ÊäÈë¿òÐÅÏ¢ = {
  819.                 x1: parseInt(ÊäÈë¿ò±ß½ç[1]),
  820.                 y1: parseInt(ÊäÈë¿ò±ß½ç[2]),
  821.                 x2: parseInt(ÊäÈë¿ò±ß½ç[3]),
  822.                 y2: parseInt(ÊäÈë¿ò±ß½ç[4]),
  823.                 centerY: (parseInt(ÊäÈë¿ò±ß½ç[2]) + parseInt(ÊäÈë¿ò±ß½ç[4])) / 2
  824.             };

  825.             var clickablePattern = /<node[^>]*?clickable="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"[^>]*?\/?>/g;
  826.             var clickMatch;
  827.             var candidates = [];

  828.             while ((clickMatch = clickablePattern.exec(xmlStr)) !== null) {
  829.                 var cx1 = parseInt(clickMatch[1]);
  830.                 var cy1 = parseInt(clickMatch[2]);
  831.                 var cx2 = parseInt(clickMatch[3]);
  832.                 var cy2 = parseInt(clickMatch[4]);
  833.                 var cw = cx2 - cx1;
  834.                 var ch = cy2 - cy1;

  835.                 var ÊÇС°´Å¥ = (cw < 300 && ch < 300);
  836.                 var ÔÚÊäÈë¿òÓÒ²à = (cx1 > ÊäÈë¿òÐÅÏ¢.x2 - 100);
  837.                 var ÔÚÊäÈë¿òˮƽÐÐ = (cy1 >= ÊäÈë¿òÐÅÏ¢.y1 - 100 && cy1 <= ÊäÈë¿òÐÅÏ¢.y2 + 100);

  838.                 if (ÊÇС°´Å¥ && ÔÚÊäÈë¿òÓÒ²à && ÔÚÊäÈë¿òˮƽÐÐ) {
  839.                     candidates.push({
  840.                         x1: cx1, y1: cy1, x2: cx2, y2: cy2,
  841.                         x: (cx1 + cx2) / 2,
  842.                         y: (cy1 + cy2) / 2
  843.                     });
  844.                 }
  845.             }

  846.             if (candidates.length > 0) {
  847.                 candidates.sort(function(a, b) {
  848.                     return b.x1 - a.x1;
  849.                 });
  850.                 var Ñ¡ÖÐ = candidates[0];
  851.                 print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºÊäÈë¿òÓÒ²àclickableÔªËØ£¬×ø±ê(" + Math.round(Ñ¡ÖÐ.x) + "," + Math.round(Ñ¡ÖÐ.y) + ")");
  852.                 return { x: Ñ¡ÖÐ.x, y: Ñ¡ÖÐ.y };
  853.             }

  854.             var Ô¤¹ÀX = ÊäÈë¿òÐÅÏ¢.x2 + 100;
  855.             var Ô¤¹ÀY = ÊäÈë¿òÐÅÏ¢.centerY;
  856.             print.log("⚠ ·¢ËͰ´Å¥Ê¹ÓÃÊäÈë¿òÓÒ²à×ø±ê¶µµ×(" + Math.round(Ô¤¹ÀX) + "," + Math.round(Ô¤¹ÀY) + ")");
  857.             return { x: Ô¤¹ÀX, y: Ô¤¹ÀY };
  858.         }
  859.     }

  860.     var sendTextIdx = xmlStr.indexOf('text="·¢ËÍ"');
  861.     if (sendTextIdx !== -1) {
  862.         var ¶Î = xmlStr.substring(sendTextIdx);
  863.         var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  864.         if (m) {
  865.             print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºÎı¾Æ¥Åä");
  866.             return {
  867.                 x: (parseInt(m[1]) + parseInt(m[3])) / 2,
  868.                 y: (parseInt(m[2]) + parseInt(m[4])) / 2
  869.             };
  870.         }
  871.     }

  872.     var sendDescIdx = xmlStr.indexOf('content-desc="·¢ËÍ"');
  873.     if (sendDescIdx !== -1) {
  874.         var ¶Î2 = xmlStr.substring(sendDescIdx);
  875.         var m2 = ¶Î2.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  876.         if (m2) {
  877.             print.log("✓ ·¢ËͰ´Å¥¶¨Î»£ºcontent-descÆ¥Åä");
  878.             return {
  879.                 x: (parseInt(m2[1]) + parseInt(m2[3])) / 2,
  880.                 y: (parseInt(m2[2]) + parseInt(m2[4])) / 2
  881.             };
  882.         }
  883.     }

  884.     print.log("⚠ ·¢ËͰ´Å¥Ê¹ÓÃÆÁÄ»ÓÒ²à×ø±ê¶µµ×");
  885.     agent.clickPercent(0.9, 0.92);
  886.     print.log("✓ Òѵã»÷·¢ËͰ´Å¥£¨Ó²±àÂë¶µµ×£©");
  887.     return null;
  888. }

  889. function µÈ´ýAI»Ø´ðÍê³É(·¢ËÍǰµÄ×îºóÎı¾, ·¢ËÍǰ»Ø´ðÊýÁ¿) {
  890.     var ÒѺÄʱ = 0;
  891.     var ¼ì²é¼ä¸ôÃë = 3;
  892.     var Á¬ÐøÏàͬ´ÎÊý = 0;
  893.     var Éϴι淶»¯Îı¾ = "";

  894.     print.log("·¢ËÍǰ×îºóAI»Ø´ð£º'" + ·¢ËÍǰµÄ×îºóÎı¾ + "'£¬·¢ËÍǰ»Ø´ðÊýÁ¿£º" + ·¢ËÍǰ»Ø´ðÊýÁ¿);

  895.     sleep.second(Ãë = 5);
  896.     ÒѺÄʱ += 5;

  897.     while (ÒѺÄʱ < µÈ´ý»Ø´ð³¬Ê±Ãë) {
  898.         var xml = »ñÈ¡UI();
  899.         var »Ø´ðÁбí = ²É¼¯AI»Ø´ðÁбí(xml);
  900.         
  901.         if (»Ø´ðÁбí.length > 0) {
  902.             var µ±Ç°×îºó»Ø´ð = »Ø´ðÁбí[»Ø´ðÁбí.length - 1];
  903.             var µ±Ç°ÌáÈ¡Êý×Ö = ÌáÈ¡Êý×Ö(µ±Ç°×îºó»Ø´ð);
  904.             var µ±Ç°¹æ·¶»¯Îı¾ = µ±Ç°×îºó»Ø´ð.trim().replace(/\s+/g, " ");
  905.             
  906.             var ÓÐлشð = false;
  907.             var »Ø´ðÊýÁ¿Ôö¼Ó = (»Ø´ðÁбí.length > ·¢ËÍǰ»Ø´ðÊýÁ¿);
  908.             
  909.             var ·¢ËÍǰ¹æ·¶»¯ = ·¢ËÍǰµÄ×îºóÎı¾.trim().replace(/\s+/g, " ");
  910.             ÓÐлشð = (µ±Ç°¹æ·¶»¯Îı¾ !== ·¢ËÍǰ¹æ·¶»¯) || (µ±Ç°ÌáÈ¡Êý×Ö !== "");
  911.             
  912.             if (ÓÐлشð || »Ø´ðÊýÁ¿Ôö¼Ó) {
  913.                 print.log("✓ ¼ì²âµ½Ð»شð£¨" + ÒѺÄʱ + "Ã룩£º'" + µ±Ç°×îºó»Ø´ð + "'£¬ÌáÈ¡Êý×Ö£º'" + µ±Ç°ÌáÈ¡Êý×Ö + "'");
  914.                
  915.                 if (µ±Ç°¹æ·¶»¯Îı¾ === Éϴι淶»¯Îı¾) {
  916.                     Á¬ÐøÏàͬ´ÎÊý++;
  917.                     if (Á¬ÐøÏàͬ´ÎÊý >= 2) {
  918.                         print.log("✓ Îı¾Á¬Ðø2´ÎÏàͬ£¬»Ø´ðÍê³É");
  919.                         return µ±Ç°×îºó»Ø´ð;
  920.                     }
  921.                 } else {
  922.                     Á¬ÐøÏàͬ´ÎÊý = 0;
  923.                     Éϴι淶»¯Îı¾ = µ±Ç°¹æ·¶»¯Îı¾;
  924.                 }
  925.             }
  926.         }
  927.         
  928.         sleep.second(Ãë = ¼ì²é¼ä¸ôÃë);
  929.         ÒѺÄʱ += ¼ì²é¼ä¸ôÃë;
  930.     }

  931.     print.log("⚠ µÈ´ýAI»Ø´ð³¬Ê±£¨" + µÈ´ý»Ø´ð³¬Ê±Ãë + "Ã룩£¬³¢ÊÔ·µ»Øµ±Ç°ÄÚÈÝ");
  932.     var xml = »ñÈ¡UI();
  933.     var ¶µµ×Áбí = ²É¼¯AI»Ø´ðÁбí(xml);
  934.     if (¶µµ×Áбí.length > 0) {
  935.         var ¶µµ×Îı¾ = ¶µµ×Áбí[¶µµ×Áбí.length - 1];
  936.         print.log("✓ ³¬Ê±¶µµ×£º·µ»Øµ±Ç°²É¼¯µ½µÄ»Ø´ð£º" + ¶µµ×Îı¾);
  937.         return ¶µµ×Îı¾;
  938.     }
  939.     return null;
  940. }

  941. // ========== Ö÷Á÷³Ì¿ªÊ¼ ==========

  942. function Ö÷Á÷³Ì() {
  943.     // ²½Öè1£ºÈ«ÆÁ½ØÍ¼£¨BÕ¾ÑéÖ¤ÂëÒ³Ãæ£©
  944.     print.log("\n========== ²½Öè1£ºÈ«ÆÁ½ØÍ¼BÕ¾ÑéÖ¤Âë ==========");
  945.     var ½ØÍ¼³É¹¦ = È«ÆÁ½ØÍ¼(½ØÍ¼±£´æÂ·¾¶);
  946.     if (!½ØÍ¼³É¹¦) {
  947.         print.log("✗ ½ØÍ¼Ê§°Ü£¬Í˳öÁ÷³Ì");
  948.         print.log("===== KIMIʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³Ì½áÊø =====");
  949.         return;
  950.     }

  951.     // ²½Öè2£ºÆô¶¯Kimi APP
  952.     print.log("\n========== ²½Öè2£ºÆô¶¯Kimi APP ==========");
  953.     try {
  954.         app.openApp(KIMI°üÃû);
  955.         print.log("✓ ÒÑÆô¶¯Kimi");
  956.     } catch (e) {
  957.         print.log("⚠ Æô¶¯Ê§°Ü£º" + e.message);
  958.     }
  959.     sleep.second(Ãë = 5);

  960.     // ²½Öè3£ºµã»÷ÓÒÉϽÇжԻ°°´Å¥
  961.     print.log("\n========== ²½Öè3£ºµã»÷ÓÒÉϽÇжԻ°°´Å¥ ==========");
  962.    
  963.     xml = »ñÈ¡UI();
  964.    
  965.     var жԻ°X = ÆÁÄ»¿í * 0.96;
  966.     var жԻ°Y = ÆÁÄ»¸ß * 0.06;
  967.    
  968.     var newChatIdx = xml.indexOf('content-desc="¿ªÆôлỰ"');
  969.     if (newChatIdx !== -1) {
  970.         var ¶Î = xml.substring(newChatIdx);
  971.         var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  972.         if (m) {
  973.             Ð¶Ի°X = (parseInt(m[1]) + parseInt(m[3])) / 2;
  974.             Ð¶Ի°Y = (parseInt(m[2]) + parseInt(m[4])) / 2;
  975.             print.log("✓ жԻ°°´Å¥¶¨Î»£ºcontent-desc=¿ªÆôлỰ£¬×ø±ê(" + Math.round(жԻ°X) + "," + Math.round(жԻ°Y) + ")");
  976.         }
  977.     }
  978.    
  979.     agent.click(жԻ°X, жԻ°Y);
  980.     print.log("✓ Òѵã»÷жԻ°°´Å¥£¬×ø±ê(" + Math.round(жԻ°X) + "," + Math.round(жԻ°Y) + ")");
  981.    
  982.     sleep.second(Ãë = 5);
  983.     print.log("✓ жԻ°²Ù×÷Íê³É£¬µÈ´ý5ÃëÈ·±£½çÃæ¼ÓÔØ");

  984.     // ²½Öè4£º¼Ç¼·¢ËÍǰµÄ×îºóÒ»ÌõAI»Ø´ðºÍÊýÁ¿
  985.     print.log("\n========== ²½Öè4£º¼Ç¼·¢ËÍǰ״̬ ==========");
  986.     var ·¢ËÍǰ»Ø´ðÊýÁ¿ = 0;
  987.     print.log("✓ ·¢ËÍǰ»Ø´ðÊýÁ¿£º" + ·¢ËÍǰ»Ø´ðÊýÁ¿);

  988.     // ²½Öè5£ºµã»÷¼ÓºÅ°´Å¥´ò¿ª¸½¼þ²Ëµ¥£¨Ê¹ÓÃͼɫƥÅ䣬ÒòΪµã»÷ǰXML¿ÉÄܲ»ÍêÕû£©
  989.     print.log("\n========== ²½Öè5£ºµã»÷¼ÓºÅ°´Å¥´ò¿ª¸½¼þ²Ëµ¥ ==========");
  990.    
  991.     var ¼ÓºÅµã»÷³É¹¦ = false;
  992.     var detects = opencv.findImagesEx('ͼɫ414387.cv');
  993.     if (detects != null && detects.length > 0) {
  994.         print.log("✓ ͼɫƥÅäÕÒµ½¼ÓºÅ°´Å¥");
  995.         print.log("ͼɫƥÅä½á¹û£º" + detects[0]);
  996.         var dStr = "" + detects[0];
  997.         var m = dStr.match(/¾ØÐÎÇøÓò:([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/);
  998.         if (m) {
  999.             var left = parseFloat(m[1]);
  1000.             var top = parseFloat(m[2]);
  1001.             var right = parseFloat(m[3]);
  1002.             var bottom = parseFloat(m[4]);
  1003.             var centerX = (left + right) / 2;
  1004.             var centerY = (top + bottom) / 2;
  1005.             agent.clickPercent(centerX, centerY);
  1006.             print.log("✓ Òѵã»÷¼ÓºÅ°´Å¥£¨Í¼É«Æ¥Å䣩£¬°Ù·Ö±È×ø±ê(" + centerX.toFixed(4) + "," + centerY.toFixed(4) + ")");
  1007.             ¼ÓºÅµã»÷³É¹¦ = true;
  1008.         }
  1009.     }
  1010.    
  1011.     if (!¼ÓºÅµã»÷³É¹¦) {
  1012.         print.log("⚠ ͼɫƥÅäδÕÒµ½¼ÓºÅ°´Å¥£¬Ê¹ÓÃ×ø±ê¶µµ×");
  1013.         var ¶µµ×X = ÆÁÄ»¿í * 0.92;
  1014.         var ¶µµ×Y = ÆÁÄ»¸ß * 0.55;
  1015.         agent.click(¶µµ×X, ¶µµ×Y);
  1016.         print.log("✓ Òѵã»÷¼ÓºÅ°´Å¥£¨×ø±ê¶µµ×£©£¬×ø±ê(" + Math.round(¶µµ×X) + "," + Math.round(¶µµ×Y) + ")");
  1017.         ¼ÓºÅµã»÷³É¹¦ = true;
  1018.     }
  1019.    
  1020.     sleep.second(Ãë = 3);
  1021.     print.log("✓ µÈ´ý3ÃëÈø½¼þ²Ëµ¥ÍêÈ«µ¯³ö");

  1022.     // ²½Öè6£ºµã»÷Ïà²á°´Å¥Ñ¡ÔñͼƬ£¨µã»÷¼ÓºÅºóXMLÒÑÍêÕû£¬Ê¹ÓÃXML¶¨Î»£©
  1023.     print.log("\n========== ²½Öè6£ºµã»÷Ïà²á°´Å¥Ñ¡ÔñͼƬ ==========");
  1024.    
  1025.     var Ïà²áÑ¡Ôñ³É¹¦ = false;
  1026.     var ³¢ÊÔ´ÎÊý = 0;
  1027.    
  1028.     while (!Ïà²áÑ¡Ôñ³É¹¦ && ³¢ÊÔ´ÎÊý < 5) {
  1029.         ³¢ÊÔ´ÎÊý++;
  1030.         xml = »ñÈ¡UI();
  1031.         
  1032.         if (ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xml)) {
  1033.             print.log("✓ ÒѽøÈëϵͳÏà²áÒ³Ãæ");
  1034.             Ïà²áÑ¡Ôñ³É¹¦ = true;
  1035.             break;
  1036.         }
  1037.         
  1038.         var Ïà²áλÖà = ²éÕÒÏà²á°´Å¥(xml);
  1039.         agent.click(Ïà²áλÖÃ.x, Ïà²áλÖÃ.y);
  1040.         print.log("✓ Òѵã»÷Ïà²á°´Å¥£¬×ø±ê(" + Math.round(Ïà²áλÖÃ.x) + "," + Math.round(Ïà²áλÖÃ.y) + ")");
  1041.         sleep.second(Ãë = 2);
  1042.         
  1043.         xml = »ñÈ¡UI();
  1044.         if (ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xml)) {
  1045.             print.log("✓ ÒѽøÈëϵͳÏà²áÒ³Ãæ");
  1046.             Ïà²áÑ¡Ôñ³É¹¦ = true;
  1047.             break;
  1048.         }
  1049.         
  1050.         print.log("⚠ µÚ" + ³¢ÊÔ´ÎÊý + "´Î³¢ÊÔ£ºÎ´½øÈëÏà²áÒ³Ãæ£¬ÖØÐµã»÷¼ÓºÅ");
  1051.         
  1052.         var ¼ÓºÅDetects = opencv.findImagesEx('ͼɫ414387.cv');
  1053.         if (¼ÓºÅDetects != null && ¼ÓºÅDetects.length > 0) {
  1054.             var dStr2 = "" + ¼ÓºÅDetects[0];
  1055.             var m2 = dStr2.match(/¾ØÐÎÇøÓò:([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/);
  1056.             if (m2) {
  1057.                 var centerX2 = (parseFloat(m2[1]) + parseFloat(m2[3])) / 2;
  1058.                 var centerY2 = (parseFloat(m2[2]) + parseFloat(m2[4])) / 2;
  1059.                 agent.clickPercent(centerX2, centerY2);
  1060.                 print.log("✓ ÖØÐµã»÷¼ÓºÅ°´Å¥£¨Í¼É«Æ¥Å䣩£¬°Ù·Ö±È×ø±ê(" + centerX2.toFixed(4) + "," + centerY2.toFixed(4) + ")");
  1061.             }
  1062.         } else {
  1063.             var ¶µµ×X = ÆÁÄ»¿í * 0.92;
  1064.             var ¶µµ×Y = ÆÁÄ»¸ß * 0.55;
  1065.             agent.click(¶µµ×X, ¶µµ×Y);
  1066.             print.log("✓ ÖØÐµã»÷¼ÓºÅ°´Å¥£¨×ø±ê¶µµ×£©£¬×ø±ê(" + Math.round(¶µµ×X) + "," + Math.round(¶µµ×Y) + ")");
  1067.         }
  1068.         sleep.second(Ãë = 3);
  1069.     }

  1070.     // ²½Öè7£ºÑ¡ÔñµÚÒ»ÕÅͼƬ£¨ÏµÍ³Ïà²áÓÃCanvasäÖȾ£¬XMLÎ޽ڵ㣬ֱ½Ó×ø±êµã»÷£©
  1071.     print.log("\n========== ²½Öè7£ºÑ¡ÔñµÚÒ»ÕÅͼƬ ==========");
  1072.    
  1073.     var ͼƬ³¢ÊÔ´ÎÊý = 0;
  1074.     while (ͼƬ³¢ÊÔ´ÎÊý < 3) {
  1075.         Í¼Æ¬³¢ÊÔ´ÎÊý++;
  1076.         xml = »ñÈ¡UI();
  1077.         
  1078.         if (ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xml)) {
  1079.             print.log("✓ ϵͳÏà²áÒ³Ãæ£¬µã»÷ͼƬλÖÃ");
  1080.             
  1081.             var ±êÌâÀ¸µ×²¿ = 432;
  1082.             var actionBarMatch = xml.match(/resource-id="android:id\/action_bar"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  1083.             if (actionBarMatch) {
  1084.                 ±êÌâÀ¸µ×²¿ = parseInt(actionBarMatch[4]);
  1085.             }
  1086.             
  1087.             var Í¼Æ¬ÇøÓò¶¥²¿ = ±êÌâÀ¸µ×²¿;
  1088.             var Í¼Æ¬ÇøÓòµ×²¿ = ÆÁÄ»¸ß;
  1089.             var Í¼Æ¬ÇøÓò¸ß¶È = Í¼Æ¬ÇøÓòµ×²¿ - Í¼Æ¬ÇøÓò¶¥²¿;
  1090.             
  1091.             var ͼƬX = ÆÁÄ»¿í * 0.5;
  1092.             var ͼƬY = Í¼Æ¬ÇøÓò¶¥²¿ + Í¼Æ¬ÇøÓò¸ß¶È * 0.4;
  1093.             agent.click(ͼƬX, ͼƬY);
  1094.             print.log("✓ Òѵã»÷ͼƬλÖã¬×ø±ê(" + Math.round(ͼƬX) + "," + Math.round(ͼƬY) + ")");
  1095.             sleep.second(Ãë = 3);
  1096.             
  1097.             xml = »ñÈ¡UI();
  1098.             if (!ÊÇ·ñÔÚϵͳÏà²áÒ³Ãæ(xml)) {
  1099.                 print.log("✓ ÒÑÀ뿪Ïà²áÒ³Ãæ£¬Í¼Æ¬¿ÉÄÜÒÑÌí¼Ó");
  1100.                 break;
  1101.             }
  1102.         } else {
  1103.             break;
  1104.         }
  1105.     }

  1106.     // ²½Öè8£ºµÈ´ýͼƬÌí¼Óµ½ÊäÈëÇøÓò£¨µÈ´ý»Øµ½Kimi¶Ô»°Ò³Ã棩
  1107.     print.log("\n========== ²½Öè8£ºµÈ´ýͼƬÌí¼Óµ½ÊäÈëÇøÓò ==========");
  1108.     sleep.second(Ãë = 3);
  1109.     xml = »ñÈ¡UI();
  1110.    
  1111.     var packageMatch = xml.match(/package="([^"]+)"/);
  1112.     if (packageMatch && packageMatch[1] === KIMI°üÃû) {
  1113.         print.log("✓ Òѻص½Kimi¶Ô»°Ò³Ãæ");
  1114.     }
  1115.    
  1116.     print.log("✓ ͼƬÒÑÌí¼Óµ½ÊäÈëÇøÓò");

  1117.     // ²½Öè9£ºÕ³ÌùÎÄ×ÖѯÎÊÍ϶¯¾àÀë
  1118.     print.log("\n========== ²½Öè9£ºÕ³ÌùÎÄ×ÖѯÎÊÍ϶¯¾àÀë ==========");
  1119.     xml = »ñÈ¡UI();
  1120.    
  1121.     var ÊäÈë¿òλÖà = ²éÕÒÊäÈë¿òÖÐÐÄ(xml);
  1122.     agent.click(ÊäÈë¿òλÖÃ.x, ÊäÈë¿òλÖÃ.y);
  1123.     print.log("✓ Òѵã»÷ÊäÈë¿ò£¬×ø±ê(" + Math.round(ÊäÈë¿òλÖÃ.x) + "," + Math.round(ÊäÈë¿òλÖÃ.y) + ")");
  1124.     sleep.second(Ãë = 2);
  1125.    
  1126.     try {
  1127.         Clipboard.copy("" + ÌáÎÊ»°Êõ);
  1128.         sleep.millisecond(ºÁÃë = 500);
  1129.         agent.shell("input keyevent 279");
  1130.         sleep.second(Ãë = 2);
  1131.         print.log("✓ ÒÑͨ¹ý¼ôÌù°åÕ³ÌùÎı¾");
  1132.     } catch (e) {
  1133.         print.log("⚠ ¼ôÌù°åÕ³Ìùʧ°Ü£º" + e.message);
  1134.         agent.shell("input text '" + ÌáÎÊ»°Êõ + "'");
  1135.         sleep.second(Ãë = 2);
  1136.         print.log("✓ ÒÑͨ¹ýinput textÖ±½ÓÊäÈëÎı¾");
  1137.     }
  1138.     sleep.second(Ãë = 2);

  1139.     // ²½Öè10£º·¢ËÍͼƬºÍÎÄ×Ö
  1140.     print.log("\n========== ²½Öè10£º·¢ËÍͼƬºÍÎÄ×Ö ==========");
  1141.    
  1142.     var detects = opencv.findImagesEx('ͼɫ769678.cv');
  1143.     if (detects != null) {
  1144.         print.log("✓ ͼɫƥÅäÕÒµ½·¢ËͰ´Å¥");
  1145.         print.log("ͼɫƥÅä½á¹û£º" + detects[0]);
  1146.         var dStr = "" + detects[0];
  1147.         var sendMatch = dStr.match(/¾ØÐÎÇøÓò:([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/);
  1148.         if (sendMatch) {
  1149.             var left = parseFloat(sendMatch[1]);
  1150.             var top = parseFloat(sendMatch[2]);
  1151.             var right = parseFloat(sendMatch[3]);
  1152.             var bottom = parseFloat(sendMatch[4]);
  1153.             var centerX = (left + right) / 2;
  1154.             var centerY = (top + bottom) / 2;
  1155.             agent.clickPercent(centerX, centerY);
  1156.             print.log("✓ Òѵã»÷·¢ËͰ´Å¥£¨Í¼É«Æ¥Å䣩£¬°Ù·Ö±È×ø±ê(" + centerX.toFixed(4) + "," + centerY.toFixed(4) + ")");
  1157.         }
  1158.     } else {
  1159.         print.log("⚠ ͼɫƥÅäδÕÒµ½·¢ËͰ´Å¥£¬³¢ÊÔ×ø±ê¶µµ×");
  1160.         var ·¢ËͰ´Å¥Î»Öà = ²éÕÒ·¢ËͰ´Å¥ÖÐÐÄ(xml);
  1161.         if (·¢ËͰ´Å¥Î»ÖÃ) {
  1162.             agent.click(·¢ËͰ´Å¥Î»ÖÃ.x, ·¢ËͰ´Å¥Î»ÖÃ.y);
  1163.             print.log("✓ Òѵã»÷·¢ËͰ´Å¥£¨×ø±ê¶µµ×£©");
  1164.         }
  1165.     }
  1166.    
  1167.     sleep.second(Ãë = 10);

  1168.     // ²½Öè11£ºµÈ´ýKimi AI»Ø´ð
  1169.     print.log("\n========== ²½Öè11£ºµÈ´ýKimi AI»Ø´ð ==========");
  1170.     xml = »ñÈ¡UI();
  1171.     var AI»Ø´ð = µÈ´ýAI»Ø´ðÍê³É("", 0);
  1172.    
  1173.     if (!AI»Ø´ð) {
  1174.         print.log("✗ δ»ñÈ¡µ½AI»Ø´ð");
  1175.         print.log("===== KIMIʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³Ì½áÊø =====");
  1176.         return;
  1177.     }

  1178.     print.log("\n✓ ²É¼¯µ½AI»Ø´ð");
  1179.    
  1180.     print.log("\n========== ²½Öè11.5£ºµã»÷¼ÓºÅ»ñÈ¡ÍêÕûÔ´Âë ==========");
  1181.     var detects = opencv.findImagesEx('ͼɫ414387.cv');
  1182.     if (detects != null && detects.length > 0) {
  1183.         var dStr = "" + detects[0];
  1184.         var m = dStr.match(/¾ØÐÎÇøÓò:([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/);
  1185.         if (m) {
  1186.             var centerX = (parseFloat(m[1]) + parseFloat(m[3])) / 2;
  1187.             var centerY = (parseFloat(m[2]) + parseFloat(m[4])) / 2;
  1188.             agent.clickPercent(centerX, centerY);
  1189.             print.log("✓ Òѵã»÷¼ÓºÅ°´Å¥£¨Í¼É«Æ¥Å䣩£¬°Ù·Ö±È×ø±ê(" + centerX.toFixed(4) + "," + centerY.toFixed(4) + ")");
  1190.         }
  1191.     } else {
  1192.         agent.click(ÆÁÄ»¿í * 0.92, ÆÁÄ»¸ß * 0.55);
  1193.         print.log("✓ Òѵã»÷¼ÓºÅ°´Å¥£¨×ø±ê¶µµ×£©");
  1194.     }
  1195.     sleep.second(Ãë = 2);
  1196.     xml = »ñÈ¡UI();
  1197.     print.log("✓ µã»÷¼ÓºÅºóÖØÐ»ñÈ¡UI");
  1198.    
  1199.     AI»Ø´ð = »ñÈ¡µ±Ç°×îºóAI»Ø´ð(xml);
  1200.     print.log("✓ ÖØÐ²ɼ¯AI»Ø´ð£º'" + AI»Ø´ð + "'");
  1201.    
  1202.     print.log("--- ²É¼¯ÄÚÈÝ¿ªÊ¼ ---");
  1203.     print.log(AI»Ø´ð);
  1204.     print.log("--- ²É¼¯ÄÚÈݽáÊø ---");

  1205.     // ²½Öè12£º½âÎöÍ϶¯¾àÀë×ø±ê
  1206.     print.log("\n========== ²½Öè12£º½âÎöÍ϶¯¾àÀë×ø±ê ==========");
  1207.     print.log("✓ AIԭʼ»Ø´ð£º'" + AI»Ø´ð + "'");
  1208.    
  1209.     var ËùÓÐÊý×Ö = AI»Ø´ð.match(/\d+/g);
  1210.     var Í϶¯¾àÀëÏñËØ = null;
  1211.     var AIͼÏñ¿í¶È = null;
  1212.    
  1213.     if (AI»Ø´ð.indexOf("¾àÀë") !== -1 || AI»Ø´ð.indexOf("ÏñËØ") !== -1) {
  1214.         var ¾àÀëÆ¥Åä = AI»Ø´ð.match(/(\d+)\s*[ÏñÏà]?ËØ?/);
  1215.         if (¾àÀëÆ¥Åä) {
  1216.             Í϶¯¾àÀëÏñËØ = parseInt(¾àÀëÆ¥Åä[1]);
  1217.             print.log("✓ ʶ±ðµ½¾àÀë¸ñʽ»Ø´ð£¬ÌáÈ¡Êý×Ö£º" + Í϶¯¾àÀëÏñËØ);
  1218.             AIͼÏñ¿í¶È = ÆÁÄ»¿í;
  1219.             print.log("✓ ¾àÀë¸ñʽ»Ø´ð£¬Ê¹ÓÃÆÁÄ»¿í¶È×÷ΪͼÏñ¿í¶È£¬²»¶îÍâËõ·Å");
  1220.         } else {
  1221.             var Êý×ÖÆ¥Åä = AI»Ø´ð.match(/(\d+)/);
  1222.             if (Êý×ÖÆ¥Åä) {
  1223.                 Í϶¯¾àÀëÏñËØ = parseInt(Êý×ÖÆ¥Åä[1]);
  1224.                 print.log("✓ ´Ó¾àÀë»Ø´ðÖÐÌáÈ¡Êý×Ö£º" + Í϶¯¾àÀëÏñËØ);
  1225.                 AIͼÏñ¿í¶È = ÆÁÄ»¿í;
  1226.             }
  1227.         }
  1228.     } else if (ËùÓÐÊý×Ö && ËùÓÐÊý×Ö.length >= 2) {
  1229.         var Êý×ÖÁбí = [];
  1230.         for (var n = 0; n < ËùÓÐÊý×Ö.length; n++) {
  1231.             Êý×ÖÁбí.push(parseInt(ËùÓÐÊý×Ö[n]));
  1232.         }
  1233.         print.log("✓ ÌáÈ¡µ½ËùÓÐÊý×Ö£º" + Êý×ÖÁбí.join(", "));
  1234.         
  1235.         if (Êý×ÖÁбí.length >= 5) {
  1236.             var x1 = Êý×ÖÁбí[0];
  1237.             var y1 = Êý×ÖÁбí[1];
  1238.             var x2 = Êý×ÖÁбí[2];
  1239.             var y2 = Êý×ÖÁбí[3];
  1240.             AIͼÏñ¿í¶È = Êý×ÖÁбí[4];
  1241.             Í϶¯¾àÀëÏñËØ = Math.abs(x2 - x1);
  1242.             print.log("✓ ʶ±ðµ½Á½×é×ø±ê+ͼÏñ¿í¶È£º(" + x1 + "," + y1 + ") ºÍ (" + x2 + "," + y2 + ")£¬Í¼Ïñ¿í¶È=" + AIͼÏñ¿í¶È);
  1243.             print.log("✓ ¼ÆËãÍ϶¯¾àÀ룺|x2 - x1| = |" + x2 + " - " + x1 + "| = " + Í϶¯¾àÀëÏñËØ);
  1244.         } else if (Êý×ÖÁбí.length >= 4) {
  1245.             var x1 = Êý×ÖÁбí[0];
  1246.             var y1 = Êý×ÖÁбí[1];
  1247.             var x2 = Êý×ÖÁбí[2];
  1248.             var y2 = Êý×ÖÁбí[3];
  1249.             Í϶¯¾àÀëÏñËØ = Math.abs(x2 - x1);
  1250.             AIͼÏñ¿í¶È = Math.max(x1, x2) + 100;
  1251.             print.log("✓ ʶ±ðµ½Á½×é×ø±ê¸ñʽ£º(" + x1 + "," + y1 + ") ºÍ (" + x2 + "," + y2 + ")");
  1252.             print.log("✓ ¼ÆËãÍ϶¯¾àÀ룺|x2 - x1| = |" + x2 + " - " + x1 + "| = " + Í϶¯¾àÀëÏñËØ);
  1253.             print.log("✓ ¹ÀËãͼÏñ¿í¶È£ºmax(x1,x2)+100 = " + AIͼÏñ¿í¶È);
  1254.         } else if (Êý×ÖÁбí.length >= 2) {
  1255.             var ×ø±êÆ¥Åä = AI»Ø´ð.match(/(\d+)\s*[,£¬]\s*(\d+)/);
  1256.             if (×ø±êÆ¥Åä) {
  1257.                 var cx1 = parseInt(×ø±êÆ¥Åä[1]);
  1258.                 var cx2 = parseInt(×ø±êÆ¥Åä[2]);
  1259.                 Í϶¯¾àÀëÏñËØ = Math.abs(cx2 - cx1);
  1260.                 AIͼÏñ¿í¶È = Math.max(cx1, cx2) + 100;
  1261.                 print.log("✓ ʶ±ðµ½×ø±ê¸ñʽ£º(" + cx1 + "," + cx2 + ")£¬¼ÆËã¾àÀ룺" + Í϶¯¾àÀëÏñËØ);
  1262.             } else {
  1263.                 Í϶¯¾àÀëÏñËØ = Êý×ÖÁбí[0];
  1264.                 print.log("✓ ÌáÈ¡µ½µ¥¸öÊý×Ö£¨Í϶¯¾àÀ룩£º" + Í϶¯¾àÀëÏñËØ);
  1265.             }
  1266.         } else {
  1267.             Í϶¯¾àÀëÏñËØ = Êý×ÖÁбí[0];
  1268.             print.log("✓ ÌáÈ¡µ½µ¥¸öÊý×Ö£¨Í϶¯¾àÀ룩£º" + Í϶¯¾àÀëÏñËØ);
  1269.         }
  1270.     } else if (ËùÓÐÊý×Ö && ËùÓÐÊý×Ö.length === 1) {
  1271.         Í϶¯¾àÀëÏñËØ = parseInt(ËùÓÐÊý×Ö[0]);
  1272.         print.log("✓ ÌáÈ¡µ½µ¥¸öÊý×Ö£¨Í϶¯¾àÀ룩£º" + Í϶¯¾àÀëÏñËØ);
  1273.     } else {
  1274.         print.log("✗ δÕÒµ½ÓÐЧµÄÍ϶¯¾àÀë");
  1275.         print.log("===== KIMIʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³Ì½áÊø =====");
  1276.         return;
  1277.     }
  1278.    
  1279.     var ͼÏñËõ·ÅϵÊý = 1.0;
  1280.     if (Í϶¯¾àÀëÏñËØ < 30) {
  1281.         print.log("⚠ ÌáÈ¡µ½µÄÍ϶¯¾àÀë¹ýС(" + Í϶¯¾àÀëÏñËØ + ")£¬¿ÉÄÜÊÇOCRʶ±ð´íÎó£¬Ìø¹ýËõ·Å²¹³¥");
  1282.     } else if (AIͼÏñ¿í¶È && AIͼÏñ¿í¶È > 0 && AIͼÏñ¿í¶È < ÆÁÄ»¿í) {
  1283.         Í¼ÏñËõ·ÅϵÊý = ÆÁÄ»¿í / AIͼÏñ¿í¶È;
  1284.         if (ͼÏñËõ·ÅϵÊý > 5) {
  1285.             Í¼ÏñËõ·ÅϵÊý = 1.0;
  1286.         } else {
  1287.             Í϶¯¾àÀëÏñËØ = Math.round(Í϶¯¾àÀëÏñËØ * ͼÏñËõ·ÅϵÊý);
  1288.             print.log("✓ ͼÏñËõ·Å²¹³¥£ºAIͼÏñ¿í¶È=" + AIͼÏñ¿í¶È + "£¬ÆÁÄ»¿í=" + ÆÁÄ»¿í);
  1289.             print.log("✓ Ëõ·ÅϵÊý=" + ͼÏñËõ·ÅϵÊý.toFixed(2) + "£¬²¹³¥ºóÍ϶¯¾àÀë=" + Í϶¯¾àÀëÏñËØ);
  1290.         }
  1291.     } else {
  1292.         Í¼ÏñËõ·ÅϵÊý = ÆÁÄ»¿í / 750;
  1293.         Í϶¯¾àÀëÏñËØ = Math.round(Í϶¯¾àÀëÏñËØ * ͼÏñËõ·ÅϵÊý);
  1294.         print.log("✓ µ¥Êý×Öģʽ²¹³¥£º¼ÙÉèAIͼÏñ¿í¶È¡Ö750£¬Ëõ·ÅϵÊý=" + ͼÏñËõ·ÅϵÊý.toFixed(2));
  1295.         print.log("✓ ²¹³¥ºóÍ϶¯¾àÀë=" + Í϶¯¾àÀëÏñËØ);
  1296.     }
  1297.    
  1298.     ÑéÖ¤Â뻬¿é¾àÀë = {
  1299.         x: Í϶¯¾àÀëÏñËØ,
  1300.         y: 0
  1301.     };

  1302.     // ²½Öè13£ºÇл»»ØBÕ¾²¢Í϶¯»¬¿é
  1303.     print.log("\n========== ²½Öè13£ºÇл»»ØBÕ¾²¢Í϶¯»¬¿é ==========");
  1304.    
  1305.     agent.shell("input keyevent 187");
  1306.     print.log("✓ ÒѰ´ºǫ́¼ü´ò¿ªÈÎÎñÁбí");
  1307.     sleep.second(Ãë = 2);
  1308.    
  1309.     xml = »ñÈ¡UI();
  1310.     var biliIdx = xml.indexOf('ßÙÁ¨ßÙÁ¨');
  1311.     if (biliIdx === -1) {
  1312.         biliIdx = xml.indexOf('bilibili');
  1313.     }
  1314.     if (biliIdx === -1) {
  1315.         biliIdx = xml.indexOf('BÕ¾');
  1316.     }
  1317.    
  1318.     if (biliIdx !== -1) {
  1319.         var ¶Î = xml.substring(biliIdx);
  1320.         var m = ¶Î.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  1321.         if (m) {
  1322.             var clickX = (parseInt(m[1]) + parseInt(m[3])) / 2;
  1323.             var clickY = (parseInt(m[2]) + parseInt(m[4])) / 2;
  1324.             agent.click(clickX, clickY);
  1325.             print.log("✓ Òѵã»÷BÕ¾ÈÎÎñ¿¨Æ¬£¬×ø±ê(" + Math.round(clickX) + "," + Math.round(clickY) + ")");
  1326.         }
  1327.     } else {
  1328.         print.log("⚠ δÕÒµ½BÕ¾ÈÎÎñ¿¨Æ¬£¬³¢ÊÔÖ±½Ó´ò¿ª");
  1329.         try {
  1330.             app.openApp(BÕ¾°üÃû);
  1331.             print.log("✓ ÒÑ´ò¿ªBÕ¾");
  1332.         } catch (e) {
  1333.             print.log("⚠ ´ò¿ªBվʧ°Ü£º" + e.message);
  1334.         }
  1335.     }
  1336.     sleep.second(Ãë = 3);

  1337.     xml = »ñÈ¡UI();
  1338.    
  1339.     var startX = ÆÁÄ»¿í * 0.15 + 50;
  1340.     var startY = ÆÁÄ»¸ß * 0.42;
  1341.    
  1342.     var detects = opencv.findImagesEx('ͼɫ975253.cv');
  1343.     if (detects != null && detects.length > 0) {
  1344.         print.log("✓ ͼɫƥÅäÕÒµ½»¬¿é³õʼλÖÃ");
  1345.         print.log("ͼɫƥÅä½á¹û£º" + detects[0]);
  1346.         var dStr = "" + detects[0];
  1347.         var m = dStr.match(/¾ØÐÎÇøÓò:([\d.]+),\s*([\d.]+),\s*([\d.]+),\s*([\d.]+)/);
  1348.         if (m) {
  1349.             var left = parseFloat(m[1]);
  1350.             var top = parseFloat(m[2]);
  1351.             var right = parseFloat(m[3]);
  1352.             var bottom = parseFloat(m[4]);
  1353.             startX = (left + right) / 2 * ÆÁÄ»¿í;
  1354.             startY = (top + bottom) / 2 * ÆÁÄ»¸ß;
  1355.             print.log("✓ »¬¿é³õʼλÖãº(" + Math.round(startX) + "," + Math.round(startY) + ")");
  1356.         }
  1357.     } else {
  1358.         print.log("⚠ ͼɫƥÅäδÕÒµ½»¬¿é£¬Ê¹ÓÃ×ø±ê¶µµ×");
  1359.     }

  1360.     var Í϶¯¾àÀë = ÑéÖ¤Â뻬¿é¾àÀë.x * »¬¿éУ׼ϵÊý;

  1361.     var endX = startX + Í϶¯¾àÀë;
  1362.     var endY = startY;

  1363.     print.log("✓ »¬¿éÆðµã: (" + Math.round(startX) + "," + Math.round(startY) + "), Í϶¯¾àÀë: " + Í϶¯¾àÀë);
  1364.     agent.swip(startX, startY, endX, endY, 2000);
  1365.     print.log("✓ ÒÑÍ϶¯»¬¿é£¬Æðµã(" + Math.round(startX) + "," + Math.round(startY) + ")£¬ÖÕµã(" + Math.round(endX) + "," + Math.round(endY) + ")");
  1366. }

  1367. Ö÷Á÷³Ì();

  1368. print.log("\n===== KIMIʶ±ðÑéÖ¤ÂëÍ϶¯BÕ¾Á÷³Ì½áÊø =====");
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

±¾°æ»ý·Ö¹æÔò

¹Ø±Õ

QQ|»ÓªÏúÈí¼þ×ÛºÏÌÖÂÛ|»ÓªÏúÈí¼þÓÐÎʱشð|»ÓªÏúÈí¼þ½Ì³Ì×¨Çø|»ÓªÏúÈí¼þPOST½Å±¾·ÖÏí|»ÓªÏúÈí¼þÆÕͨ½Å±¾·ÖÏí|»ÓªÏúÈí¼þÈí¼þ×ÊѶ|»ÓªÏúÈí¼þ¾«Æ·Èí¼þ|»ÓªÏúÈí¼þ¸üй«¸æ|ÓªÏúÈí¼þ|B2BÈí¼þ|B2BÍøÂçÈí¼þ ( ¾©ICP±¸09078825ºÅ )±¾ÍøÕ¾¿ª·¢µÄÓªÏúÈí¼þÊÇÒ»¿îеÄÍøÂçÓªÏúÈí¼þ£¬Õâ¿îÓªÏú¿ÉÒÔÈ¥ÍøÕ¾Èí¼þ£¬²©¿ÍÈí¼þ£¬B2BÈí¼þ£¬·ÖÀàÐÅÏ¢Íø·¢Ìù£¬¿ÉÒÔÇÀɳ·¢£¬¿ÉÒÔµ½°Ù¶ÈÎÄ¿âÉÏ´«WORDÎĵµ£¬¿ÉÒÔµ½Ò»Ð©ÊÇÏà²áÍøÕ¾×Ô¶¯ÉÏ´«Í¼Æ¬£¬Õâ¸ö×Ô¶¯·¢ÌûÈí¼þ×Ô´øÔÆÖ©Ö룬¼Ó¿ìÊÕ¼£¬ÓÐ6ÖÖ¶Ô½Ó´òÂë½Ó¿Ú£¬·½±ã£¬Ð§Âʸߣ¬Ëٶȿ죬¶øÇÒ¶ÔÍ϶¯µÄÑéÖ¤ÂëÈ«ÍøµÚÒ»¼Ò¶À¼ÒÖ§³Ö£¬È«²¿Ô­´´¼¼Êõ£¬¶À¼ÒÑз¢£¬Õý°æÔ­´´´ø°æÈ¨Èí¼þ¡£Ñ¡ÔñÍòÄÜÓªÏúÈí¼þ£¬¾ÍÑ¡ÔñÁËÒ»ÖÖ׬ǮµÄЧÂÊ£¬´ÓûÓб»³¬Ô½¹ý£¬Ò»Ö±ÔÚŬÁ¦Ñз¢Ð¼¼Êõ¡£·Å·ÉÃÎÏ룬½â·ÅË«ÊÖ£¬À´µã´´Ò⣬³É¾ÍÄãµÄÃÎÏ룬¾ÍÔÚÍòÄÜÓªÏúÈí¼þ¿ªÊ¼

map2

GMT+8, 2026-7-21 17:01 , Processed in 0.090390 second(s), 35 queries .

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí