|
|
AIWROK°²×¿½Å±¾¶ÔÏó¸ß¼¶ÊµÓÃʾÀý
- //½»Á÷QQȺ: 711841924 (Ⱥһ) / 528816639 (°²×¿ÄÚ²âȺ)
- // AIWROKÈí¼þ - JavaScript¶ÔÏó¸ß¼¶Ó¦ÓÃʵÀý
- // »ùÓÚÃæÏò¶ÔÏó˼ÏëÉè¼ÆµÄ×Ô¶¯»¯ÈÎÎñ¹ÜÀíϵͳ
- // ÑÝʾÈçºÎÔÚAIWROKÖÐʹÓöÔÏó¡¢ÊôÐԺͷ½·¨¹¹½¨¸´ÔÓÓ¦ÓÃ
- /**
- * =============================================================================
- * AIWROK ×Ô¶¯»¯ÈÎÎñ¹ÜÀíÆ÷ - ÍêÕûʾÀý
- * =============================================================================
- * ±¾Ê¾ÀýչʾÈçºÎʹÓÃJavaScript¶ÔÏó·â×°¸´ÔÓµÄ×Ô¶¯»¯Âß¼
- * °üº¬£ºÈÎÎñ¹ÜÀí¡¢ÅäÖùÜÀí¡¢ÈÕ־ϵͳ¡¢×´Ì¬¼à¿ØµÈÄ£¿é
- *
- * ¼æÈÝÐÔ£ºRhino ÒýÇæ (ES5)
- * ƽ̨£ºAIWROK °²×¿×Ô¶¯»¯Èí¼þ
- * =============================================================================
- */
- // =============================================================================
- // µÚÒ»²¿·Ö£ºÅäÖùÜÀí¶ÔÏó (ConfigManager)
- // =============================================================================
- /**
- * ÅäÖùÜÀíÆ÷¶ÔÏó
- * ·â×°AIWROKµÄconfig¶Áд¹¦ÄÜ£¬Ìṩ¸ü±ã½ÝµÄ½Ó¿Ú
- */
- var ConfigManager = {
- // ÊôÐÔ£ºÅäÖÃÎļþ·¾¶
- configPath: '/sdcard/aiwrok_task_config.ini',
-
- // ÊôÐÔ£º»º´æµÄÅäÖÃÊý¾Ý
- cache: {},
-
- // ·½·¨£º³õʼ»¯ÅäÖÃ
- init: function() {
- printl('ÅäÖùÜÀíÆ÷³õʼ»¯...');
- this.cache = {};
- return true;
- },
-
- // ·½·¨£º¶ÁÈ¡ÅäÖ㨴ø»º´æ£©
- get: function(key, defaultValue) {
- // Ïȼì²é»º´æ
- if (this.cache.hasOwnProperty(key)) {
- return this.cache[key];
- }
-
- // ´ÓÎļþ¶ÁÈ¡
- try {
- var value = config.getConfig(this.configPath, key, defaultValue);
- this.cache[key] = value; // ´æÈ뻺´æ
- return value;
- } catch (e) {
- printl('¶ÁÈ¡ÅäÖÃʧ°Ü [' + key + ']: ' + e);
- return defaultValue;
- }
- },
-
- // ·½·¨£ºÐ´ÈëÅäÖÃ
- set: function(key, value) {
- try {
- config.setConfig(this.configPath, key, value.toString());
- this.cache[key] = value.toString(); // ¸üлº´æ
- return true;
- } catch (e) {
- printl('дÈëÅäÖÃʧ°Ü [' + key + ']: ' + e);
- return false;
- }
- },
-
- // ·½·¨£ºÅúÁ¿¶ÁÈ¡ÅäÖÃ
- loadAll: function(keys) {
- var result = {};
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- result[key] = this.get(key, '');
- }
- return result;
- },
-
- // ·½·¨£ºÅúÁ¿Ð´ÈëÅäÖÃ
- saveAll: function(configObj) {
- var success = true;
- for (var key in configObj) {
- if (configObj.hasOwnProperty(key)) {
- if (!this.set(key, configObj[key])) {
- success = false;
- }
- }
- }
- return success;
- },
-
- // ·½·¨£ºÇå³ý»º´æ
- clearCache: function() {
- this.cache = {};
- printl('ÅäÖûº´æÒÑÇå³ý');
- }
- };
- // =============================================================================
- // µÚ¶þ²¿·Ö£ºÈÕÖ¾¹ÜÀí¶ÔÏó (Logger)
- // =============================================================================
- /**
- * ÈÕÖ¾¹ÜÀíÆ÷¶ÔÏó
- * ÌṩͳһµÄÈÕÖ¾Êä³ö½Ó¿Ú£¬Ö§³Ö²»Í¬¼¶±ðºÍ¸ñʽ
- */
- var Logger = {
- // ÊôÐÔ£ºÈÕÖ¾¼¶±ð³£Á¿
- LEVEL_DEBUG: 0,
- LEVEL_INFO: 1,
- LEVEL_WARN: 2,
- LEVEL_ERROR: 3,
-
- // ÊôÐÔ£ºµ±Ç°ÈÕÖ¾¼¶±ð
- currentLevel: 1, // ĬÈÏINFO¼¶±ð
-
- // ÊôÐÔ£ºÊÇ·ñÆôÓÃʱ¼ä´Á
- enableTimestamp: true,
-
- // ÊôÐÔ£ºÈÕÖ¾ÀúÊ·¼Ç¼
- history: [],
-
- // ÊôÐÔ£º×î´óÀúÊ·¼Ç¼Êý
- maxHistory: 100,
-
- // ·½·¨£ºÉèÖÃÈÕÖ¾¼¶±ð
- setLevel: function(level) {
- this.currentLevel = level;
- printl('ÈÕÖ¾¼¶±ðÉèÖÃΪ: ' + level);
- },
-
- // ·½·¨£ºDEBUG¼¶±ðÈÕÖ¾
- debug: function(message) {
- if (this.currentLevel <= this.LEVEL_DEBUG) {
- this.log('DEBUG', message);
- }
- },
-
- // ·½·¨£ºINFO¼¶±ðÈÕÖ¾
- info: function(message) {
- if (this.currentLevel <= this.LEVEL_INFO) {
- this.log('INFO', message);
- }
- },
-
- // ·½·¨£ºWARN¼¶±ðÈÕÖ¾
- warn: function(message) {
- if (this.currentLevel <= this.LEVEL_WARN) {
- this.log('WARN', message);
- }
- },
-
- // ·½·¨£ºERROR¼¶±ðÈÕÖ¾
- error: function(message) {
- if (this.currentLevel <= this.LEVEL_ERROR) {
- this.log('ERR', message);
- }
- },
-
- // ÄÚ²¿·½·¨£ºÍ³Ò»ÈÕÖ¾Êä³ö
- log: function(level, message) {
- var timestamp = '';
- if (this.enableTimestamp) {
- var now = new Date();
- timestamp = '[' + this.formatDate(now) + '] ';
- }
-
- var logMessage = timestamp + '[' + level + '] ' + message;
- printl(logMessage);
-
- // ±£´æµ½ÀúÊ·¼Ç¼
- this.history.push({
- time: new Date(),
- level: level,
- message: message
- });
-
- // ÏÞÖÆÀúÊ·¼Ç¼ÊýÁ¿
- if (this.history.length > this.maxHistory) {
- this.history.shift();
- }
- },
-
- // ·½·¨£º¸ñʽ»¯ÈÕÆÚ
- formatDate: function(date) {
- var year = date.getFullYear();
- var month = ('0' + (date.getMonth() + 1)).slice(-2);
- var day = ('0' + date.getDate()).slice(-2);
- var hours = ('0' + date.getHours()).slice(-2);
- var minutes = ('0' + date.getMinutes()).slice(-2);
- var seconds = ('0' + date.getSeconds()).slice(-2);
- return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
- },
-
- // ·½·¨£º»ñÈ¡×î½üµÄÈÕÖ¾
- getRecentLogs: function(count) {
- count = count || 10;
- var start = Math.max(0, this.history.length - count);
- return this.history.slice(start);
- },
-
- // ·½·¨£ºÇå¿ÕÈÕÖ¾ÀúÊ·
- clearHistory: function() {
- this.history = [];
- printl('ÈÕÖ¾ÀúÊ·ÒÑÇå¿Õ');
- }
- };
- // =============================================================================
- // µÚÈý²¿·Ö£ºÈÎÎñ¶ÔÏó (Task)
- // =============================================================================
- /**
- * ÈÎÎñ¶ÔÏó¹¹Ô캯Êý
- * ±íʾһ¸ö¿ÉÖ´ÐеÄ×Ô¶¯»¯ÈÎÎñ
- */
- function Task(name, description) {
- // ÊôÐÔ£ºÈÎÎñ»ù±¾ÐÅÏ¢
- this.name = name || 'δÃüÃûÈÎÎñ';
- this.description = description || '';
- this.status = 'pending'; // pending, running, completed, failed, paused
- this.startTime = null;
- this.endTime = null;
- this.duration = 0;
- this.retryCount = 0;
- this.maxRetry = 3;
-
- // ÊôÐÔ£ºÈÎÎñÖ´Ðк¯Êý
- this.executeFunc = null;
-
- // ÊôÐÔ£ºÈÎÎñ»Øµ÷
- this.onComplete = null;
- this.onError = null;
- }
- // ·½·¨£ºÉèÖÃÖ´Ðк¯Êý
- Task.prototype.setExecuteFunction = function(func) {
- this.executeFunc = func;
- return this; // Ö§³ÖÁ´Ê½µ÷ÓÃ
- };
- // ·½·¨£ºÉèÖÃ×î´óÖØÊÔ´ÎÊý
- Task.prototype.setMaxRetry = function(count) {
- this.maxRetry = count;
- return this;
- };
- // ·½·¨£ºÉèÖÃÍê³É»Øµ÷
- Task.prototype.setOnComplete = function(callback) {
- this.onComplete = callback;
- return this;
- };
- // ·½·¨£ºÉèÖôíÎ󻨵÷
- Task.prototype.setOnError = function(callback) {
- this.onError = callback;
- return this;
- };
- // ·½·¨£ºÖ´ÐÐÈÎÎñ
- Task.prototype.run = function() {
- if (!this.executeFunc) {
- Logger.error('ÈÎÎñ [' + this.name + '] ûÓÐÉèÖÃÖ´Ðк¯Êý');
- return false;
- }
-
- if (this.status === 'running') {
- Logger.warn('ÈÎÎñ [' + this.name + '] ÕýÔÚÔËÐÐÖÐ');
- return false;
- }
-
- try {
- // ¸üÐÂ״̬
- this.status = 'running';
- this.startTime = new Date();
- Logger.info('ÈÎÎñ [' + this.name + '] ¿ªÊ¼Ö´ÐÐ');
-
- // Ö´ÐÐÈÎÎñº¯Êý
- var result = this.executeFunc();
-
- // ¸üÐÂ״̬
- this.endTime = new Date();
- this.duration = this.endTime - this.startTime;
- this.status = 'completed';
-
- Logger.info('ÈÎÎñ [' + this.name + '] Ö´ÐÐÍê³É£¬ºÄʱ: ' + this.duration + 'ms');
-
- // µ÷ÓÃÍê³É»Øµ÷
- if (this.onComplete) {
- this.onComplete(result);
- }
-
- return true;
- } catch (e) {
- this.status = 'failed';
- this.endTime = new Date();
- this.duration = this.endTime - this.startTime;
-
- Logger.error('ÈÎÎñ [' + this.name + '] Ö´ÐÐʧ°Ü: ' + e);
-
- // ÖØÊÔÂß¼
- if (this.retryCount < this.maxRetry) {
- this.retryCount++;
- Logger.warn('ÈÎÎñ [' + this.name + '] µÚ' + this.retryCount + '´ÎÖØÊÔ');
- sleep.millisecond(1000); // µÈ´ý1ÃëºóÖØÊÔ
- return this.run();
- }
-
- // µ÷ÓôíÎ󻨵÷
- if (this.onError) {
- this.onError(e);
- }
-
- return false;
- }
- };
- // ·½·¨£ºÔÝÍ£ÈÎÎñ
- Task.prototype.pause = function() {
- if (this.status === 'running') {
- this.status = 'paused';
- Logger.info('ÈÎÎñ [' + this.name + '] ÒÑÔÝÍ£');
- return true;
- }
- return false;
- };
- // ·½·¨£º»Ö¸´ÈÎÎñ
- Task.prototype.resume = function() {
- if (this.status === 'paused') {
- this.status = 'running';
- Logger.info('ÈÎÎñ [' + this.name + '] Òѻָ´');
- return true;
- }
- return false;
- };
- // ·½·¨£ºÖØÖÃÈÎÎñ
- Task.prototype.reset = function() {
- this.status = 'pending';
- this.startTime = null;
- this.endTime = null;
- this.duration = 0;
- this.retryCount = 0;
- Logger.info('ÈÎÎñ [' + this.name + '] ÒÑÖØÖÃ');
- };
- // ·½·¨£º»ñÈ¡ÈÎÎñÐÅÏ¢
- Task.prototype.getInfo = function() {
- return {
- name: this.name,
- description: this.description,
- status: this.status,
- startTime: this.startTime ? this.startTime.toLocaleString() : null,
- endTime: this.endTime ? this.endTime.toLocaleString() : null,
- duration: this.duration,
- retryCount: this.retryCount,
- maxRetry: this.maxRetry
- };
- };
- // ·½·¨£º´òÓ¡ÈÎÎñÐÅÏ¢
- Task.prototype.printInfo = function() {
- var info = this.getInfo();
- printl('===== ÈÎÎñÐÅÏ¢ =====');
- printl('Ãû³Æ: ' + info.name);
- printl('ÃèÊö: ' + info.description);
- printl('״̬: ' + this.getStatusText(info.status));
- printl('¿ªÊ¼Ê±¼ä: ' + (info.startTime || 'δ¿ªÊ¼'));
- printl('½áÊøÊ±¼ä: ' + (info.endTime || 'δ½áÊø'));
- printl('ºÄʱ: ' + info.duration + 'ms');
- printl('ÖØÊÔ´ÎÊý: ' + info.retryCount + '/' + info.maxRetry);
- printl('===================');
- };
- // ¸¨Öú·½·¨£º×´Ì¬Îı¾×ª»»
- Task.prototype.getStatusText = function(status) {
- var statusMap = {
- 'pending': 'µÈ´ýÖÐ',
- 'running': 'ÔËÐÐÖÐ',
- 'completed': 'ÒÑÍê³É',
- 'failed': 'ʧ°Ü',
- 'paused': 'ÒÑÔÝÍ£'
- };
- return statusMap[status] || status;
- };
- // =============================================================================
- // µÚËIJ¿·Ö£ºÈÎÎñ¹ÜÀíÆ÷¶ÔÏó (TaskManager)
- // =============================================================================
- /**
- * ÈÎÎñ¹ÜÀíÆ÷¶ÔÏó
- * ¹ÜÀí¶à¸öÈÎÎñµÄÖ´ÐС¢µ÷¶ÈºÍ¼à¿Ø
- */
- var TaskManager = {
- // ÊôÐÔ£ºÈÎÎñÁбí
- tasks: [],
-
- // ÊôÐÔ£ºµ±Ç°ÔËÐеÄÈÎÎñË÷Òý
- currentTaskIndex: -1,
-
- // ÊôÐÔ£ºÊÇ·ñ×Ô¶¯Ö´ÐÐÏÂÒ»¸öÈÎÎñ
- autoExecuteNext: true,
-
- // ·½·¨£ºÌí¼ÓÈÎÎñ
- addTask: function(task) {
- if (!(task instanceof Task)) {
- Logger.error('Ìí¼ÓµÄÈÎÎñ²»ÊÇTask¶ÔÏó');
- return false;
- }
- this.tasks.push(task);
- Logger.info('ÒÑÌí¼ÓÈÎÎñ: ' + task.name);
- return true;
- },
-
- // ·½·¨£ºÒƳýÈÎÎñ
- removeTask: function(taskName) {
- for (var i = 0; i < this.tasks.length; i++) {
- if (this.tasks[i].name === taskName) {
- this.tasks.splice(i, 1);
- Logger.info('ÒÑÒÆ³ýÈÎÎñ: ' + taskName);
- return true;
- }
- }
- Logger.warn('δÕÒµ½ÈÎÎñ: ' + taskName);
- return false;
- },
-
- // ·½·¨£º»ñÈ¡ÈÎÎñ
- getTask: function(taskName) {
- for (var i = 0; i < this.tasks.length; i++) {
- if (this.tasks[i].name === taskName) {
- return this.tasks[i];
- }
- }
- return null;
- },
-
- // ·½·¨£ºÖ´ÐÐÖ¸¶¨ÈÎÎñ
- executeTask: function(taskName) {
- var task = this.getTask(taskName);
- if (!task) {
- Logger.error('δÕÒµ½ÈÎÎñ: ' + taskName);
- return false;
- }
-
- this.currentTaskIndex = this.tasks.indexOf(task);
- return task.run();
- },
-
- // ·½·¨£º°´Ë³ÐòÖ´ÐÐËùÓÐÈÎÎñ
- executeAll: function() {
- Logger.info('¿ªÊ¼Ö´ÐÐËùÓÐÈÎÎñ£¬¹²' + this.tasks.length + '¸ö');
-
- var successCount = 0;
- var failCount = 0;
-
- for (var i = 0; i < this.tasks.length; i++) {
- this.currentTaskIndex = i;
- var task = this.tasks[i];
-
- Logger.info('Ö´ÐÐÈÎÎñ [' + (i + 1) + '/' + this.tasks.length + ']: ' + task.name);
-
- if (task.run()) {
- successCount++;
- } else {
- failCount++;
- }
-
- // Èç¹û²»ÊÇ×Ô¶¯Ö´ÐÐÏÂÒ»¸ö£¬ÔòÍ£Ö¹
- if (!this.autoExecuteNext) {
- break;
- }
- }
-
- Logger.info('ËùÓÐÈÎÎñÖ´ÐÐÍê³É - ³É¹¦: ' + successCount + ', ʧ°Ü: ' + failCount);
- return {
- success: successCount,
- fail: failCount,
- total: this.tasks.length
- };
- },
-
- // ·½·¨£º²¢ÐÐÖ´ÐÐÈÎÎñ£¨Ä£Ä⣩
- executeParallel: function(taskNames) {
- Logger.info('¿ªÊ¼²¢ÐÐÖ´ÐÐÈÎÎñ: ' + taskNames.join(', '));
-
- var results = {};
- for (var i = 0; i < taskNames.length; i++) {
- var taskName = taskNames[i];
- var task = this.getTask(taskName);
-
- if (task) {
- Logger.info('Æô¶¯ÈÎÎñ: ' + taskName);
- // ×¢Ò⣺ÔÚÕæÊµ³¡¾°ÖУ¬ÕâÀïÓ¦¸ÃʹÓöàÏß³Ì
- // ÓÉÓÚRhinoµÄÏÞÖÆ£¬ÕâÀïÖ»ÊÇ˳ÐòÖ´ÐÐ
- results[taskName] = task.run();
- } else {
- Logger.error('δÕÒµ½ÈÎÎñ: ' + taskName);
- results[taskName] = false;
- }
- }
-
- return results;
- },
-
- // ·½·¨£º»ñÈ¡ËùÓÐÈÎÎñ״̬
- getAllStatus: function() {
- var statusList = [];
- for (var i = 0; i < this.tasks.length; i++) {
- statusList.push(this.tasks[i].getInfo());
- }
- return statusList;
- },
-
- // ·½·¨£º´òÓ¡ËùÓÐÈÎÎñ״̬
- printAllStatus: function() {
- printl('========== ÈÎÎñ¹ÜÀíÆ÷״̬ ==========');
- printl('ÈÎÎñ×ÜÊý: ' + this.tasks.length);
- printl('µ±Ç°ÈÎÎñË÷Òý: ' + this.currentTaskIndex);
- printl('×Ô¶¯Ö´ÐÐ: ' + (this.autoExecuteNext ? '¿ªÆô' : '¹Ø±Õ'));
- printl('');
-
- for (var i = 0; i < this.tasks.length; i++) {
- var task = this.tasks[i];
- var info = task.getInfo();
- printl('[' + (i + 1) + '] ' + info.name + ' - ' + task.getStatusText(info.status));
- }
- printl('====================================');
- },
-
- // ·½·¨£ºÖØÖÃËùÓÐÈÎÎñ
- resetAll: function() {
- for (var i = 0; i < this.tasks.length; i++) {
- this.tasks[i].reset();
- }
- this.currentTaskIndex = -1;
- Logger.info('ËùÓÐÈÎÎñÒÑÖØÖÃ');
- },
-
- // ·½·¨£ºÍ³¼ÆÈÎÎñ״̬
- getStatistics: function() {
- var stats = {
- total: this.tasks.length,
- pending: 0,
- running: 0,
- completed: 0,
- failed: 0,
- paused: 0
- };
-
- for (var i = 0; i < this.tasks.length; i++) {
- var status = this.tasks[i].status;
- if (stats.hasOwnProperty(status)) {
- stats[status]++;
- }
- }
-
- return stats;
- }
- };
- // =============================================================================
- // µÚÎ岿·Ö£ºÉ豸ÐÅÏ¢¶ÔÏó (DeviceInfo)
- // =============================================================================
- /**
- * É豸ÐÅÏ¢¶ÔÏó
- * ·â×°AIWROKµÄÉ豸ÐÅÏ¢²éѯ¹¦ÄÜ
- */
- var DeviceInfo = {
- // ÊôÐÔ£º»º´æµÄÉ豸ÐÅÏ¢
- cachedInfo: null,
-
- // ·½·¨£º»ñÈ¡É豸ÐÅÏ¢
- getInfo: function() {
- if (this.cachedInfo) {
- return this.cachedInfo;
- }
-
- try {
- var info = {};
-
- // ³¢ÊÔ»ñÈ¡ÆÁÄ»ÐÅÏ¢
- try {
- info.screenWidth = screen.getScreenWidth();
- info.screenHeight = screen.getScreenHeight();
- } catch (e) {
- info.screenWidth = 'δ֪';
- info.screenHeight = 'δ֪';
- }
-
- // ³¢ÊÔ»ñÈ¡µç³ØÐÅÏ¢
- try {
- info.batteryLevel = device.getBattery();
- info.isCharging = device.isCharging();
- } catch (e) {
- info.batteryLevel = 'δ֪';
- info.isCharging = false;
- }
-
- // ³¢ÊÔ»ñÈ¡ÍøÂçÐÅÏ¢
- try {
- info.networkType = device.getNetworkType();
- info.wifiSSID = device.getWifiSSID();
- } catch (e) {
- info.networkType = 'δ֪';
- info.wifiSSID = 'δ֪';
- }
-
- // ³¢ÊÔ»ñÈ¡É豸ÐÅÏ¢
- try {
- info.deviceModel = device.getModel();
- info.androidVersion = device.getVersion();
- } catch (e) {
- info.deviceModel = 'δ֪';
- info.androidVersion = 'δ֪';
- }
-
- // ³¢ÊÔ»ñÈ¡ÄÚ´æÐÅÏ¢
- try {
- info.memoryInfo = app.getMemory();
- info.memoryPercent = app.getMemoryPercent();
- } catch (e) {
- info.memoryInfo = { Total: 'δ֪', Available: 'δ֪' };
- info.memoryPercent = 'δ֪';
- }
-
- // ³¢ÊÔ»ñȡӦÓÃÐÅÏ¢
- try {
- info.topPackage = app.getTopPackName();
- info.topAppName = app.getAppName(app.getTopPackName());
- } catch (e) {
- info.topPackage = 'δ֪';
- info.topAppName = 'δ֪';
- }
-
- // ʱ¼äÐÅÏ¢£¨×ÜÊÇ¿ÉÓã©
- info.timestamp = new Date().getTime();
- info.currentTime = new Date().toLocaleString();
-
- this.cachedInfo = info;
- return info;
- } catch (e) {
- Logger.error('»ñÈ¡É豸ÐÅϢʧ°Ü: ' + e);
- return null;
- }
- },
-
- // ·½·¨£ºË¢ÐÂÉ豸ÐÅÏ¢
- refresh: function() {
- this.cachedInfo = null;
- return this.getInfo();
- },
-
- // ·½·¨£º´òÓ¡É豸ÐÅÏ¢
- printInfo: function() {
- var info = this.getInfo();
- if (!info) {
- printl('ÎÞ·¨»ñÈ¡É豸ÐÅÏ¢');
- return;
- }
-
- printl('========== É豸ÐÅÏ¢ ==========');
- printl('ÆÁÄ»·Ö±æÂÊ: ' + info.screenWidth + 'x' + info.screenHeight);
- printl('µç³ØµçÁ¿: ' + info.batteryLevel + '%');
- printl('³äµç״̬: ' + (info.isCharging ? '³äµçÖÐ' : 'δ³äµç'));
- printl('ÍøÂçÀàÐÍ: ' + info.networkType);
- printl('WiFiÃû³Æ: ' + info.wifiSSID);
- printl('É豸ÐͺÅ: ' + info.deviceModel);
- printl('°²×¿°æ±¾: ' + info.androidVersion);
- printl('×ÜÄÚ´æ: ' + info.memoryInfo.Total);
- printl('¿ÉÓÃÄÚ´æ: ' + info.memoryInfo.Available);
- printl('ÄÚ´æÊ¹ÓÃÂÊ: ' + info.memoryPercent + '%');
- printl('ǰ̨ӦÓÃ: ' + info.topAppName + ' (' + info.topPackage + ')');
- printl('µ±Ç°Ê±¼ä: ' + info.currentTime);
- printl('==============================');
- }
- };
- // =============================================================================
- // µÚÁù²¿·Ö£ºÊµ¼ÊÓ¦ÓÃʾÀý
- // =============================================================================
- /**
- * ʾÀý1£º´´½¨²¢Ö´Ðмòµ¥ÈÎÎñ
- */
- function example1_SimpleTask() {
- printl('========== ʾÀý1£º¼òµ¥ÈÎÎñ ==========');
-
- // ´´½¨ÈÎÎñ
- var task = new Task('²âÊÔÈÎÎñ', 'ÕâÊÇÒ»¸ö¼òµ¥µÄ²âÊÔÈÎÎñ');
-
- // ÉèÖÃÖ´Ðк¯Êý
- task.setExecuteFunction(function() {
- Logger.info('ÕýÔÚÖ´ÐвâÊÔÈÎÎñ...');
- sleep.second(2); // Ä£ÄâºÄʱ²Ù×÷
- Logger.info('²âÊÔÈÎÎñÖ´ÐÐÍê±Ï');
- return { success: true, message: '²âÊÔͨ¹ý' };
- });
-
- // ÉèÖûص÷
- task.setOnComplete(function(result) {
- Logger.info('ÈÎÎñÍê³É»Øµ÷: ' + JSON.stringify(result));
- });
-
- task.setOnError(function(error) {
- Logger.error('ÈÎÎñ´íÎ󻨵÷: ' + error);
- });
-
- // Ö´ÐÐÈÎÎñ
- task.run();
-
- // ´òÓ¡ÈÎÎñÐÅÏ¢
- task.printInfo();
- }
- /**
- * ʾÀý2£ºÊ¹ÓÃÈÎÎñ¹ÜÀíÆ÷¹ÜÀí¶à¸öÈÎÎñ
- */
- function example2_TaskManager() {
- printl('');
- printl('========== ʾÀý2£ºÈÎÎñ¹ÜÀíÆ÷ ==========');
-
- // ´´½¨¶à¸öÈÎÎñ
- var task1 = new Task('Êý¾Ý±¸·Ý', '±¸·ÝÖØÒªÊý¾Ý');
- task1.setExecuteFunction(function() {
- Logger.info('ÕýÔÚ±¸·ÝÊý¾Ý...');
- sleep.millisecond(1500);
- Logger.info('Êý¾Ý±¸·ÝÍê³É');
- return true;
- });
-
- var task2 = new Task('ÇåÀí»º´æ', 'ÇåÀíÓ¦Óûº´æ');
- task2.setExecuteFunction(function() {
- Logger.info('ÕýÔÚÇåÀí»º´æ...');
- sleep.second(1);
- Logger.info('»º´æÇåÀíÍê³É');
- return true;
- });
-
- var task3 = new Task('ͬ²½Êý¾Ý', 'ͬ²½ÔƶËÊý¾Ý');
- task3.setExecuteFunction(function() {
- Logger.info('ÕýÔÚͬ²½Êý¾Ý...');
- sleep.second(2);
- Logger.info('Êý¾Ýͬ²½Íê³É');
- return true;
- });
-
- // Ìí¼Óµ½ÈÎÎñ¹ÜÀíÆ÷
- TaskManager.addTask(task1);
- TaskManager.addTask(task2);
- TaskManager.addTask(task3);
-
- // ´òÓ¡ÈÎÎñ״̬
- TaskManager.printAllStatus();
-
- // Ö´ÐÐËùÓÐÈÎÎñ
- var result = TaskManager.executeAll();
- printl('Ö´Ðнá¹û: ' + JSON.stringify(result));
-
- // ´òÓ¡×îÖÕ״̬
- TaskManager.printAllStatus();
-
- // »ñȡͳ¼ÆÐÅÏ¢
- var stats = TaskManager.getStatistics();
- printl('ͳ¼ÆÐÅÏ¢: ' + JSON.stringify(stats));
- }
- /**
- * ʾÀý3£ºÊ¹ÓÃÅäÖùÜÀíÆ÷
- */
- function example3_ConfigManager() {
- printl('');
- printl('========== ʾÀý3£ºÅäÖùÜÀíÆ÷ ==========');
-
- // ³õʼ»¯ÅäÖùÜÀíÆ÷
- ConfigManager.init();
-
- // дÈëÅäÖÃ
- ConfigManager.set('app_name', 'AIWROK Demo');
- ConfigManager.set('version', '1.0.0');
- ConfigManager.set('debug_mode', 'true');
- ConfigManager.set('max_retry', '3');
-
- // ¶ÁÈ¡ÅäÖÃ
- var appName = ConfigManager.get('app_name', 'Unknown');
- var version = ConfigManager.get('version', '0.0.0');
- var debugMode = ConfigManager.get('debug_mode', 'false');
-
- printl('Ó¦ÓÃÃû³Æ: ' + appName);
- printl('°æ±¾ºÅ: ' + version);
- printl('µ÷ÊÔģʽ: ' + debugMode);
-
- // ÅúÁ¿¶ÁÈ¡
- var allConfig = ConfigManager.loadAll(['app_name', 'version', 'debug_mode', 'max_retry']);
- printl('ÅúÁ¿¶ÁÈ¡½á¹û: ' + JSON.stringify(allConfig));
-
- // ÅúÁ¿Ð´Èë
- var newConfig = {
- 'theme': 'dark',
- 'language': 'zh-CN',
- 'auto_update': 'true'
- };
- ConfigManager.saveAll(newConfig);
- printl('ÅúÁ¿Ð´ÈëÍê³É');
- }
- /**
- * ʾÀý4£ºÊ¹ÓÃÈÕÖ¾¹ÜÀíÆ÷
- */
- function example4_Logger() {
- printl('');
- printl('========== ʾÀý4£ºÈÕÖ¾¹ÜÀíÆ÷ ==========');
-
- // ÉèÖÃÈÕÖ¾¼¶±ð
- Logger.setLevel(Logger.LEVEL_DEBUG);
-
- // Êä³ö²»Í¬¼¶±ðµÄÈÕÖ¾
- Logger.debug('ÕâÊÇÒ»Ìõµ÷ÊÔÐÅÏ¢');
- Logger.info('ÕâÊÇÒ»ÌõÆÕͨÐÅÏ¢');
- Logger.warn('ÕâÊÇÒ»Ìõ¾¯¸æÐÅÏ¢');
- Logger.error('ÕâÊÇÒ»Ìõ´íÎóÐÅÏ¢');
-
- // »ñÈ¡×î½üµÄÈÕÖ¾
- var recentLogs = Logger.getRecentLogs(5);
- printl('×î½ü5ÌõÈÕÖ¾:');
- for (var i = 0; i < recentLogs.length; i++) {
- var log = recentLogs[i];
- printl(' [' + log.level + '] ' + log.message);
- }
- }
- /**
- * ʾÀý5£º»ñÈ¡É豸ÐÅÏ¢
- */
- function example5_DeviceInfo() {
- printl('');
- printl('========== ʾÀý5£ºÉ豸ÐÅÏ¢ ==========');
-
- // ´òÓ¡É豸ÐÅÏ¢
- DeviceInfo.printInfo();
-
- // »ñÈ¡ÔʼÐÅÏ¢¶ÔÏó
- var info = DeviceInfo.getInfo();
- if (info) {
- printl('ÆÁÄ»¿í¶È: ' + info.screenWidth);
- printl('ÆÁÄ»¸ß¶È: ' + info.screenHeight);
- printl('µç³ØµçÁ¿: ' + info.batteryLevel + '%');
- }
- }
- /**
- * ʾÀý6£º×ÛºÏÓ¦Óà - ×Ô¶¯»¯¹¤×÷Á÷
- */
- function example6_AutomationWorkflow() {
- printl('');
- printl('========== ʾÀý6£º×Ô¶¯»¯¹¤×÷Á÷ ==========');
-
- Logger.info('Æô¶¯×Ô¶¯»¯¹¤×÷Á÷...');
-
- // ²½Öè1£º¼ì²éÉ豸״̬
- Logger.info('²½Öè1£º¼ì²éÉ豸״̬');
- var deviceInfo = DeviceInfo.getInfo();
- if (deviceInfo && deviceInfo.batteryLevel < 20) {
- Logger.warn('µç³ØµçÁ¿µÍÓÚ20%£¬½¨Òé³äµç');
- }
-
- // ²½Öè2£º¼ÓÔØÅäÖÃ
- Logger.info('²½Öè2£º¼ÓÔØÅäÖÃ');
- ConfigManager.init();
- var config = ConfigManager.loadAll(['app_name', 'version', 'debug_mode']);
- Logger.info('ÅäÖüÓÔØÍê³É: ' + JSON.stringify(config));
-
- // ²½Öè3£º´´½¨²¢Ö´ÐÐÈÎÎñ
- Logger.info('²½Öè3£º´´½¨²¢Ö´ÐÐÈÎÎñ');
-
- var workflowTask = new Task('×Ô¶¯»¯¹¤×÷Á÷', 'ÍêÕûµÄ×Ô¶¯»¯¹¤×÷Á÷³Ì');
- workflowTask.setExecuteFunction(function() {
- Logger.info('Ö´Ðй¤×÷Á÷ÈÎÎñ...');
-
- // Ä£Äâ¶à¸ö²½Öè
- Logger.info(' - ²½Öè1£ºÊý¾Ý×¼±¸');
- sleep.millisecond(500);
-
- Logger.info(' - ²½Öè2£ºÊý¾Ý´¦Àí');
- sleep.second(1);
-
- Logger.info(' - ²½Öè3£ºÊý¾Ý±£´æ');
- sleep.millisecond(500);
-
- Logger.info('¹¤×÷Á÷ÈÎÎñÍê³É');
- return { success: true, steps: 3 };
- });
-
- workflowTask.setOnComplete(function(result) {
- Logger.info('¹¤×÷Á÷Íê³É£¬½á¹û: ' + JSON.stringify(result));
- });
-
- workflowTask.run();
-
- // ²½Öè4£º±£´æÖ´ÐмǼ
- Logger.info('²½Öè4£º±£´æÖ´ÐмǼ');
- ConfigManager.set('last_run_time', new Date().toLocaleString());
- ConfigManager.set('last_run_status', 'success');
-
- Logger.info('×Ô¶¯»¯¹¤×÷Á÷Ö´ÐÐÍê±Ï');
- }
- // =============================================================================
- // µÚÆß²¿·Ö£ºÖ÷º¯Êý - ÔËÐÐËùÓÐʾÀý
- // =============================================================================
- /**
- * Ö÷º¯Êý£ºÔËÐÐËùÓÐʾÀý
- */
- function main() {
- printl('========================================');
- printl(' AIWROK JavaScript¶ÔÏó¸ß¼¶Ó¦ÓÃʵÀý');
- printl('========================================');
- printl('');
-
- // ÔËÐÐËùÓÐʾÀý
- example1_SimpleTask();
- sleep.second(2); // ʾÀý¼äÑÓʱ
-
- example2_TaskManager();
- sleep.second(2); // ʾÀý¼äÑÓʱ
-
- example3_ConfigManager();
- sleep.second(2); // ʾÀý¼äÑÓʱ
-
- example4_Logger();
- sleep.second(2); // ʾÀý¼äÑÓʱ
-
- example5_DeviceInfo();
- sleep.second(2); // ʾÀý¼äÑÓʱ
-
- example6_AutomationWorkflow();
-
- printl('');
- printl('========================================');
- printl(' ËùÓÐʾÀýÖ´ÐÐÍê³É£¡');
- printl('========================================');
- }
- // Ö´ÐÐÖ÷º¯Êý
- main();
¸´ÖÆ´úÂë
|
|