B2BÍøÂçÈí¼þ

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

AIWROKÈí¼þÖ§³ÖÐü¸¡´°×ÔÓɶ¨Î»ºÍÍÏ×§¹¦ÄÜ

[¸´ÖÆÁ´½Ó]

950

Ö÷Ìâ

955

Ìû×Ó

7077

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7077
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷
AIWROKÈí¼þÖ§³ÖÐü¸¡´°×ÔÓɶ¨Î»ºÍÍÏ×§¹¦ÄÜ
AIWROKÈí¼þÖ§³ÖÐü¸¡´°×ÔÓɶ¨Î»ºÍÍÏ×§¹¦ÄÜ B2BÍøÂçÈí¼þ

AIWROKÈí¼þÖ§³ÖÐü¸¡´°×ÔÓɶ¨Î»ºÍÍÏ×§¹¦ÄÜ B2BÍøÂçÈí¼þ

  1. //ͨ¹ýfloatUI´´½¨Ðü¸¡´°
  2. //ÊÊÓÃÓÚES5ϵͳ°²×¿ JavaScriptÒýÇæRhino
  3. //»ùÓÚAIWROKÈí¼þ°²×¿¿ª·¢¿ò¼Ü
  4. //Ö§³ÖÐü¸¡´°×ÔÓɶ¨Î»ºÍÍÏ×§¹¦ÄÜ
  5. //🍎½»Á÷QQȺ711841924Ⱥһ£¬Æ»¹ûÄÚ²âȺ£¬528816639


  6. if (!String.prototype.repeat) {
  7.     String.prototype.repeat = function(count) {
  8.         'use strict';
  9.         if (this == null) {
  10.             throw new TypeError('can\'t convert ' + this + ' to object');
  11.         }
  12.         var str = String(this);
  13.         count = +count;
  14.         if (count != count) {
  15.             count = 0;
  16.         }
  17.         if (count < 0) {
  18.             throw new RangeError('repeat count must be non-negative');
  19.         }
  20.         if (count == Infinity) {
  21.             throw new RangeError('repeat count must be less than infinity');
  22.         }
  23.         count = Math.floor(count);
  24.         if (str.length == 0 || count == 0) {
  25.             return '';
  26.         }
  27.         // È·±£Öظ´µÄ×Ö·û´®²»»á³¬³ö×Ö·û´®³¤¶ÈÏÞÖÆ
  28.         if (str.length * count >= 1 << 28) {
  29.             throw new RangeError('repeat count must not overflow maximum string size');
  30.         }
  31.         var rpt = '';
  32.         for (var i = 0; i < count; i++) {
  33.             rpt += str;
  34.         }
  35.         return rpt;
  36.     };
  37. }

  38. // ES5¼æÈݵÄString.prototype.padStart polyfill
  39. if (!String.prototype.padStart) {
  40.     String.prototype.padStart = function(targetLength, padString) {
  41.         targetLength = targetLength >> 0; // ת»»ÎªÕûÊý
  42.         padString = String((typeof padString !== 'undefined' ? padString : ' '));
  43.         if (this.length > targetLength) {
  44.             return String(this);
  45.         } else {
  46.             targetLength = targetLength - this.length;
  47.             if (targetLength > padString.length) {
  48.                 padString += padString.repeat(targetLength / padString.length); // ½Ø¶Ï»òÖØ¸´Ìî³ä×Ö·û´®
  49.             }
  50.             return padString.slice(0, targetLength) + String(this);
  51.         }
  52.     };
  53. }

  54. /*
  55.    °²×¿¿ÉÒÆ¶¯²àÀ¸ÈÕÖ¾ÍÂ˾
  56.    ¹¦ÄÜ£º
  57.    1. ¿ÉÍÏ×§ÒÆ¶¯µÄ²àÀ¸Ðü¸¡´°
  58.    2. Ö§³ÖÈÕÖ¾ÐÅϢʵʱÏÔʾ
  59.    3. Ö§³ÖÕ¹¿ª/ÊÕÆð¹¦ÄÜ
  60.    4. Ö§³Ö×Ô¶¨ÒåÈÕÖ¾ÑÕÉ«
  61. */

  62. // ¶¨Òå²àÀ¸ÈÕÖ¾Ðü¸¡´°¹¹Ô캯Êý
  63. function ²àÀ¸ÈÕÖ¾() {
  64.     this.screenHeight = 1920; // ĬÈÏÆÁÄ»¸ß¶È
  65.     this.screenWidth = 1080;  // ĬÈÏÆÁÄ»¿í¶È
  66.     this.isExpanded = false;  // Õ¹¿ª×´Ì¬±êÖ¾
  67.     this.logs = [];           // ÈÕÖ¾Êý×é
  68.     this.maxLogs = 50;        // ×î´óÈÕÖ¾ÌõÊý
  69.     this.dragging = false;    // ÍÏק״̬±êÖ¾
  70.     this.lastX = 0;           // Éϴδ¥ÃþX×ø±ê
  71.     this.lastY = 0;           // Éϴδ¥ÃþY×ø±ê
  72. }

  73. // ´´½¨²àÀ¸ÈÕÖ¾Ðü¸¡´°
  74. ²àÀ¸ÈÕÖ¾.prototype.create = function() {
  75.     try {
  76.         // ¼ì²éfloatUIÊÇ·ñ¿ÉÓÃ
  77.         if (typeof floatUI === 'undefined') {
  78.             printl("❌ ´íÎó£ºÎ´ÕÒµ½floatUI¿â");
  79.             return false;
  80.         }
  81.         
  82.         // ´´½¨floatUIʵÀý
  83.         var fui = new floatUI();
  84.         
  85.         // »ñȡʵ¼ÊÆÁÄ»³ß´ç
  86.         try {
  87.             if (context && context.getResources && context.getResources().getDisplayMetrics) {
  88.                 var metrics = context.getResources().getDisplayMetrics();
  89.                 this.screenHeight = metrics.heightPixels || 1920;
  90.                 this.screenWidth = metrics.widthPixels || 1080;
  91.                 printl("✅ »ñÈ¡ÆÁÄ»³ß´ç: " + this.screenWidth + "x" + this.screenHeight);
  92.             } else {
  93.                 printl("⚠️ ÎÞ·¨»ñÈ¡ÆÁÄ»³ß´ç£¬Ê¹ÓÃĬÈÏÖµ");
  94.                 this.screenHeight = 1920; // ĬÈÏÆÁÄ»¸ß¶È
  95.                 this.screenWidth = 1080;  // ĬÈÏÆÁÄ»¿í¶È
  96.             }
  97.         } catch(e) {
  98.             printl("⚠️ »ñÈ¡ÆÁÄ»³ß´çʧ°Ü£¬Ê¹ÓÃĬÈÏÖµ: " + e);
  99.             this.screenHeight = 1920;
  100.             this.screenWidth = 1080;
  101.         }
  102.         
  103.         // ¶¨Òå²à±ßÀ¸¿í¶ÈºÍ¸ß¶È
  104.         var sidebarWidth = 100;  // ¸üÕ­µÄ²à±ßÀ¸¿í¶È
  105.         var sidebarMinWidth = 30; // ¸üÕ­µÄÊÕÆðʱ×îС¿í¶È
  106.         var sidebarHeight = 100; // ¹Ì¶¨Ð¡¸ß¶È£¬²»ÔÙÒÀÀµÆÁÄ»±ÈÀý
  107.         
  108.         // ¼ÓÔØXML²¼¾Ö
  109.         try {
  110.             fui.loadXML(`
  111.                 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  112.                     android:layout_width="${sidebarWidth}dp"
  113.                     android:layout_height="${sidebarHeight}dp"
  114.                     android:background="#CC000000"
  115.                     android:orientation="vertical"
  116.                     android:id="main_container">
  117.                     
  118.                     <!-- ¿ÉÍ϶¯µÄ±êÌâÀ¸ -->
  119.                     <LinearLayout
  120.                         android:id="title_bar"
  121.                         android:layout_width="match_parent"
  122.                         android:layout_height="35dp"
  123.                         android:background="#666666"
  124.                         android:orientation="horizontal"
  125.                         android:gravity="center_vertical">
  126.                         
  127.                         <!-- Í϶¯ÇøÓò -->
  128.                         <View
  129.                             android:layout_width="${sidebarMinWidth}dp"
  130.                             android:layout_height="match_parent"
  131.                             android:background="#444444"/>
  132.                         
  133.                         <!-- ±êÌâÎÄ×Ö£¨½öÔÚÕ¹¿ªÊ±¿É¼û£© -->
  134.                         <TextView
  135.                             android:id="title_text"
  136.                             android:layout_width="0dp"
  137.                             android:layout_height="match_parent"
  138.                             android:layout_weight="1"
  139.                             android:text="ÔËÐÐÈÕÖ¾"
  140.                             android:textColor="#FFFFFF"
  141.                             android:gravity="center"
  142.                             android:textSize="14sp"/>
  143.                            
  144.                         <!-- ¹Ø±Õ°´Å¥£¨½öÔÚÕ¹¿ªÊ±¿É¼û£© -->
  145.                             <Button
  146.                                 android:id="close_button"
  147.                                 android:layout_width="30dp"
  148.                                 android:layout_height="30dp"
  149.                                 android:text="✕"
  150.                                 android:textColor="#FFFFFF"
  151.                                 android:background="#FF4444"
  152.                                 android:textSize="14sp"
  153.                                 android:padding="0dp"
  154.                                 android:gravity="center"/>
  155.                     </LinearLayout>
  156.                     
  157.                     <!-- ÈÕÖ¾ÏÔÊ¾ÇøÓò£¨½öÔÚÕ¹¿ªÊ±¿É¼û£© -->
  158.                     <ScrollView
  159.                         android:id="log_container"
  160.                         android:layout_width="match_parent"
  161.                         android:layout_height="match_parent"
  162.                         android:background="#111111">
  163.                         
  164.                         <TextView
  165.                             android:id="log_text"
  166.                             android:layout_width="match_parent"
  167.                             android:layout_height="wrap_content"
  168.                             android:textColor="#00FF00"
  169.                             android:textSize="11sp"
  170.                             android:padding="3dp"
  171.                             android:lineSpacingExtra="1dp"/>
  172.                     </ScrollView>
  173.                     
  174.                     <!-- Õ¹¿ª/ÊÕÆð°´Å¥ -->
  175.                     <Button
  176.                         android:id="toggle_button"
  177.                         android:layout_width="match_parent"
  178.                         android:layout_height="25dp"
  179.                         android:text="¡Ô"
  180.                         android:textColor="#FFFFFF"
  181.                         android:background="#555555"
  182.                         android:textSize="16sp"/>
  183.                 </LinearLayout>
  184.             `);
  185.             printl("✅ XML²¼¾Ö¼ÓÔØ³É¹¦");
  186.         } catch (xmlError) {
  187.             printl("❌ XML²¼¾Ö¼ÓÔØÊ§°Ü: " + xmlError);
  188.             return false;
  189.         }
  190.         
  191.         // ±£´æUIʵÀý
  192.         this.ui = fui;
  193.         
  194.         // ±£´æ¿í¶ÈÉèÖù©toggleExpand·½·¨Ê¹ÓÃ
  195.         this.sidebarWidth = sidebarWidth;
  196.         this.sidebarMinWidth = sidebarMinWidth;
  197.         
  198.         // »ñÈ¡UIÔªËØ
  199.         try {
  200.             this.titleBar = fui.findViewById("title_bar");
  201.             this.titleText = fui.findViewById("title_text");
  202.             this.logContainer = fui.findViewById("log_container");
  203.             this.logText = fui.findViewById("log_text");
  204.             this.toggleButton = fui.findViewById("toggle_button");
  205.             this.closeButton = fui.findViewById("close_button"); // »ñÈ¡¹Ø±Õ°´Å¥
  206.             this.mainContainer = fui.findViewById("main_container");
  207.             
  208.             // ¼ì²é¹Ø¼üÔªËØÊÇ·ñ´æÔÚ
  209.             var missingElements = [];
  210.             if (!this.titleBar) missingElements.push("titleBar");
  211.             if (!this.logText) missingElements.push("logText");
  212.             if (!this.toggleButton) missingElements.push("toggleButton");
  213.             if (!this.mainContainer) missingElements.push("mainContainer");
  214.             
  215.             if (missingElements.length > 0) {
  216.                 printl("⚠️ ȱʧ¹Ø¼üUIÔªËØ: " + missingElements.join(", "));
  217.             } else {
  218.                 printl("✅ ËùÓÐUIÔªËØ»ñÈ¡³É¹¦");
  219.             }
  220.         } catch (findError) {
  221.             printl("❌ »ñÈ¡UIÔªËØÊ§°Ü: " + findError);
  222.         }
  223.         
  224.         // ÉèÖóõʼλÖã¨ÆÁÄ»×ó²à£©
  225.         try {
  226.             this.setPos(0, (this.screenHeight - 100) / 2);
  227.             printl("✅ ³õʼλÖÃÉèÖóɹ¦");
  228.         } catch (posError) {
  229.             printl("❌ ÉèÖóõʼλÖÃʧ°Ü: " + posError);
  230.         }
  231.         
  232.         // ³õʼ»¯Ê¼þ
  233.         try {
  234.             this.initEvents();
  235.             printl("✅ ʼþ³õʼ»¯³É¹¦");
  236.         } catch (eventError) {
  237.             printl("❌ ʼþ³õʼ»¯Ê§°Ü: " + eventError);
  238.         }
  239.         
  240.         // ÏÔʾ³õʼ»¯ÈÕÖ¾
  241.         this.log("✅ ²àÀ¸ÈÕÖ¾ÒÑÆô¶¯", "#00FF00");
  242.         
  243.         return true;
  244.     } catch (e) {
  245.         printl("❌ ´´½¨²àÀ¸ÈÕ־ʧ°Ü: " + e);
  246.         return false;
  247.     }
  248. };

  249. // ³õʼ»¯Ê¼þ
  250. ²àÀ¸ÈÕÖ¾.prototype.initEvents = function() {
  251.     var self = this;
  252.    
  253.     // ÉèÖÃÍÏקʼþ - Ìí¼Ó¸üÍêÉÆµÄ´íÎó´¦Àí
  254.     try {
  255.         if (typeof View !== 'undefined' && typeof MotionEvent !== 'undefined' && this.titleBar && this.titleBar.setOnTouchListener) {
  256.             this.titleBar.setOnTouchListener(new View.OnTouchListener({
  257.                 onTouch: function(view, event) {
  258.                     try {
  259.                         switch (event.getAction()) {
  260.                             case MotionEvent.ACTION_DOWN:
  261.                                 self.dragging = true;
  262.                                 self.lastX = event.getRawX();
  263.                                 self.lastY = event.getRawY();
  264.                                 break;
  265.                             case MotionEvent.ACTION_MOVE:
  266.                                 if (self.dragging) {
  267.                                     var dx = event.getRawX() - self.lastX;
  268.                                     var dy = event.getRawY() - self.lastY;
  269.                                     
  270.                                     // »ñÈ¡µ±Ç°Î»ÖÃ
  271.                                     var currentX = view.getX();
  272.                                     var currentY = view.getY();
  273.                                     
  274.                                     // ¼ÆËãÐÂλÖ㨿¼ÂÇÕû¸öÈÝÆ÷µÄλÖã©
  275.                                     var newX = currentX + dx;
  276.                                     var newY = currentY + dy;
  277.                                     
  278.                                     // ±ß½ç¼ì²é
  279.                                     if (newX < 0) newX = 0;
  280.                                     if (newY < 0) newY = 0;
  281.                                     if (newX > self.screenWidth - (self.isExpanded ? self.sidebarWidth : self.sidebarMinWidth))
  282.                                         newX = self.screenWidth - (self.isExpanded ? self.sidebarWidth : self.sidebarMinWidth);
  283.                                     if (newY > self.screenHeight - 100)
  284.                                         newY = self.screenHeight - 100;
  285.                                     
  286.                                     // ÉèÖÃÐÂλÖÃ
  287.                                     self.setPos(newX, newY);
  288.                                     
  289.                                     // ¸üÐÂÉϴδ¥ÃþλÖÃ
  290.                                     self.lastX = event.getRawX();
  291.                                     self.lastY = event.getRawY();
  292.                                 }
  293.                                 break;
  294.                             case MotionEvent.ACTION_UP:
  295.                                 self.dragging = false;
  296.                                 break;
  297.                         }
  298.                         return true;
  299.                     } catch (touchError) {
  300.                         // ¾²Ä¬´¦Àí´¥Ãþʼþ´íÎ󣬱ÜÃâ±ÀÀ£
  301.                         return false;
  302.                     }
  303.                 }
  304.             }));
  305.         } else {
  306.             printl("⚠️ ÎÞ·¨ÉèÖÃÍÏקʼþ£¬È±ÉÙ±ØÒª×é¼þ");
  307.         }
  308.     } catch (touchSetupError) {
  309.         printl("❌ ÉèÖÃÍÏקʼþʧ°Ü: " + touchSetupError);
  310.     }
  311.    
  312.     // Õ¹¿ª/ÊÕÆð°´Å¥µã»÷ʼþ
  313.     try {
  314.         if (this.toggleButton && this.toggleButton.setOnClickListener) {
  315.             this.toggleButton.setOnClickListener(function() {
  316.                 try {
  317.                     self.toggleExpand();
  318.                 } catch (toggleError) {
  319.                     printl("❌ Ö´ÐÐÕ¹¿ª/ÊÕÆð²Ù×÷ʧ°Ü: " + toggleError);
  320.                 }
  321.             });
  322.         }
  323.     } catch (toggleSetupError) {
  324.         printl("❌ ÉèÖÃÕ¹¿ª/ÊÕÆðʼþʧ°Ü: " + toggleSetupError);
  325.     }
  326.    
  327.     // ¹Ø±Õ°´Å¥µã»÷ʼþ
  328.     try {
  329.         if (this.closeButton && this.closeButton.setOnClickListener) {
  330.             this.closeButton.setOnClickListener(function() {
  331.                 try {
  332.                     self.close();
  333.                 } catch (closeError) {
  334.                     printl("❌ Ö´ÐйرղÙ×÷ʧ°Ü: " + closeError);
  335.                 }
  336.             });
  337.         }
  338.     } catch (closeSetupError) {
  339.         printl("❌ ÉèÖùرÕʼþʧ°Ü: " + closeSetupError);
  340.     }
  341. };

  342. // »ñÈ¡µ±Ç°Ê±¼äÓÃÓÚÈÕÖ¾
  343. ²àÀ¸ÈÕÖ¾.prototype.getCurrentTime = function() {
  344.     var now = new Date();
  345.     var hours = now.getHours().toString().padStart(2, '0');
  346.     var minutes = now.getMinutes().toString().padStart(2, '0');
  347.     var seconds = now.getSeconds().toString().padStart(2, '0');
  348.     return hours + ':' + minutes + ':' + seconds;
  349. };

  350. // Çл»Õ¹¿ª/ÊÕÆð״̬
  351. ²àÀ¸ÈÕÖ¾.prototype.toggleExpand = function() {
  352.     try {
  353.         var self = this;
  354.         
  355.         // ¼Ç¼µ±Ç°×´Ì¬±ä¸ü£¨Ê¹ÓÃprintl±ÜÃâµÝ¹é£©
  356.         printl("[" + self.getCurrentTime() + "] " + (self.isExpanded ? "&#128317; ²àÀ¸ÕýÔÚÊÕÆð" : "&#128316; ²àÀ¸ÕýÔÚÕ¹¿ª"));
  357.         // ¶¨ÒåÒªÉèÖõÄÄ¿±ê¿í¶È - ÐÞ¸´Âß¼­£ºµ±Ç°Õ¹¿ªÊ±Ó¦¸ÃÉèÖÃΪÊÕÆð¿í¶È£¬µ±Ç°ÊÕÆðʱӦ¸ÃÉèÖÃΪչ¿ª¿í¶È
  358.         var targetWidth = this.isExpanded ? this.sidebarMinWidth : this.sidebarWidth;
  359.         
  360.         // Çл»Õ¹¿ª×´Ì¬±êÖ¾
  361.         this.isExpanded = !this.isExpanded;
  362.         
  363.         // È·±£ÔÚÖ÷Ïß³ÌÖÐÖ´ÐÐUI²Ù×÷
  364.         var uiOperation = function() {
  365.             self.performToggleExpand(targetWidth);
  366.         };
  367.         
  368.         // ³¢ÊÔ¶àÖÖUIÏ̵߳÷¶È·½°¸
  369.         var threadScheduled = false;
  370.         
  371.         // ·½°¸1: ʹÓÃcontext.runOnUiThread
  372.         try {
  373.             if (context && context.runOnUiThread) {
  374.                 // ʹÓÃES5¼æÈݵķ½Ê½´´½¨Runnable¶ÔÏó
  375.                 var runnable = {
  376.                     run: function() {
  377.                         try {
  378.                             uiOperation();
  379.                         } catch (e) {
  380.                             printl("❌ UIÏß³ÌÖ´ÐÐʧ°Ü: " + e);
  381.                         }
  382.                     }
  383.                 };
  384.                 context.runOnUiThread(runnable);
  385.                 threadScheduled = true;
  386.                 printl("✅ ʹÓÃcontext.runOnUiThreadµ÷¶ÈUIÏß³Ì");
  387.             }
  388.         } catch (e) {
  389.             printl("❌ ·½°¸1: context.runOnUiThreadʧ°Ü: " + e);
  390.         }
  391.         
  392.         // ·½°¸2: ʹÓÃView.post (Èç¹ûÓÐÈκÎView¶ÔÏó¿ÉÓÃ)
  393.         if (!threadScheduled) {
  394.             try {
  395.                 var viewToUse = self.mainContainer || self.titleBar || self.toggleButton;
  396.                 if (viewToUse && viewToUse.post) {
  397.                     viewToUse.post(function() {
  398.                         try {
  399.                             uiOperation();
  400.                         } catch (e) {
  401.                             printl("❌ View.postÖ´ÐÐʧ°Ü: " + e);
  402.                         }
  403.                     });
  404.                     threadScheduled = true;
  405.                     printl("✅ ʹÓÃView.postµ÷¶ÈUIÏß³Ì");
  406.                 }
  407.             } catch (e) {
  408.                 printl("❌ ·½°¸2: View.postʧ°Ü: " + e);
  409.             }
  410.         }
  411.         
  412.         // ·½°¸3: ³¢ÊÔʹÓÃHandler (Èç¹û¿ÉÓÃ)
  413.         if (!threadScheduled) {
  414.             try {
  415.                 if (typeof Handler !== 'undefined' && typeof Looper !== 'undefined' && Looper.getMainLooper) {
  416.                     var handler = new Handler(Looper.getMainLooper());
  417.                     handler.post(function() {
  418.                         try {
  419.                             uiOperation();
  420.                         } catch (e) {
  421.                             printl("❌ HandlerÖ´ÐÐʧ°Ü: " + e);
  422.                         }
  423.                     });
  424.                     threadScheduled = true;
  425.                     printl("✅ ʹÓÃHandlerµ÷¶ÈUIÏß³Ì");
  426.                 }
  427.             } catch (e) {
  428.                 printl("❌ ·½°¸3: Handlerʧ°Ü: " + e);
  429.             }
  430.         }
  431.         
  432.         // ·½°¸4: Ö±½ÓÖ´ÐÐ×÷Ϊ×îºó±¸Ñ¡ (¿ÉÄÜ»áʧ°Üµ«Ìṩ½µ¼¶·½°¸)
  433.         if (!threadScheduled) {
  434.             printl("⚠️ ËùÓÐÏ̵߳÷¶È·½°¸Ê§°Ü£¬³¢ÊÔÖ±½ÓÖ´ÐÐUI²Ù×÷");
  435.             try {
  436.                 uiOperation();
  437.             } catch (directError) {
  438.                 printl("❌ Ö±½ÓÖ´ÐÐUI²Ù×÷ʧ°Ü: " + directError);
  439.             }
  440.         }
  441.     } catch (e) {
  442.         printl("❌ Çл»Õ¹¿ª×´Ì¬Ê§°Ü: " + e);
  443.     }
  444. };
  445. // Ö´ÐÐUI²Ù×÷µÄºËÐÄ·½·¨£¨Ó¦ÔÚÖ÷Ïß³ÌÖе÷Óã©
  446. ²àÀ¸ÈÕÖ¾.prototype.performToggleExpand = function(targetWidth) {
  447.     try {
  448.         var self = this;
  449.         
  450.         // Çл»UIÔªËØ¿É¼ûÐÔ
  451.         if (!this.isExpanded) {
  452.             // ÊÕÆð״̬
  453.             if (this.titleText && typeof this.titleText.setVisibility === 'function') {
  454.                 try {
  455.                     this.titleText.setVisibility(View.GONE);
  456.                 } catch (e) {
  457.                     printl("❌ ÉèÖÃtitleText¿É¼ûÐÔʧ°Ü: " + e);
  458.                 }
  459.             }
  460.             if (this.logContainer && typeof this.logContainer.setVisibility === 'function') {
  461.                 try {
  462.                     this.logContainer.setVisibility(View.GONE);
  463.                 } catch (e) {
  464.                     printl("❌ ÉèÖÃlogContainer¿É¼ûÐÔʧ°Ü: " + e);
  465.                 }
  466.             }
  467.             if (this.closeButton && typeof this.closeButton.setVisibility === 'function') {
  468.                 try {
  469.                     this.closeButton.setVisibility(View.GONE); // ÊÕÆðʱÒþ²Ø¹Ø±Õ°´Å¥
  470.                 } catch (e) {
  471.                     printl("❌ ÉèÖÃcloseButton¿É¼ûÐÔʧ°Ü: " + e);
  472.                 }
  473.             }
  474.         } else {
  475.             // Õ¹¿ª×´Ì¬
  476.             if (this.titleText && typeof this.titleText.setVisibility === 'function') {
  477.                 try {
  478.                     this.titleText.setVisibility(View.VISIBLE);
  479.                 } catch (e) {
  480.                     printl("❌ ÉèÖÃtitleText¿É¼ûÐÔʧ°Ü: " + e);
  481.                 }
  482.             }
  483.             if (this.logContainer && typeof this.logContainer.setVisibility === 'function') {
  484.                 try {
  485.                     this.logContainer.setVisibility(View.VISIBLE);
  486.                 } catch (e) {
  487.                     printl("❌ ÉèÖÃlogContainer¿É¼ûÐÔʧ°Ü: " + e);
  488.                 }
  489.             }
  490.             if (this.closeButton && typeof this.closeButton.setVisibility === 'function') {
  491.                 try {
  492.                     this.closeButton.setVisibility(View.VISIBLE); // Õ¹¿ªÊ±ÏÔʾ¹Ø±Õ°´Å¥
  493.                 } catch (e) {
  494.                     printl("❌ ÉèÖÃcloseButton¿É¼ûÐÔʧ°Ü: " + e);
  495.                 }
  496.             }
  497.         }
  498.         
  499.         // ³¢ÊÔ¶àÖÖ·½·¨À´ÉèÖÿí¶È£¬Ôö¼Ó¸ü¶àµÄ±¸Ñ¡·½°¸
  500.         var widthSetSuccessfully = false;
  501.         var errorMessages = [];
  502.         
  503.         // »ñÈ¡ÆÁÄ»ÃܶÈ
  504.         var getDensity = function() {
  505.             try {
  506.                 if (context && context.getResources && context.getResources().getDisplayMetrics) {
  507.                     return context.getResources().getDisplayMetrics().density;
  508.                 }
  509.             } catch (e) {
  510.                 printl("⚠️ »ñÈ¡ÆÁÄ»ÃܶÈʧ°Ü: " + e);
  511.             }
  512.             return 3; // ĬÈÏÃܶÈ
  513.         };
  514.         
  515.         // ·½·¨1: ³¢ÊÔͨ¹ýFloatUI¶ÔÏóµÄ¿ÉÄÜ·½·¨
  516.         try {
  517.             if (this.ui && typeof this.ui.setLayoutWidth === 'function') {
  518.                 this.ui.setLayoutWidth(targetWidth);
  519.                 widthSetSuccessfully = true;
  520.                 printl("·½·¨1: ʹÓÃsetLayoutWidthÉèÖÿí¶È³É¹¦");
  521.             }
  522.         } catch (e) {
  523.             errorMessages.push("·½·¨1: " + (e.message || String(e)));
  524.         }
  525.         
  526.         // ·½·¨2: ³¢ÊÔͨ¹ýLayoutParamsÉèÖÿí¶È
  527.         if (!widthSetSuccessfully) {
  528.             try {
  529.                 if (this.mainContainer && typeof this.mainContainer.getLayoutParams === 'function' &&
  530.                     typeof this.mainContainer.setLayoutParams === 'function') {
  531.                     var params = this.mainContainer.getLayoutParams();
  532.                     if (params) {
  533.                         // ³¢ÊÔ½«dpת»»ÎªÏñËØ
  534.                         var pixelWidth = Math.round(targetWidth * getDensity());
  535.                         
  536.                         // °²È«µØÉèÖÿí¶È
  537.                         try {
  538.                             params.width = pixelWidth;
  539.                             this.mainContainer.setLayoutParams(params);
  540.                             widthSetSuccessfully = true;
  541.                             printl("·½·¨2: ʹÓÃLayoutParamsÉèÖÿí¶È³É¹¦");
  542.                         } catch (setParamsError) {
  543.                             errorMessages.push("·½·¨2: " + (setParamsError.message || String(setParamsError)));
  544.                         }
  545.                     }
  546.                 }
  547.             } catch (e) {
  548.                 errorMessages.push("·½·¨2: " + (e.message || String(e)));
  549.             }
  550.         }
  551.         
  552.         // ·½·¨3: ³¢ÊÔÖ±½ÓÉèÖÃÊÓͼ¿í¶È
  553.         if (!widthSetSuccessfully) {
  554.             try {
  555.                 if (this.mainContainer && typeof this.mainContainer.setWidth === 'function') {
  556.                     // ʹÓÃÒѾ­¼ÆËãºÃµÄÏñËØ¿í¶È
  557.                     var pixelWidth = Math.round(targetWidth * getDensity());
  558.                     this.mainContainer.setWidth(pixelWidth);
  559.                     widthSetSuccessfully = true;
  560.                     printl("·½·¨3: ʹÓÃsetWidthÉèÖÿí¶È³É¹¦");
  561.                 }
  562.             } catch (e) {
  563.                 errorMessages.push("·½·¨3: " + (e.message || String(e)));
  564.             }
  565.         }
  566.         
  567.         // ·½·¨4: ³¢ÊÔÐÞ¸ÄXML²¼¾Ö²ÎÊý
  568.         if (!widthSetSuccessfully) {
  569.             try {
  570.                 if (this.ui && typeof this.ui.setLayoutParams === 'function') {
  571.                     // ³¢ÊÔ»ñÈ¡²¢ÐÞ¸ÄFloatUIµÄ²¼¾Ö²ÎÊý
  572.                     var floatParams = (typeof this.ui.getLayoutParams === 'function') ? this.ui.getLayoutParams() : null;
  573.                     if (floatParams) {
  574.                         floatParams.width = Math.round(targetWidth * getDensity());
  575.                         this.ui.setLayoutParams(floatParams);
  576.                         widthSetSuccessfully = true;
  577.                         printl("·½·¨4: ʹÓÃFloatUI.setLayoutParamsÉèÖÿí¶È³É¹¦");
  578.                     }
  579.                 }
  580.             } catch (e) {
  581.                 errorMessages.push("·½·¨4: " + (e.message || String(e)));
  582.             }
  583.         }
  584.         
  585.         // ·½·¨5: ³¢ÊÔʹÓÃlayout·½·¨Ö±½ÓÉèÖÃλÖúʹóС
  586.         if (!widthSetSuccessfully) {
  587.             try {
  588.                 if (this.mainContainer && typeof this.mainContainer.layout === 'function') {
  589.                     var left = 0;
  590.                     var top = 0;
  591.                     try {
  592.                         left = this.mainContainer.getLeft();
  593.                         top = this.mainContainer.getTop();
  594.                     } catch (positionError) {
  595.                         // ʹÓÃĬÈÏλÖÃ
  596.                     }
  597.                     var pixelWidth = Math.round(targetWidth * getDensity());
  598.                     var height = 0;
  599.                     try {
  600.                         height = this.mainContainer.getHeight();
  601.                     } catch (heightError) {
  602.                         height = 100; // ĬÈϸ߶È
  603.                     }
  604.                     this.mainContainer.layout(left, top, left + pixelWidth, top + height);
  605.                     widthSetSuccessfully = true;
  606.                     printl("·½·¨5: ʹÓÃlayout·½·¨ÉèÖÿí¶È³É¹¦");
  607.                 }
  608.             } catch (e) {
  609.                 errorMessages.push("·½·¨5: " + (e.message || String(e)));
  610.             }
  611.         }
  612.         
  613.         // ³¢ÊÔUIˢз½·¨
  614.         if (widthSetSuccessfully) {
  615.             try {
  616.                 if (this.ui && typeof this.ui.updateLayout === 'function') {
  617.                     this.ui.updateLayout();
  618.                     printl("UI²¼¾ÖÒѸüÐÂ");
  619.                 } else if (this.mainContainer && typeof this.mainContainer.requestLayout === 'function') {
  620.                     this.mainContainer.requestLayout();
  621.                     printl("ÇëÇóÖØÐ²¼¾Ö");
  622.                 } else if (this.mainContainer && typeof this.mainContainer.invalidate === 'function') {
  623.                     this.mainContainer.invalidate();
  624.                     printl("ÊÓͼÒÑË¢ÐÂ");
  625.                 }
  626.             } catch (e) {
  627.                 printl("ˢв¼¾Öʧ°Ü: " + e);
  628.             }
  629.         }
  630.         
  631.         // ÉèÖð´Å¥Îı¾
  632.         if (this.toggleButton && typeof this.toggleButton.setText === 'function') {
  633.             try {
  634.                 this.toggleButton.setText("¡Ô");
  635.             } catch (e) {
  636.                 printl("❌ ÉèÖð´Å¥Îı¾Ê§°Ü: " + e);
  637.             }
  638.         }
  639.         
  640.         // ÑÓ³Ù100msºó¼Ç¼״̬¸üУ¬È·±£UIÒѸüÐÂ
  641.         setTimeout(function() {
  642.             try {
  643.                 if (widthSetSuccessfully) {
  644.                     printl("✅ " + (self.isExpanded ? "²àÀ¸ÒÑÕ¹¿ª" : "²àÀ¸ÒÑÊÕÆð"));
  645.                 } else {
  646.                     // Ö»¼Ç¼µÚÒ»¸ö´íÎóÐÅÏ¢£¬±ÜÃâÈÕÖ¾¹ý¶à
  647.                     var mainError = errorMessages.length > 0 ? errorMessages[0] : "δ֪´íÎó";
  648.                     printl(mainError);
  649.                     printl("⚠️ ²àÀ¸" + (self.isExpanded ? "Õ¹¿ª" : "ÊÕÆð") + "µ«¿í¶Èµ÷Õûʧ°Ü");
  650.                 }
  651.             } catch (e) {
  652.                 // ¾²Ä¬´¦ÀíÈÕÖ¾´íÎó
  653.             }
  654.         }, 100);
  655.         
  656.         return widthSetSuccessfully;
  657.     } catch (e) {
  658.         printl("❌ Ö´ÐÐÇл»Õ¹¿ª/ÊÕÆð²Ù×÷ʧ°Ü: " + e);
  659.         return false;
  660.     }
  661. };

  662. // Ìí¼ÓÈÕÖ¾
  663. ²àÀ¸ÈÕÖ¾.prototype.log = function(message, color) {
  664.     try {
  665.         // Éú³Éʱ¼ä´Á
  666.         var now = new Date();
  667.         var timeStr = now.getHours().toString().padStart(2, '0') + ":" +
  668.                       now.getMinutes().toString().padStart(2, '0') + ":" +
  669.                       now.getSeconds().toString().padStart(2, '0');
  670.         
  671.         // ¸ñʽ»¯ÈÕÖ¾ÌõÄ¿
  672.         var logEntry = "[" + timeStr + "] " + message;
  673.         
  674.         // Ìí¼Óµ½ÈÕÖ¾Êý×é
  675.         this.logs.push({text: logEntry, color: color || "#00FF00"});
  676.         
  677.         // ÏÞÖÆÈÕÖ¾ÊýÁ¿
  678.         if (this.logs.length > this.maxLogs) {
  679.             this.logs.shift(); // ÒÆ³ý×îÔçµÄÈÕÖ¾
  680.         }
  681.         
  682.         // ¸üÐÂÏÔʾ
  683.         this.updateLogDisplay();
  684.         
  685.         // ͬʱ´òÓ¡µ½¿ØÖÆÌ¨
  686.         printl(logEntry);
  687.     } catch (e) {
  688.         printl("❌ Ìí¼ÓÈÕ־ʧ°Ü: " + e);
  689.     }
  690. };

  691. // ¸üÐÂÈÕÖ¾ÏÔʾ
  692. ²àÀ¸ÈÕÖ¾.prototype.updateLogDisplay = function() {
  693.     try {
  694.         var self = this;
  695.         var uiOperation = function() {
  696.             self.performUpdateLogDisplay();
  697.         };
  698.         
  699.         // ³¢ÊÔ¶àÖÖUIÏ̵߳÷¶È·½°¸
  700.         var threadScheduled = false;
  701.         
  702.         // ·½°¸1: ʹÓÃcontext.runOnUiThread
  703.         try {
  704.             if (context && context.runOnUiThread) {
  705.                 var runnable = {
  706.                     run: function() {
  707.                         try {
  708.                             uiOperation();
  709.                         } catch (e) {
  710.                             printl("❌ UIÏß³ÌÖ´ÐÐÈÕÖ¾¸üÐÂʧ°Ü: " + e);
  711.                         }
  712.                     }
  713.                 };
  714.                 context.runOnUiThread(runnable);
  715.                 threadScheduled = true;
  716.             }
  717.         } catch (e) {
  718.             printl("❌ ·½°¸1: context.runOnUiThreadµ÷¶ÈÈÕÖ¾¸üÐÂʧ°Ü: " + e);
  719.         }
  720.         
  721.         // ·½°¸2: ʹÓÃView.post
  722.         if (!threadScheduled) {
  723.             try {
  724.                 var viewToUse = self.logText || self.logContainer || self.mainContainer;
  725.                 if (viewToUse && viewToUse.post) {
  726.                     viewToUse.post(function() {
  727.                         try {
  728.                             uiOperation();
  729.                         } catch (e) {
  730.                             printl("❌ View.postÖ´ÐÐÈÕÖ¾¸üÐÂʧ°Ü: " + e);
  731.                         }
  732.                     });
  733.                     threadScheduled = true;
  734.                 }
  735.             } catch (e) {
  736.                 printl("❌ ·½°¸2: View.postµ÷¶ÈÈÕÖ¾¸üÐÂʧ°Ü: " + e);
  737.             }
  738.         }
  739.         
  740.         // ·½°¸3: ³¢ÊÔʹÓÃHandler
  741.         if (!threadScheduled) {
  742.             try {
  743.                 if (typeof Handler !== 'undefined' && typeof Looper !== 'undefined' && Looper.getMainLooper) {
  744.                     var handler = new Handler(Looper.getMainLooper());
  745.                     handler.post(function() {
  746.                         try {
  747.                             uiOperation();
  748.                         } catch (e) {
  749.                             printl("❌ HandlerÖ´ÐÐÈÕÖ¾¸üÐÂʧ°Ü: " + e);
  750.                         }
  751.                     });
  752.                     threadScheduled = true;
  753.                 }
  754.             } catch (e) {
  755.                 printl("❌ ·½°¸3: Handlerµ÷¶ÈÈÕÖ¾¸üÐÂʧ°Ü: " + e);
  756.             }
  757.         }
  758.         
  759.         // ·½°¸4: Ö±½ÓÖ´ÐÐ×÷Ϊ×îºó±¸Ñ¡
  760.         if (!threadScheduled) {
  761.             try {
  762.                 uiOperation();
  763.             } catch (directError) {
  764.                 printl("❌ Ö±½ÓÖ´ÐÐÈÕÖ¾¸üÐÂʧ°Ü: " + directError);
  765.             }
  766.         }
  767.     } catch (e) {
  768.         printl("❌ ¸üÐÂÈÕÖ¾ÏÔʾʧ°Ü: " + e);
  769.     }
  770. };

  771. // Ö´ÐÐÈÕÖ¾ÏÔʾ¸üеĺËÐÄ·½·¨£¨Ó¦ÔÚÖ÷Ïß³ÌÖе÷Óã©
  772. ²àÀ¸ÈÕÖ¾.prototype.performUpdateLogDisplay = function() {
  773.     try {
  774.         // ¼ì²élogTextÊÇ·ñ´æÔÚ
  775.         if (!this.logText || typeof this.logText.setText !== 'function') {
  776.             printl("⚠️ ÈÕÖ¾ÏÔʾ×é¼þ²»¿ÉÓÃ");
  777.             return;
  778.         }
  779.         
  780.         // ¹¹½¨ÈÕÖ¾Îı¾
  781.         var logText = "";
  782.         var useHtml = false;
  783.         
  784.         // ³¢ÊÔHTML¸ñʽ
  785.         try {
  786.             if (typeof android.text.Html !== 'undefined' && typeof android.text.Html.fromHtml === 'function') {
  787.                 var htmlText = "";
  788.                 for (var i = 0; i < this.logs.length; i++) {
  789.                     var log = this.logs[i];
  790.                     var color = log.color || "#00FF00";
  791.                     htmlText += "<font color=\"" + color + "\">" + log.text + "</font><br/>";
  792.                 }
  793.                
  794.                 try {
  795.                     var spanned = android.text.Html.fromHtml(htmlText);
  796.                     this.logText.setText(spanned);
  797.                     useHtml = true;
  798.                     printl("✅ ÈÕ־ʹÓÃHTML¸ñʽÏÔʾ");
  799.                 } catch (htmlError) {
  800.                     printl("⚠️ HTML¸ñʽ»¯Ê§°Ü£¬»ØÍ˵½´¿Îı¾: " + htmlError);
  801.                 }
  802.             }
  803.         } catch (e) {
  804.             printl("⚠️ HTMLÖ§³Ö²»¿ÉÓÃ: " + e);
  805.         }
  806.         
  807.         // Èç¹ûHTML¸ñʽʧ°Ü£¬Ê¹Óô¿Îı¾¸ñʽ
  808.         if (!useHtml) {
  809.             for (var i = 0; i < this.logs.length; i++) {
  810.                 logText += this.logs[i].text + "\n";
  811.             }
  812.             
  813.             try {
  814.                 this.logText.setText(logText);
  815.                 printl("✅ ÈÕ־ʹÓô¿Îı¾¸ñʽÏÔʾ");
  816.             } catch (textError) {
  817.                 printl("❌ ÉèÖÃÈÕÖ¾Îı¾Ê§°Ü: " + textError);
  818.             }
  819.         }
  820.         
  821.         // ³¢ÊÔ¹ö¶¯µ½µ×²¿
  822.         var self = this;
  823.         try {
  824.             if (this.logContainer && typeof this.logContainer.post === 'function') {
  825.                 this.logContainer.post(function() {
  826.                     try {
  827.                         if (self.logContainer && typeof self.logContainer.fullScroll === 'function') {
  828.                             self.logContainer.fullScroll(android.widget.ScrollView.FOCUS_DOWN);
  829.                         }
  830.                     } catch (scrollError) {
  831.                         // ¾²Ä¬´¦Àí¹ö¶¯´íÎó
  832.                     }
  833.                 });
  834.             } else if (this.logContainer && typeof this.logContainer.fullScroll === 'function') {
  835.                 this.logContainer.fullScroll(android.widget.ScrollView.FOCUS_DOWN);
  836.             }
  837.         } catch (e) {
  838.             // ¾²Ä¬´¦Àí¹ö¶¯´íÎó
  839.         }
  840.     } catch (e) {
  841.         printl("❌ Ö´ÐÐÈÕÖ¾ÏÔʾ¸üÐÂʧ°Ü: " + e);
  842.     }
  843. };

  844. // ÉèÖÃÐü¸¡´°Î»ÖÃ
  845. ²àÀ¸ÈÕÖ¾.prototype.setPos = function(x, y) {
  846.     try {
  847.         var self = this;
  848.         
  849.         // ²ÎÊýÑéÖ¤
  850.         if (typeof x !== 'number' || typeof y !== 'number') {
  851.             printl("❌ setPos²ÎÊý´íÎó: xºÍy±ØÐëÊÇÊý×Ö");
  852.             return false;
  853.         }
  854.         
  855.         // ±ß½ç¼ì²é
  856.         var currentWidth = this.isExpanded ? this.sidebarWidth : this.sidebarMinWidth;
  857.         try {
  858.             if (context && context.getResources && context.getResources().getDisplayMetrics) {
  859.                 var density = context.getResources().getDisplayMetrics().density;
  860.                 currentWidth *= density;
  861.             }
  862.         } catch (e) {
  863.             currentWidth *= 3; // ʹÓÃĬÈÏÃܶȱ¶Êý
  864.         }
  865.         
  866.         if (x < 0) x = 0;
  867.         if (y < 0) y = 0;
  868.         if (x > this.screenWidth - currentWidth) x = this.screenWidth - currentWidth;
  869.         if (y > this.screenHeight - 100) y = this.screenHeight - 100;
  870.         
  871.         // ʹÓÃprintl±ÜÃâµÝ¹éµ÷ÓÃ
  872.         printl("&#128260; ÉèÖÃÐü¸¡´°Î»ÖÃ: x=" + x + ", y=" + y);
  873.         
  874.         // ¶¨ÒåUI²Ù×÷º¯Êý
  875.         var uiOperation = function() {
  876.             self.performSetPos(x, y);
  877.         };
  878.         
  879.         // ³¢ÊÔ¶àÖÖUIÏ̵߳÷¶È·½°¸
  880.         var threadScheduled = false;
  881.         
  882.         // ·½°¸1: ʹÓÃcontext.runOnUiThread
  883.         try {
  884.             if (context && context.runOnUiThread) {
  885.                 var runnable = {
  886.                     run: function() {
  887.                         try {
  888.                             uiOperation();
  889.                         } catch (e) {
  890.                             printl("❌ UIÏß³ÌÖ´ÐÐλÖÃÉèÖÃʧ°Ü: " + e);
  891.                         }
  892.                     }
  893.                 };
  894.                 context.runOnUiThread(runnable);
  895.                 threadScheduled = true;
  896.                 printl("✅ ʹÓÃcontext.runOnUiThreadµ÷¶ÈλÖÃÉèÖÃ");
  897.             }
  898.         } catch (e) {
  899.             printl("❌ ·½°¸1: context.runOnUiThreadµ÷¶ÈλÖÃÉèÖÃʧ°Ü: " + e);
  900.         }
  901.         
  902.         // ·½°¸2: ʹÓÃView.post
  903.         if (!threadScheduled) {
  904.             try {
  905.                 var viewToUse = self.mainContainer || self.titleBar || self.toggleButton;
  906.                 if (viewToUse && typeof viewToUse.post === 'function') {
  907.                     viewToUse.post(function() {
  908.                         try {
  909.                             uiOperation();
  910.                         } catch (e) {
  911.                             printl("❌ View.postÖ´ÐÐλÖÃÉèÖÃʧ°Ü: " + e);
  912.                         }
  913.                     });
  914.                     threadScheduled = true;
  915.                     printl("✅ ʹÓÃView.postµ÷¶ÈλÖÃÉèÖÃ");
  916.                 }
  917.             } catch (e) {
  918.                 printl("❌ ·½°¸2: View.postµ÷¶ÈλÖÃÉèÖÃʧ°Ü: " + e);
  919.             }
  920.         }
  921.         
  922.         // ·½°¸3: ³¢ÊÔʹÓÃHandler
  923.         if (!threadScheduled) {
  924.             try {
  925.                 if (typeof Handler !== 'undefined' && typeof Looper !== 'undefined' && Looper.getMainLooper) {
  926.                     var handler = new Handler(Looper.getMainLooper());
  927.                     handler.post(function() {
  928.                         try {
  929.                             uiOperation();
  930.                         } catch (e) {
  931.                             printl("❌ HandlerÖ´ÐÐλÖÃÉèÖÃʧ°Ü: " + e);
  932.                         }
  933.                     });
  934.                     threadScheduled = true;
  935.                     printl("✅ ʹÓÃHandlerµ÷¶ÈλÖÃÉèÖÃ");
  936.                 }
  937.             } catch (e) {
  938.                 printl("❌ ·½°¸3: Handlerµ÷¶ÈλÖÃÉèÖÃʧ°Ü: " + e);
  939.             }
  940.         }
  941.         
  942.         // ·½°¸4: Ö±½ÓÖ´ÐÐ×÷Ϊ×îºó±¸Ñ¡
  943.         if (!threadScheduled) {
  944.             printl("⚠️ ËùÓÐÏ̵߳÷¶È·½°¸Ê§°Ü£¬³¢ÊÔÖ±½ÓÖ´ÐÐλÖÃÉèÖÃ");
  945.             try {
  946.                 uiOperation();
  947.             } catch (directError) {
  948.                 printl("❌ Ö±½ÓÖ´ÐÐλÖÃÉèÖÃʧ°Ü: " + directError);
  949.             }
  950.         }
  951.         
  952.         return true;
  953.     } catch (e) {
  954.         printl("❌ ÉèÖÃλÖÃʧ°Ü: " + e);
  955.         return false;
  956.     }
  957. };

  958. // Ö´ÐÐÉèÖÃλÖõĺËÐÄ·½·¨£¨Ó¦ÔÚÖ÷Ïß³ÌÖе÷Óã©
  959. ²àÀ¸ÈÕÖ¾.prototype.performSetPos = function(x, y) {
  960.     try {
  961.         var posSetSuccess = false;
  962.         
  963.         // ·½°¸1: ³¢ÊÔʹÓÃfloatUIµÄsetPos·½·¨
  964.         try {
  965.             if (this.ui && this.ui.setPos) {
  966.                 this.ui.setPos(x, y);
  967.                 posSetSuccess = true;
  968.                 printl("✅ ·½°¸1: ʹÓÃfloatUI.setPosÉèÖÃλÖóɹ¦");
  969.             }
  970.         } catch (e) {
  971.             printl("❌ ·½°¸1: floatUI.setPosʧ°Ü: " + e);
  972.         }
  973.         
  974.         // ·½°¸2: ³¢ÊÔʹÓÃfloatUIµÄsetPosition·½·¨
  975.         if (!posSetSuccess) {
  976.             try {
  977.                 if (this.ui && this.ui.setPosition) {
  978.                     this.ui.setPosition(x, y);
  979.                     posSetSuccess = true;
  980.                     printl("✅ ·½°¸2: ʹÓÃfloatUI.setPositionÉèÖÃλÖóɹ¦");
  981.                 }
  982.             } catch (e) {
  983.                 printl("❌ ·½°¸2: floatUI.setPositionʧ°Ü: " + e);
  984.             }
  985.         }
  986.         
  987.         // ·½°¸3: ³¢ÊÔʹÓÃsetXºÍsetY·½·¨£¨Èç¹û¿ÉÓã©
  988.         if (!posSetSuccess) {
  989.             try {
  990.                 if (this.ui && typeof this.ui.setX === 'function' && typeof this.ui.setY === 'function') {
  991.                     this.ui.setX(x);
  992.                     this.ui.setY(y);
  993.                     posSetSuccess = true;
  994.                     printl("✅ ·½°¸3: ʹÓÃui.setX/setYÉèÖÃλÖóɹ¦");
  995.                 }
  996.             } catch (e) {
  997.                 printl("❌ ·½°¸3: ui.setX/setYʧ°Ü: " + e);
  998.             }
  999.         }
  1000.         
  1001.         // ·½°¸4: ³¢ÊÔͨ¹ýmainContainerÉèÖÃλÖÃ
  1002.         if (!posSetSuccess) {
  1003.             try {
  1004.                 if (this.mainContainer && typeof this.mainContainer.setX === 'function' && typeof this.mainContainer.setY === 'function') {
  1005.                     this.mainContainer.setX(x);
  1006.                     this.mainContainer.setY(y);
  1007.                     posSetSuccess = true;
  1008.                     printl("✅ ·½°¸4: ʹÓÃmainContainer.setX/setYÉèÖÃλÖóɹ¦");
  1009.                 }
  1010.             } catch (e) {
  1011.                 printl("❌ ·½°¸4: mainContainer.setX/setYʧ°Ü: " + e);
  1012.             }
  1013.         }
  1014.         
  1015.         // ·½°¸5: ³¢ÊÔͨ¹ýÖ±½Ó·ÃÎÊmainContainerÉèÖÃλÖÃ
  1016.         if (!posSetSuccess) {
  1017.             try {
  1018.                 if (this.mainContainer && typeof this.mainContainer.layout === 'function' && typeof this.mainContainer.getWidth === 'function' && typeof this.mainContainer.getHeight === 'function') {
  1019.                     this.mainContainer.layout(x, y, x + this.mainContainer.getWidth(), y + this.mainContainer.getHeight());
  1020.                     posSetSuccess = true;
  1021.                     printl("✅ ·½°¸5: ʹÓÃlayout·½·¨ÉèÖÃλÖóɹ¦");
  1022.                 }
  1023.             } catch (e) {
  1024.                 printl("❌ ·½°¸5: layout·½·¨Ê§°Ü: " + e);
  1025.             }
  1026.         }
  1027.         
  1028.         // Ë¢ÐÂUIÈ·±£Î»ÖøüÐÂÉúЧ
  1029.         if (posSetSuccess) {
  1030.             try {
  1031.                 // ³¢ÊÔ¶àÖÖˢз½·¨
  1032.                 if (this.mainContainer) {
  1033.                     if (typeof this.mainContainer.invalidate === 'function') {
  1034.                         this.mainContainer.invalidate();
  1035.                     }
  1036.                     if (typeof this.mainContainer.requestLayout === 'function') {
  1037.                         this.mainContainer.requestLayout();
  1038.                     }
  1039.                 }
  1040.                 printl("✅ λÖÃÉèÖÃË¢ÐÂÍê³É");
  1041.             } catch (refreshError) {
  1042.                 printl("⚠️ Ë¢ÐÂλÖÃʱ³ö´í: " + refreshError);
  1043.             }
  1044.         } else {
  1045.             printl("⚠️ λÖÃÉèÖÃÍê³Éµ«¿ÉÄÜδÉúЧ");
  1046.         }
  1047.         
  1048.         return posSetSuccess;
  1049.     } catch (e) {
  1050.         printl("❌ Ö´ÐÐλÖÃÉèÖÃʧ°Ü: " + e);
  1051.         return false;
  1052.     }
  1053. };

  1054. // Çå¿ÕÈÕÖ¾
  1055. ²àÀ¸ÈÕÖ¾.prototype.clearLogs = function() {
  1056.     try {
  1057.         // Çå¿ÕÈÕÖ¾Êý×é
  1058.         this.logs = [];
  1059.         
  1060.         // Çå¿ÕÈÕÖ¾ÏÔʾ
  1061.         if (this.logText && this.logText.setText) {
  1062.             try {
  1063.                 this.logText.setText("");
  1064.             } catch (setTextError) {
  1065.                 printl("⚠️ Çå¿ÕÈÕÖ¾ÏÔʾʧ°Ü: " + setTextError);
  1066.             }
  1067.         }
  1068.         
  1069.         // ¼Ç¼Çå¿Õ²Ù×÷
  1070.         this.log("&#128465;️ ÈÕÖ¾ÒÑÇå¿Õ", "#FF0000");
  1071.         return true;
  1072.     } catch (e) {
  1073.         printl("❌ Çå¿ÕÈÕ־ʧ°Ü: " + e);
  1074.         return false;
  1075.     }
  1076. };

  1077. // ¹Ø±ÕÐü¸¡´°
  1078. ²àÀ¸ÈÕÖ¾.prototype.close = function() {
  1079.     try {
  1080.         var self = this;
  1081.         
  1082.         // ʹÓÃprintl±ÜÃâµÝ¹éµ÷ÓÃ
  1083.         printl("&#128260; ÕýÔڹرղàÀ¸ÈÕÖ¾Ðü¸¡´°...");
  1084.         
  1085.         // ¶¨ÒåUI²Ù×÷º¯Êý
  1086.         var uiOperation = function() {
  1087.             self.performClose();
  1088.         };
  1089.         
  1090.         // ³¢ÊÔ¶àÖÖUIÏ̵߳÷¶È·½°¸
  1091.         var threadScheduled = false;
  1092.         
  1093.         // ·½°¸1: ʹÓÃcontext.runOnUiThread
  1094.         try {
  1095.             if (context && context.runOnUiThread) {
  1096.                 var runnable = {
  1097.                     run: function() {
  1098.                         try {
  1099.                             uiOperation();
  1100.                         } catch (e) {
  1101.                             printl("❌ UIÏß³ÌÖ´ÐйرղÙ×÷ʧ°Ü: " + e);
  1102.                         }
  1103.                     }
  1104.                 };
  1105.                 context.runOnUiThread(runnable);
  1106.                 threadScheduled = true;
  1107.                 printl("✅ ʹÓÃcontext.runOnUiThreadµ÷¶È¹Ø±Õ²Ù×÷");
  1108.             }
  1109.         } catch (e) {
  1110.             printl("❌ ·½°¸1: context.runOnUiThreadµ÷¶È¹Ø±Õ²Ù×÷ʧ°Ü: " + e);
  1111.         }
  1112.         
  1113.         // ·½°¸2: ʹÓÃView.post
  1114.         if (!threadScheduled) {
  1115.             try {
  1116.                 var viewToUse = self.mainContainer || self.titleBar || self.toggleButton;
  1117.                 if (viewToUse && typeof viewToUse.post === 'function') {
  1118.                     viewToUse.post(function() {
  1119.                         try {
  1120.                             uiOperation();
  1121.                         } catch (e) {
  1122.                             printl("❌ View.postÖ´ÐйرղÙ×÷ʧ°Ü: " + e);
  1123.                         }
  1124.                     });
  1125.                     threadScheduled = true;
  1126.                     printl("✅ ʹÓÃView.postµ÷¶È¹Ø±Õ²Ù×÷");
  1127.                 }
  1128.             } catch (e) {
  1129.                 printl("❌ ·½°¸2: View.postµ÷¶È¹Ø±Õ²Ù×÷ʧ°Ü: " + e);
  1130.             }
  1131.         }
  1132.         
  1133.         // ·½°¸3: ³¢ÊÔʹÓÃHandler
  1134.         if (!threadScheduled) {
  1135.             try {
  1136.                 if (typeof Handler !== 'undefined' && typeof Looper !== 'undefined' && Looper.getMainLooper) {
  1137.                     var handler = new Handler(Looper.getMainLooper());
  1138.                     handler.post(function() {
  1139.                         try {
  1140.                             uiOperation();
  1141.                         } catch (e) {
  1142.                             printl("❌ HandlerÖ´ÐйرղÙ×÷ʧ°Ü: " + e);
  1143.                         }
  1144.                     });
  1145.                     threadScheduled = true;
  1146.                     printl("✅ ʹÓÃHandlerµ÷¶È¹Ø±Õ²Ù×÷");
  1147.                 }
  1148.             } catch (e) {
  1149.                 printl("❌ ·½°¸3: Handlerµ÷¶È¹Ø±Õ²Ù×÷ʧ°Ü: " + e);
  1150.             }
  1151.         }
  1152.         
  1153.         // ·½°¸4: Ö±½ÓÖ´ÐÐ×÷Ϊ×îºó±¸Ñ¡
  1154.         if (!threadScheduled) {
  1155.             printl("⚠️ ËùÓÐÏ̵߳÷¶È·½°¸Ê§°Ü£¬³¢ÊÔÖ±½ÓÖ´ÐйرղÙ×÷");
  1156.             try {
  1157.                 uiOperation();
  1158.             } catch (directError) {
  1159.                 printl("❌ Ö±½ÓÖ´ÐйرղÙ×÷ʧ°Ü: " + directError);
  1160.             }
  1161.         }
  1162.     } catch (e) {
  1163.         printl("❌ ¹Ø±Õ²àÀ¸ÈÕÖ¾Ðü¸¡´°Ê§°Ü: " + e);
  1164.     }
  1165. };

  1166. // Ö´ÐйرղÙ×÷µÄºËÐÄ·½·¨£¨Ó¦ÔÚÖ÷Ïß³ÌÖе÷Óã©
  1167. ²àÀ¸ÈÕÖ¾.prototype.performClose = function() {
  1168.     try {
  1169.         printl("&#128260; Ö´ÐÐÐü¸¡´°¹Ø±Õ²Ù×÷...");
  1170.         
  1171.         // ³¢ÊÔ¶àÖֹرշ½°¸
  1172.         var closeSuccess = false;
  1173.         
  1174.         // ·½°¸1: ³¢ÊÔʹÓÃclose·½·¨
  1175.         try {
  1176.             if (this.ui && typeof this.ui.close === 'function') {
  1177.                 this.ui.close();
  1178.                 closeSuccess = true;
  1179.                 printl("✅ ·½°¸1: ʹÓÃui.close()³É¹¦¹Ø±Õ");
  1180.             }
  1181.         } catch (e) {
  1182.             printl("❌ ·½°¸1: ʹÓÃui.close()¹Ø±Õʧ°Ü: " + e);
  1183.         }
  1184.         
  1185.         // ·½°¸2: ³¢ÊÔʹÓÃdestroy·½·¨
  1186.         if (!closeSuccess) {
  1187.             try {
  1188.                 if (this.ui && typeof this.ui.destroy === 'function') {
  1189.                     this.ui.destroy();
  1190.                     closeSuccess = true;
  1191.                     printl("✅ ·½°¸2: ʹÓÃui.destroy()³É¹¦¹Ø±Õ");
  1192.                 }
  1193.             } catch (e) {
  1194.                 printl("❌ ·½°¸2: ʹÓÃui.destroy()¹Ø±Õʧ°Ü: " + e);
  1195.             }
  1196.         }
  1197.         
  1198.         // ·½°¸3: ³¢ÊÔ´Ó¸¸ÈÝÆ÷ÒÆ³ý
  1199.         if (!closeSuccess) {
  1200.             try {
  1201.                 if (this.mainContainer && typeof this.mainContainer.getParent === 'function') {
  1202.                     var parent = this.mainContainer.getParent();
  1203.                     if (parent && typeof parent.removeView === 'function') {
  1204.                         parent.removeView(this.mainContainer);
  1205.                         closeSuccess = true;
  1206.                         printl("✅ ·½°¸3: ´Ó¸¸ÈÝÆ÷ÒÆ³ý³É¹¦");
  1207.                     }
  1208.                 }
  1209.             } catch (e) {
  1210.                 printl("❌ ·½°¸3: ´Ó¸¸ÈÝÆ÷ÒÆ³ýʧ°Ü: " + e);
  1211.             }
  1212.         }
  1213.         
  1214.         // ·½°¸4: ³¢ÊÔÒþ²ØÊÓͼ
  1215.         if (!closeSuccess) {
  1216.             try {
  1217.                 if (this.mainContainer && typeof this.mainContainer.setVisibility === 'function') {
  1218.                     this.mainContainer.setVisibility(View.GONE);
  1219.                     closeSuccess = true;
  1220.                     printl("✅ ·½°¸4: Òþ²ØÊÓͼ³É¹¦");
  1221.                 }
  1222.             } catch (e) {
  1223.                 printl("❌ ·½°¸4: Òþ²ØÊÓͼʧ°Ü: " + e);
  1224.             }
  1225.         }
  1226.         
  1227.         // ÇåÀí×ÊÔ´
  1228.         try {
  1229.             // Çå³ýʼþ¼àÌýÆ÷
  1230.             if (this.titleBar && typeof this.titleBar.setOnTouchListener === 'function') {
  1231.                 this.titleBar.setOnTouchListener(null);
  1232.             }
  1233.             if (this.toggleButton && typeof this.toggleButton.setOnClickListener === 'function') {
  1234.                 this.toggleButton.setOnClickListener(null);
  1235.             }
  1236.             if (this.closeButton && typeof this.closeButton.setOnClickListener === 'function') {
  1237.                 this.closeButton.setOnClickListener(null);
  1238.             }
  1239.             
  1240.             // Çå³ýÒýÓ㬰ïÖúÀ¬»ø»ØÊÕ
  1241.             this.ui = null;
  1242.             this.mainContainer = null;
  1243.             this.titleBar = null;
  1244.             this.toggleButton = null;
  1245.             this.closeButton = null;
  1246.             this.titleText = null;
  1247.             this.logContainer = null;
  1248.             this.logText = null;
  1249.             this.logs = null;
  1250.             
  1251.             printl("✅ ×ÊÔ´ÇåÀíÍê³É");
  1252.         } catch (cleanupError) {
  1253.             printl("⚠️ ×ÊÔ´ÇåÀíʱ³ö´í: " + cleanupError);
  1254.         }
  1255.         
  1256.         // ¸üÐÂ״̬
  1257.         sidebarLogger = null;
  1258.         
  1259.         // ¼Ç¼¹Ø±Õ½á¹û
  1260.         if (closeSuccess) {
  1261.             printl("✅ ²àÀ¸ÈÕÖ¾Ðü¸¡´°Òѳɹ¦¹Ø±Õ");
  1262.         } else {
  1263.             printl("⚠️ ²àÀ¸ÈÕÖ¾Ðü¸¡´°³¢ÊԹرգ¬µ«¿ÉÄÜδÍêÈ«³É¹¦");
  1264.         }
  1265.         
  1266.         return closeSuccess;
  1267.     } catch (e) {
  1268.         printl("❌ Ö´ÐйرղÙ×÷ʧ°Ü: " + e);
  1269.         return false;
  1270.     }
  1271. };

  1272. // ´´½¨²¢Æô¶¯²àÀ¸ÈÕÖ¾Ðü¸¡´°
  1273. var sidebarLogger = null;

  1274. // °æ±¾ÐÅÏ¢
  1275. const SIDEBAR_LOGGER_VERSION = "1.2.0";

  1276. // ³õʼ»¯Ðü¸¡´°
  1277. function initSidebarLogger(options) {
  1278.     try {
  1279.         // ·ÀÖ¹ÖØ¸´³õʼ»¯
  1280.         if (sidebarLogger) {
  1281.             printl("⚠️ ²àÀ¸ÈÕÖ¾ÒѾ­³õʼ»¯£¬ÎÞÐèÖØ¸´´´½¨");
  1282.             return sidebarLogger;
  1283.         }
  1284.         
  1285.         // ºÏ²¢Ä¬ÈÏÑ¡ÏîºÍÓû§Ñ¡Ïî
  1286.         options = options || {};
  1287.         
  1288.         // »·¾³¼ì²é
  1289.         if (typeof floatUI === 'undefined') {
  1290.             printl("❌ ´íÎó£ºÎ´ÕÒµ½floatUI¿â£¬ÇëÈ·±£ÔÚAIWROK»·¾³ÖÐÔËÐУ¡");
  1291.             return null;
  1292.         }
  1293.         
  1294.         // ´òÓ¡Æô¶¯ÐÅÏ¢
  1295.         printl("====================================");
  1296.         printl("&#128260; ²àÀ¸ÈÕÖ¾Ðü¸¡´°³õʼ»¯ÖÐ...");
  1297.         printl("&#128241; °æ±¾: " + SIDEBAR_LOGGER_VERSION);
  1298.         printl("====================================");
  1299.         
  1300.         // ´´½¨Ðü¸¡´°ÊµÀý
  1301.         sidebarLogger = new ²àÀ¸ÈÕÖ¾();
  1302.         
  1303.         // ´´½¨Ðü¸¡´°
  1304.         if (sidebarLogger.create()) {
  1305.             printl("✅ ²àÀ¸ÈÕÖ¾Ðü¸¡´°ÒÑ´´½¨³É¹¦£¡");
  1306.             
  1307.             // Ìí¼Ó»¶Ó­ÈÕÖ¾
  1308.             sidebarLogger.log("&#127881; »¶Ó­Ê¹ÓòàÀ¸ÈÕÖ¾¹¤¾ß", "#00FFFF");
  1309.             sidebarLogger.log("&#128241; °æ±¾: " + SIDEBAR_LOGGER_VERSION, "#00FFFF");
  1310.             sidebarLogger.log("&#128161; µã»÷¡Ô°´Å¥Õ¹¿ª/ÊÕÆð²àÀ¸", "#FFFF00");
  1311.             sidebarLogger.log("&#128260; Í϶¯±êÌâÀ¸¿ÉÒÆ¶¯Ðü¸¡´°", "#FFFF00");
  1312.             sidebarLogger.log("&#128465;️ ÓÒÉϽǹرհ´Å¥¿É¹Ø±ÕÐü¸¡´°", "#FFFF00");
  1313.             sidebarLogger.log("&#128161; ¿ÉʹÓÃsidebarLogger.log()Ìí¼Ó×Ô¶¨ÒåÈÕÖ¾", "#00FF00");
  1314.             
  1315.             // ×Ô¶¯Õ¹¿ªÐü¸¡´°£¬ÈÃÓû§¿´µ½¹Ø±Õ°´Å¥
  1316.             try {
  1317.                 setTimeout(function() {
  1318.                     if (sidebarLogger && typeof sidebarLogger.toggleExpand === 'function') {
  1319.                         sidebarLogger.toggleExpand();
  1320.                     }
  1321.                 }, 500);
  1322.             } catch (autoExpandError) {
  1323.                 printl("⚠️ ×Ô¶¯Õ¹¿ªÊ§°Ü: " + autoExpandError);
  1324.             }
  1325.             
  1326.             return sidebarLogger;
  1327.         } else {
  1328.             printl("❌ ²àÀ¸ÈÕÖ¾Ðü¸¡´°´´½¨Ê§°Ü£¡");
  1329.             sidebarLogger = null;
  1330.             return null;
  1331.         }
  1332.     } catch (e) {
  1333.         printl("❌ ³õʼ»¯²àÀ¸ÈÕ־ʧ°Ü: " + e);
  1334.         sidebarLogger = null;
  1335.         return null;
  1336.     }
  1337. }

  1338. // °²È«»ñÈ¡²àÀ¸ÈÕ־ʵÀý
  1339. function getSidebarLogger() {
  1340.     return sidebarLogger;
  1341. }

  1342. // °²È«µØ¼Ç¼ÈÕÖ¾£¨¼´Ê¹Ðü¸¡´°Î´³õʼ»¯Ò²²»»á±¨´í£©
  1343. function safeLog(message, color) {
  1344.     if (sidebarLogger && typeof sidebarLogger.log === 'function') {
  1345.         try {
  1346.             sidebarLogger.log(message, color);
  1347.             return true;
  1348.         } catch (e) {
  1349.             printl("⚠️ ¼Ç¼ÈÕ־ʧ°Ü: " + e);
  1350.         }
  1351.     }
  1352.     // ½µ¼¶µ½console.log
  1353.     printl(message || "");
  1354.     return false;
  1355. }

  1356. // Æô¶¯Ðü¸¡´°
  1357. try {
  1358.     // ÑÓ³Ù³õʼ»¯£¬È·±£»·¾³×¼±¸¾ÍÐ÷
  1359.     setTimeout(function() {
  1360.         initSidebarLogger();
  1361.     }, 100);
  1362. } catch (startupError) {
  1363.     printl("❌ Æô¶¯Ðü¸¡´°Ê§°Ü: " + startupError);
  1364.     // ×÷Ϊ×îºóµÄ±¸Ñ¡£¬³¢ÊÔÖ±½Ó³õʼ»¯
  1365.     try {
  1366.         initSidebarLogger();
  1367.     } catch (finalError) {
  1368.         printl("❌ Ö±½Ó³õʼ»¯Ò²Ê§°Ü: " + finalError);
  1369.     }
  1370. }
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

¹Ø±Õ

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

map2

GMT+8, 2025-10-1 13:18 , Processed in 0.640646 second(s), 36 queries .

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