autojs.d.ts 49 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384
  1. /* 内置模块 */
  2. /*
  3. * based on commit "cf1e602"
  4. * 文件结构
  5. *
  6. * -模块
  7. * -命名空间
  8. * -全局
  9. *
  10. * 未加入:WidgetsBasedAutomation、Shell、Thread、UI、Work with Java
  11. *
  12. */
  13. declare module 'global' {
  14. /**
  15. * 表示一个点(坐标)。
  16. */
  17. interface Point {
  18. x: number;
  19. y: number;
  20. }
  21. /**
  22. * app模块提供一系列函数,用于使用其他应用、与其他应用交互。例如发送意图、打开文件、发送邮件等。
  23. */
  24. namespace app {
  25. /**
  26. * 通过应用名称启动应用。如果该名称对应的应用不存在,则返回false; 否则返回true。如果该名称对应多个应用,则只启动其中某一个。
  27. */
  28. function launchApp(appName: string): boolean;
  29. /**
  30. * 通过应用包名启动应用。如果该包名对应的应用不存在,则返回false;否则返回true。
  31. */
  32. function launch(packageName: string): boolean;
  33. /**
  34. * 通过应用包名启动应用。如果该包名对应的应用不存在,则返回false;否则返回true。
  35. */
  36. function launchPackage(packageName: string): boolean;
  37. /**
  38. * 获取应用名称对应的已安装的应用的包名。如果该找不到该应用,返回null;如果该名称对应多个应用,则只返回其中某一个的包名。
  39. */
  40. function getPackageName(appName: string): string;
  41. /**
  42. * 获取应用包名对应的已安装的应用的名称。如果该找不到该应用,返回null。
  43. */
  44. function getAppName(packageName: string): string;
  45. /**
  46. * 打开应用的详情页(设置页)。如果找不到该应用,返回false; 否则返回true。
  47. */
  48. function openAppSetting(packageName: string): boolean;
  49. /**
  50. * 用其他应用查看文件。文件不存在的情况由查看文件的应用处理。如果找不出可以查看该文件的应用,则抛出ActivityNotException。
  51. *
  52. * @throws ActivityNotException
  53. */
  54. function viewFile(path: string): void;
  55. /**
  56. * 用其他应用编辑文件。文件不存在的情况由编辑文件的应用处理。如果找不出可以编辑该文件的应用,则抛出ActivityNotException。
  57. *
  58. * @throws ActivityNotException
  59. */
  60. function editFile(path: string): void;
  61. /**
  62. * 卸载应用。执行后会会弹出卸载应用的提示框。如果该包名的应用未安装,由应用卸载程序处理,可能弹出"未找到应用"的提示。
  63. */
  64. function uninstall(packageName: string): void;
  65. /**
  66. * 用浏览器打开网站url。网站的Url,如果不以"http:// "或"https:// "开头则默认是"http:// "。
  67. */
  68. function openUrl(url: string): void;
  69. /**
  70. * 发送邮件的参数,这些选项均是可选的。
  71. */
  72. interface SendEmailOptions {
  73. /**
  74. * 收件人的邮件地址。如果有多个收件人,则用字符串数组表示
  75. */
  76. email?: string | string[];
  77. /**
  78. * 抄送收件人的邮件地址。如果有多个抄送收件人,则用字符串数组表示
  79. */
  80. cc?: string | string[];
  81. /**
  82. * 密送收件人的邮件地址。如果有多个密送收件人,则用字符串数组表示
  83. */
  84. bcc?: string | string[];
  85. /**
  86. * 邮件主题(标题)
  87. */
  88. subject?: string;
  89. /**
  90. * 邮件正文
  91. */
  92. text?: string;
  93. /**
  94. * 附件的路径。
  95. */
  96. attachment?: string;
  97. }
  98. /**
  99. * 根据选项options调用邮箱应用发送邮件。如果没有安装邮箱应用,则抛出ActivityNotException。
  100. */
  101. function sendEmail(options: SendEmailOptions): void;
  102. /**
  103. * 启动Auto.js的特定界面。该函数在Auto.js内运行则会打开Auto.js内的界面,在打包应用中运行则会打开打包应用的相应界面。
  104. */
  105. function startActivity(name: 'console' | 'settings'): void;
  106. /**
  107. * Intent(意图) 是一个消息传递对象,您可以使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信.
  108. */
  109. interface Intent { }
  110. /**
  111. * 构造意图Intent对象所需设置。
  112. */
  113. interface IntentOptions {
  114. action?: string;
  115. type?: string;
  116. data?: string;
  117. category?: string[];
  118. packageName?: string;
  119. className?: string;
  120. extras?: Object;
  121. }
  122. /**
  123. * 根据选项,构造一个意图Intent对象。
  124. */
  125. function intent(options: IntentOptions): Intent;
  126. /**
  127. * 根据选项构造一个Intent,并启动该Activity。
  128. */
  129. function startActivity(intent: Intent): void;
  130. /**
  131. * 根据选项构造一个Intent,并发送该广播。
  132. */
  133. function sendBroadcast(intent: Intent): void;
  134. }
  135. /**
  136. * 通过应用名称启动应用。如果该名称对应的应用不存在,则返回false; 否则返回true。如果该名称对应多个应用,则只启动其中某一个。
  137. */
  138. function launchApp(appName: string): boolean;
  139. /**
  140. * 通过应用包名启动应用。如果该包名对应的应用不存在,则返回false;否则返回true。
  141. */
  142. function launch(packageName: string): boolean;
  143. /**
  144. * 获取应用名称对应的已安装的应用的包名。如果该找不到该应用,返回null;如果该名称对应多个应用,则只返回其中某一个的包名。
  145. */
  146. function getPackageName(appName: string): string;
  147. /**
  148. * 获取应用名称对应的已安装的应用的包名。如果该找不到该应用,返回null;如果该名称对应多个应用,则只返回其中某一个的包名。
  149. */
  150. function getPackageName(appName: string): string;
  151. /**
  152. * 获取应用包名对应的已安装的应用的名称。如果该找不到该应用,返回null。
  153. */
  154. function getAppName(packageName: string): string;
  155. /**
  156. * 打开应用的详情页(设置页)。如果找不到该应用,返回false; 否则返回true。
  157. */
  158. function openAppSetting(packageName: string): boolean;
  159. // interface Console {
  160. // show(): void;
  161. // verbose(): void;
  162. // }
  163. /**
  164. * 控制台模块提供了一个和Web浏览器中相似的用于调试的控制台。用于输出一些调试信息、中间结果等。 console模块中的一些函数也可以直接作为全局函数使用,例如log, print等。
  165. */
  166. namespace console {
  167. /**
  168. * 显示控制台。这会显示一个控制台的悬浮窗(需要悬浮窗权限)。
  169. */
  170. function show(): void;
  171. /**
  172. * 隐藏控制台悬浮窗。
  173. */
  174. function hide(): void;
  175. /**
  176. * 清空控制台。
  177. */
  178. function clear(): void;
  179. /**
  180. * 打印到控制台,并带上换行符。 可以传入多个参数,第一个参数作为主要信息,其他参数作为类似于 printf(3) 中的代替值(参数都会传给 util.format())。
  181. */
  182. function log(data: string, ...args: any[]): void;
  183. /**
  184. * 与console.log类似,但输出结果以灰色字体显示。输出优先级低于log,用于输出观察性质的信息。
  185. */
  186. function verbose(data: string, ...args: any[]): void;
  187. /**
  188. * 与console.log类似,但输出结果以绿色字体显示。输出优先级高于log, 用于输出重要信息。
  189. */
  190. function info(data: string, ...args: any[]): void;
  191. /**
  192. * 与console.log类似,但输出结果以蓝色字体显示。输出优先级高于info, 用于输出警告信息。
  193. */
  194. function warn(data: string, ...args: any[]): void;
  195. /**
  196. * 与console.log类似,但输出结果以红色字体显示。输出优先级高于warn, 用于输出错误信息。
  197. */
  198. function error(data: string, ...args: any[]): void;
  199. /**
  200. * 断言。如果value为false则输出错误信息message并停止脚本运行。
  201. */
  202. function assert(value: boolean, message: string);
  203. /**
  204. * 与console.log一样输出信息,并在控制台显示输入框等待输入。按控制台的确认按钮后会将输入的字符串用eval计算后返回。
  205. */
  206. function input(data: string, ...args: any[]): string | number | boolean;
  207. /**
  208. * 与console.log一样输出信息,并在控制台显示输入框等待输入。按控制台的确认按钮后会将输入的字符串直接返回。
  209. */
  210. function rawInput(data: string, ...args: any[]): string;
  211. /**
  212. * 设置控制台的大小,单位像素。
  213. */
  214. function setSize(wight: number, height: number): void;
  215. /**
  216. * 设置控制台的位置,单位像素。
  217. */
  218. function setPosition(x: number, y: number): void;
  219. }
  220. /**
  221. * 打印到控制台,并带上换行符。 可以传入多个参数,第一个参数作为主要信息,其他参数作为类似于 printf(3) 中的代替值(参数都会传给 util.format())。
  222. */
  223. function log(data: string, ...args: any[]): void;
  224. /**
  225. * 相当于log(text)。
  226. */
  227. function print(message: string | Object): void;
  228. /* 基于坐标的触摸模拟 */
  229. /**
  230. * 设置脚本坐标点击所适合的屏幕宽高。如果脚本运行时,屏幕宽度不一致会自动放缩坐标。
  231. */
  232. function setScreenMetrics(width: number, height: number): void;
  233. /* 安卓7.0以上的触摸和手势模拟 */
  234. /**
  235. * Android7.0以上
  236. *
  237. * 模拟点击坐标(x, y)大约150毫秒,并返回是否点击成功。只有在点击执行完成后脚本才继续执行。
  238. */
  239. function click(x: number, y: number): void;
  240. /**
  241. * Android7.0以上
  242. *
  243. * 模拟长按坐标(x, y), 并返回是否成功。只有在长按执行完成(大约600毫秒)时脚本才会继续执行。
  244. */
  245. function longClick(x: number, y: number): void;
  246. /**
  247. * Android7.0以上
  248. *
  249. * 模拟按住坐标(x, y), 并返回是否成功。只有按住操作执行完成时脚本才会继续执行。
  250. *
  251. * 如果按住时间过短,那么会被系统认为是点击;如果时长超过500毫秒,则认为是长按。
  252. */
  253. function press(x: number, y: number, duration: number): void;
  254. /**
  255. * 模拟从坐标(x1, y1)滑动到坐标(x2, y2),并返回是否成功。只有滑动操作执行完成时脚本才会继续执行。
  256. */
  257. function swipe(x1: number, y1: number, x2: number, y2: number, duration: number): boolean;
  258. type GesturePoint = [number, number];
  259. /**
  260. * 模拟手势操作。例如gesture(1000, [0, 0], [500, 500], [500, 1000])为模拟一个从(0, 0)到(500, 500)到(500, 100)的手势操作,时长为2秒。
  261. */
  262. function gesture(duration: number, point1: GesturePoint, point2: GesturePoint, ...points: GesturePoint[]): void;
  263. type Gesture = [number, number, GesturePoint, GesturePoint] | [number, GesturePoint, GesturePoint];
  264. /**
  265. * 同时模拟多个手势。每个手势的参数为[delay, duration, 坐标], delay为延迟多久(毫秒)才执行该手势;duration为手势执行时长;坐标为手势经过的点的坐标。其中delay参数可以省略,默认为0。
  266. */
  267. function gestures(gesture: Gesture, ...gestures: Gesture[]): void;
  268. /**
  269. * RootAutomator是一个使用root权限来模拟触摸的对象,用它可以完成触摸与多点触摸,并且这些动作的执行没有延迟。
  270. *
  271. * 一个脚本中最好只存在一个RootAutomator,并且保证脚本结束退出他。
  272. */
  273. class RootAutomator {
  274. /**
  275. * 点击位置(x, y)。其中id是一个整数值,用于区分多点触摸,不同的id表示不同的"手指"。
  276. */
  277. tap(x: number, y: number, id?: number): void;
  278. /**
  279. * 模拟一次从(x1, y1)到(x2, y2)的时间为duration毫秒的滑动。
  280. */
  281. swipe(x1: number, x2: number, y1: number, y2: number, duration?: number): void;
  282. /**
  283. * 模拟按下位置(x, y),时长为duration毫秒。
  284. */
  285. press(x: number, y: number, duration: number, id?: number): void;
  286. /**
  287. * 模拟长按位置(x, y)。
  288. */
  289. longPress(x: number, y: number, duration?: number, id?: number): void;
  290. /**
  291. * 模拟手指按下位置(x, y)。
  292. */
  293. touchDown(x: number, y: number, id?: number): void;
  294. /**
  295. * 模拟移动手指到位置(x, y)。
  296. */
  297. touchMove(x: number, y: number, id?: number): void;
  298. /**
  299. * 模拟手指弹起。
  300. */
  301. touchUp(id?: number): void;
  302. }
  303. /**
  304. * 需要Root权限
  305. *
  306. * 实验API,请勿过度依赖
  307. *
  308. * 点击位置(x, y), 您可以通过"开发者选项"开启指针位置来确定点击坐标。
  309. */
  310. function Tap(x: number, y: number): void;
  311. /**
  312. * 需要Root权限
  313. *
  314. * 实验API,请勿过度依赖
  315. *
  316. * 滑动。从(x1, y1)位置滑动到(x2, y2)位置。
  317. */
  318. function Swipe(x1: number, x2: number, y1: number, y2: number, duration?: number): void;
  319. /**
  320. * device模块提供了与设备有关的信息与操作,例如获取设备宽高,内存使用率,IMEI,调整设备亮度、音量等。
  321. *
  322. * 此模块的部分函数,例如调整音量,需要"修改系统设置"的权限。如果没有该权限,会抛出SecurityException并跳转到权限设置界面。
  323. */
  324. namespace device {
  325. /**
  326. * 设备屏幕分辨率宽度。例如1080。
  327. */
  328. var width: number;
  329. /**
  330. * 设备屏幕分辨率高度。例如1920。
  331. */
  332. var height: number;
  333. /**
  334. * 修订版本号,或者诸如"M4-rc20"的标识。
  335. */
  336. var buildId: string;
  337. /**
  338. * 设备的主板(?)名称。
  339. */
  340. var broad: string;
  341. /**
  342. * 与产品或硬件相关的厂商品牌,如"Xiaomi", "Huawei"等。
  343. */
  344. var brand: string;
  345. /**
  346. * 设备在工业设计中的名称(代号)。
  347. */
  348. var device: string;
  349. /**
  350. * 设备型号。
  351. */
  352. var model: string;
  353. /**
  354. * 整个产品的名称。
  355. */
  356. var product: string;
  357. /**
  358. * 设备Bootloader的版本。
  359. */
  360. var bootloader: string;
  361. /**
  362. * 设备的硬件名称(来自内核命令行或者/proc)。
  363. */
  364. var hardware: string;
  365. /**
  366. * 构建(build)的唯一标识码。
  367. */
  368. var fingerprint: string;
  369. /**
  370. * 硬件序列号。
  371. */
  372. var serial: string;
  373. /**
  374. * 安卓系统API版本。例如安卓4.4的sdkInt为19。
  375. */
  376. var sdkInt: number;
  377. /**
  378. * 设备固件版本号。
  379. */
  380. var incremental: string;
  381. /**
  382. * Android系统版本号。例如"5.0", "7.1.1"。
  383. */
  384. var release: string;
  385. /**
  386. * 基础操作系统。
  387. */
  388. var baseOS: string;
  389. /**
  390. * 安全补丁程序级别。
  391. */
  392. var securityPatch: string;
  393. /**
  394. * 开发代号,例如发行版是"REL"。
  395. */
  396. var codename: string;
  397. /**
  398. * 返回设备的IMEI。
  399. */
  400. function getIMEI(): string;
  401. /**
  402. * 返回设备的Android ID。
  403. *
  404. * Android ID为一个用16进制字符串表示的64位整数,在设备第一次使用时随机生成,之后不会更改,除非恢复出厂设置。
  405. */
  406. function getAndroidId(): string;
  407. /**
  408. * 返回设备的Mac地址。该函数需要在有WLAN连接的情况下才能获取,否则会返回null。
  409. *
  410. * 可能的后续修改:未来可能增加有root权限的情况下通过root权限获取,从而在没有WLAN连接的情况下也能返回正确的Mac地址,因此请勿使用此函数判断WLAN连接。
  411. */
  412. function getMacAddress(): string;
  413. /**
  414. * 返回当前的(手动)亮度。范围为0~255。
  415. */
  416. function getBrightness(): number;
  417. /**
  418. * 返回当前亮度模式,0为手动亮度,1为自动亮度。
  419. */
  420. function getBrightnessMode(): number;
  421. /**
  422. * 设置当前手动亮度。如果当前是自动亮度模式,该函数不会影响屏幕的亮度。
  423. *
  424. * 此函数需要"修改系统设置"的权限。如果没有该权限,会抛出SecurityException并跳转到权限设置界面。
  425. */
  426. function setBrightness(b: number): void;
  427. /**
  428. * 设置当前亮度模式。
  429. *
  430. * 此函数需要"修改系统设置"的权限。如果没有该权限,会抛出SecurityException并跳转到权限设置界面。
  431. */
  432. function setBrightnessMode(mode: 0 | 1): void;
  433. /**
  434. * 返回当前媒体音量。
  435. */
  436. function getMusicVolume(): number;
  437. /**
  438. * 返回当前通知音量。
  439. */
  440. function getNotificationVolume(): number;
  441. /**
  442. * 返回当前闹钟音量。
  443. */
  444. function getAlarmVolume(): number;
  445. /**
  446. * 返回媒体音量的最大值。
  447. */
  448. function getMusicMaxVolume(): number;
  449. /**
  450. * 返回通知音量的最大值。
  451. */
  452. function getNotificationMaxVolume(): number;
  453. /**
  454. * 返回闹钟音量的最大值。
  455. */
  456. function getAlarmMaxVolume(): number;
  457. /**
  458. * 设置当前媒体音量。
  459. *
  460. * 此函数需要"修改系统设置"的权限。如果没有该权限,会抛出SecurityException并跳转到权限设置界面。
  461. */
  462. function setMusicVolume(volume: number): void;
  463. /**
  464. * 设置当前通知音量。
  465. *
  466. * 此函数需要"修改系统设置"的权限。如果没有该权限,会抛出SecurityException并跳转到权限设置界面。
  467. */
  468. function setNotificationVolume(volume: number): void;
  469. /**
  470. * 设置当前闹钟音量。
  471. *
  472. * 此函数需要"修改系统设置"的权限。如果没有该权限,会抛出SecurityException并跳转到权限设置界面。
  473. */
  474. function setAlarmVolume(volume: number): void;
  475. /**
  476. * 返回当前电量百分比。
  477. */
  478. function getBattery(): number;
  479. /**
  480. * 返回设备是否正在充电。
  481. */
  482. function isCharging(): boolean;
  483. /**
  484. * 返回设备内存总量,单位字节(B)。1MB = 1024 * 1024B。
  485. */
  486. function getTotalMem(): number;
  487. /**
  488. * 返回设备当前可用的内存,单位字节(B)。
  489. */
  490. function getAvailMem(): number;
  491. /**
  492. * 返回设备屏幕是否是亮着的。如果屏幕亮着,返回true; 否则返回false。
  493. *
  494. * 需要注意的是,类似于vivo xplay系列的息屏时钟不属于"屏幕亮着"的情况,虽然屏幕确实亮着但只能显示时钟而且不可交互,此时isScreenOn()也会返回false。
  495. */
  496. function isScreenOn(): boolean;
  497. /**
  498. * 唤醒设备。包括唤醒设备CPU、屏幕等。可以用来点亮屏幕。
  499. */
  500. function wakeUp(): void;
  501. /**
  502. * 如果屏幕没有点亮,则唤醒设备。
  503. */
  504. function wakeUpIfNeeded(): void;
  505. /**
  506. * 保持屏幕常亮。
  507. *
  508. * 此函数无法阻止用户使用锁屏键等正常关闭屏幕,只能使得设备在无人操作的情况下保持屏幕常亮;同时,如果此函数调用时屏幕没有点亮,则会唤醒屏幕。
  509. *
  510. * 在某些设备上,如果不加参数timeout,只能在Auto.js的界面保持屏幕常亮,在其他界面会自动失效,这是因为设备的省电策略造成的。因此,建议使用比较长的时长来代替"一直保持屏幕常亮"的功能,例如device.keepScreenOn(3600 * 1000)。
  511. *
  512. * 可以使用device.cancelKeepingAwake()来取消屏幕常亮。
  513. */
  514. function keepScreenOn(timeout: number): void;
  515. /**
  516. * 保持屏幕常亮,但允许屏幕变暗来节省电量。此函数可以用于定时脚本唤醒屏幕操作,不需要用户观看屏幕,可以让屏幕变暗来节省电量。
  517. *
  518. * 此函数无法阻止用户使用锁屏键等正常关闭屏幕,只能使得设备在无人操作的情况下保持屏幕常亮;同时,如果此函数调用时屏幕没有点亮,则会唤醒屏幕。
  519. *
  520. * 可以使用device.cancelKeepingAwake()来取消屏幕常亮。
  521. */
  522. function keepScreenDim(timeout: number): void;
  523. /**
  524. * 取消设备保持唤醒状态。用于取消device.keepScreenOn(), device.keepScreenDim()等函数设置的屏幕常亮。
  525. */
  526. function cancelKeepingAwake(): void;
  527. /**
  528. * 使设备震动一段时间。
  529. */
  530. function vibrate(millis: number): void;
  531. /**
  532. * 如果设备处于震动状态,则取消震动。
  533. */
  534. function cancelVibration(): void;
  535. }
  536. /**
  537. * dialogs 模块提供了简单的对话框支持,可以通过对话框和用户进行交互。
  538. */
  539. namespace dialogs {
  540. /**
  541. * 显示一个只包含“确定”按钮的提示对话框。直至用户点击确定脚本才继续运行。
  542. */
  543. function alert(title: string, content?: string): void;
  544. /**
  545. * UI模式
  546. *
  547. * 显示一个只包含“确定”按钮的提示对话框。直至用户点击确定脚本才继续运行。
  548. */
  549. function alert(title: string, content?: string, callback?: () => void): Promise<void>;
  550. /**
  551. * 显示一个包含“确定”和“取消”按钮的提示对话框。如果用户点击“确定”则返回 true ,否则返回 false 。
  552. */
  553. function confirm(title: string, content?: string): boolean;
  554. /**
  555. * UI模式
  556. *
  557. * 显示一个包含“确定”和“取消”按钮的提示对话框。如果用户点击“确定”则返回 true ,否则返回 false 。
  558. */
  559. function confirm(title: string, content?: string, callback?: (value: boolean) => void): Promise<boolean>;
  560. /**
  561. * 显示一个包含输入框的对话框,等待用户输入内容,并在用户点击确定时将输入的字符串返回。如果用户取消了输入,返回null。
  562. */
  563. function rawInput(title: string, prefill?: string): string;
  564. /**
  565. * UI模式
  566. *
  567. * 显示一个包含输入框的对话框,等待用户输入内容,并在用户点击确定时将输入的字符串返回。如果用户取消了输入,返回null。
  568. */
  569. function rawInput(title: string, prefill?: string, callback?: (value: string) => void): Promise<string>;
  570. /**
  571. * 等效于 eval(dialogs.rawInput(title, prefill, callback)), 该函数和rawInput的区别在于,会把输入的字符串用eval计算一遍再返回,返回的可能不是字符串。
  572. */
  573. function input(title: string, prefill?: string): any;
  574. /**
  575. * UI模式
  576. *
  577. * 等效于 eval(dialogs.rawInput(title, prefill, callback)), 该函数和rawInput的区别在于,会把输入的字符串用eval计算一遍再返回,返回的可能不是字符串。
  578. */
  579. function input(title: string, prefill?: string, callback?: (value: any) => void): Promise<any>;
  580. /**
  581. * 显示一个包含输入框的对话框,等待用户输入内容,并在用户点击确定时将输入的字符串返回。如果用户取消了输入,返回null。
  582. */
  583. function prompt(title: string, prefill?: string): string;
  584. /**
  585. * UI模式
  586. *
  587. * 显示一个包含输入框的对话框,等待用户输入内容,并在用户点击确定时将输入的字符串返回。如果用户取消了输入,返回null。
  588. */
  589. function prompt(title: string, prefill?: string, callback?: (value: string) => void): Promise<string>;
  590. /**
  591. * 显示一个带有选项列表的对话框,等待用户选择,返回用户选择的选项索引(0 ~ item.length - 1)。如果用户取消了选择,返回-1。
  592. */
  593. function select(title: string, items: string[]): number;
  594. /**
  595. * UI模式
  596. *
  597. * 显示一个带有选项列表的对话框,等待用户选择,返回用户选择的选项索引(0 ~ item.length - 1)。如果用户取消了选择,返回-1。
  598. */
  599. function select(title: string, items: string[], callback?: (value: number) => void): Promise<number>;
  600. /**
  601. * 显示一个单选列表对话框,等待用户选择,返回用户选择的选项索引(0 ~ item.length - 1)。如果用户取消了选择,返回-1。
  602. */
  603. function singleChoice(title: string, items: string[], index?: number): number;
  604. /**
  605. * UI模式
  606. *
  607. * 显示一个单选列表对话框,等待用户选择,返回用户选择的选项索引(0 ~ item.length - 1)。如果用户取消了选择,返回-1。
  608. */
  609. function singleChoice(title: string, items: string[], index?: number, callback?: (choice: number) => void): Promise<number>;
  610. /**
  611. * 显示一个多选列表对话框,等待用户选择,返回用户选择的选项索引的数组。如果用户取消了选择,返回[]。
  612. */
  613. function multiChoice(title: string, items: string[], indices?: number[]): number[];
  614. /**
  615. * UI模式
  616. *
  617. * 显示一个多选列表对话框,等待用户选择,返回用户选择的选项索引的数组。如果用户取消了选择,返回[]。
  618. */
  619. function multiChoice(title: string, items: string[], indices?: number[], callback?: (choices: number[]) => void): Promise<number[]>;
  620. }
  621. /**
  622. * 显示一个只包含“确定”按钮的提示对话框。直至用户点击确定脚本才继续运行。
  623. */
  624. function alert(title: string, content?: string): void;
  625. /**
  626. * UI模式
  627. *
  628. * 显示一个只包含“确定”按钮的提示对话框。直至用户点击确定脚本才继续运行。
  629. *
  630. * 在ui模式下该函数返回一个Promise。
  631. */
  632. function alert(title: string, content?: string, callback?: () => void): Promise<void>;
  633. /**
  634. * 显示一个包含“确定”和“取消”按钮的提示对话框。如果用户点击“确定”则返回 true ,否则返回 false 。
  635. */
  636. function confirm(title: string, content?: string): boolean;
  637. /**
  638. * UI模式
  639. *
  640. * 显示一个包含“确定”和“取消”按钮的提示对话框。如果用户点击“确定”则返回 true ,否则返回 false 。
  641. *
  642. * 在ui模式下该函数返回一个Promise。
  643. */
  644. function confirm(title: string, content?: string, callback?: (value: boolean) => void): Promise<boolean>;
  645. /**
  646. * 显示一个包含输入框的对话框,等待用户输入内容,并在用户点击确定时将输入的字符串返回。如果用户取消了输入,返回null。
  647. */
  648. function rawInput(title: string, prefill?: string): string;
  649. /**
  650. * UI模式
  651. *
  652. * 显示一个包含输入框的对话框,等待用户输入内容,并在用户点击确定时将输入的字符串返回。如果用户取消了输入,返回null。
  653. */
  654. function rawInput(title: string, prefill?: string, callback?: (value: string) => void): Promise<string>;
  655. /**
  656. * engines模块包含了一些与脚本环境、脚本运行、脚本引擎有关的函数,包括运行其他脚本,关闭脚本等。
  657. */
  658. namespace engines {
  659. /**
  660. * 脚本引擎对象。
  661. */
  662. interface ScriptEngine {
  663. /**
  664. * 停止脚本引擎的执行。
  665. */
  666. forceStop(): void;
  667. /**
  668. * 返回脚本执行的路径。对于一个脚本文件而言为这个脚本所在的文件夹;对于其他脚本,例如字符串脚本,则为null或者执行时的设置值。
  669. */
  670. cwd(): string;
  671. }
  672. /**
  673. * 执行脚本时返回的对象,可以通过他获取执行的引擎、配置等,也可以停止这个执行。
  674. *
  675. * 要停止这个脚本的执行,使用exectuion.getEngine().forceStop().
  676. */
  677. interface ScriptExecution {
  678. /**
  679. * 返回执行该脚本的脚本引擎对象(ScriptEngine)
  680. */
  681. getEngine(): ScriptEngine;
  682. /**
  683. * 返回该脚本的运行配置(ScriptConfig)
  684. */
  685. getConfig(): ScriptConfig;
  686. }
  687. /**
  688. * 运行配置项。
  689. */
  690. interface ScriptConfig {
  691. /**
  692. * 延迟执行的毫秒数,默认为0。
  693. */
  694. delay?: number;
  695. /**
  696. * 循环运行次数,默认为1。0为无限循环。
  697. */
  698. loopTimes?: number;
  699. /**
  700. * 循环运行时两次运行之间的时间间隔,默认为0。
  701. */
  702. interval?: number;
  703. /**
  704. * 指定脚本运行的目录。这些路径会用于require时寻找模块文件。
  705. */
  706. path?: string | string[];
  707. /**
  708. * 返回一个字符串数组表示脚本运行时模块寻找的路径。
  709. */
  710. getpath?: string[];
  711. }
  712. /**
  713. * 在新的脚本环境中运行脚本script。返回一个ScriptExectuion对象。
  714. *
  715. * 所谓新的脚本环境,指定是,脚本中的变量和原脚本的变量是不共享的,并且,脚本会在新的线程中运行。
  716. */
  717. function execScript(name: string, script: string, config?: ScriptConfig): ScriptExecution;
  718. /**
  719. * 在新的脚本环境中运行脚本文件path:string。返回一个ScriptExecution对象。
  720. */
  721. function execScriptFile(path: string, config?: ScriptConfig): ScriptExecution;
  722. /**
  723. * 在新的脚本环境中运行录制文件path:string。返回一个ScriptExecution对象。
  724. */
  725. function execAutoFile(path: string, config?: ScriptConfig): ScriptExecution;
  726. /**
  727. * 停止所有正在运行的脚本。包括当前脚本自身。
  728. */
  729. function stopAll(): void;
  730. /**
  731. * 停止所有正在运行的脚本并显示停止的脚本数量。包括当前脚本自身。
  732. */
  733. function stopAllAndToast(): void;
  734. /**
  735. * 返回当前脚本的脚本引擎对象(ScriptEngine)
  736. */
  737. function myEngine(): void;
  738. }
  739. namespace events {
  740. interface KeyEvent {
  741. getAction();
  742. getKeyCode(): number;
  743. getEventTime(): number;
  744. getDownTime(): number;
  745. keyCodeToString(keyCode: number): string;
  746. }
  747. function emitter(): EventEmitter;
  748. function observeKey(): void;
  749. type Keys = 'volume_up' | 'volume_down' | 'home' | 'back' | 'menu';
  750. function setKeyInterceptionEnabled(key: Keys, enabled: boolean);
  751. function setKeyInterceptionEnabled(enabled: boolean);
  752. function onKeyDown(keyName: Keys, listener: (e: KeyEvent) => void): void;
  753. function onceKeyUp(keyName: Keys, listener: (e: KeyEvent) => void): void;
  754. function removeAllKeyDownListeners(keyName: Keys): void;
  755. function removeAllKeyUpListeners(keyName: Keys): void;
  756. function observeTouch(): void;
  757. function setTouchEventTimeout(timeout: number): void;
  758. function getTouchEventTimeout(): number;
  759. function onTouch(listener: (point: Point) => void): void;
  760. function removeAllTouchListeners(): void;
  761. function on(event: 'key' | 'key_down' | 'key_up', listener: (keyCode: number, e: KeyEvent) => void): void;
  762. function on(event: 'exit', listener: () => void): void;
  763. function observeNotification(): void;
  764. function observeToast(): void;
  765. /**
  766. * 系统Toast对象
  767. */
  768. interface Toast {
  769. /**
  770. * 获取Toast的文本内容
  771. */
  772. getText(): string;
  773. /**
  774. * 获取发出Toast的应用包名
  775. */
  776. getPackageName(): void;
  777. }
  778. function onToast(listener: (toast: Toast) => void): void;
  779. /**
  780. * 通知对象,可以获取通知详情,包括通知标题、内容、发出通知的包名、时间等,也可以对通知进行操作,比如点击、删除。
  781. */
  782. interface Notification {
  783. number: number;
  784. when: number;
  785. getPackageName(): string;
  786. getTitle(): string;
  787. getText(): string;
  788. click(): void;
  789. delete(): void;
  790. }
  791. function on(event: 'notification', listener: (notification: Notification) => void): void;
  792. }
  793. /**
  794. * 按键事件中所有可用的按键名称
  795. */
  796. enum keys {
  797. home,
  798. back,
  799. menu,
  800. volume_up,
  801. volume_down
  802. }
  803. interface EventEmitter {
  804. defaultMaxListeners: number;
  805. addListener(eventName: string, listener: (...args: any[]) => void): EventEmitter;
  806. emit(eventName: string, ...args: any[]): boolean;
  807. eventNames(): string[];
  808. getMaxListeners(): number;
  809. listenerCount(eventName: string): number;
  810. on(eventName: string, listener: (...args: any[]) => void): EventEmitter;
  811. once(eventName: string, listener: (...args: any[]) => void): EventEmitter;
  812. prependListener(eventName: string, listener: (...args: any[]) => void): EventEmitter;
  813. prependOnceListener(eventName: string, listener: (...args: any[]) => void): EventEmitter;
  814. removeAllListeners(eventName?: string): EventEmitter;
  815. removeListener(eventName: string, listener: (...args: any[]) => void): EventEmitter;
  816. setMaxListeners(n: number): EventEmitter;
  817. }
  818. namespace floaty {
  819. function window(layout: any): FloatyWindow;
  820. function closeAll(): void;
  821. interface FloatyWindow {
  822. setAdjustEnabled(enabled: boolean): void;
  823. setPosition(x: number, y: number): void;
  824. getX(): number;
  825. getY(): number;
  826. setSize(width: number, height: number): void;
  827. getWidht(): number;
  828. getHeight(): number;
  829. close(): void;
  830. exitOnClose(): void;
  831. }
  832. }
  833. namespace files {
  834. type byte = number;
  835. function isFile(path: string): boolean;
  836. function isDir(path: string): boolean;
  837. function isEmptyDir(path: string): boolean;
  838. function join(parent: string, ...child: string[]): string;
  839. function create(path: string): boolean;
  840. function createWithDirs(path: string): boolean;
  841. function exists(path: string): boolean;
  842. function ensureDir(path: string): void;
  843. function read(path: string, encoding?: string): string;
  844. function readBytes(path: string): byte[];
  845. function write(path: string, text, encoding?: string): void;
  846. function writeBytes(path: string, bytes: byte[]): void;
  847. function append(path: string, text: string, encoding?: string): void;
  848. function appendBytes(path: string, text: byte[], encoding?: string): void;
  849. function copy(frompath: string, topath: string): boolean;
  850. function move(frompath: string, topath: string): boolean;
  851. function rename(path: string, newName): boolean;
  852. function renameWithoutExtension(path: string, newName: string): boolean;
  853. function getName(path: string): string;
  854. function getNameWithoutExtension(path: string): string;
  855. function getExtension(path: string): string;
  856. function remove(path: string): boolean;
  857. function removeDir(path: string): boolean;
  858. function getSdcardPath(): string;
  859. function cwd(): string;
  860. function path(relativePath: string): string;
  861. function listDir(path: string, filter: (filename: string) => boolean): string[];
  862. }
  863. interface ReadableTextFile {
  864. read(): string;
  865. read(maxCount: number): string;
  866. readline(): string;
  867. readlines(): string[];
  868. close(): void;
  869. }
  870. interface WritableTextFile {
  871. write(text: string): void;
  872. writeline(line: string): void;
  873. writelines(lines: string[]): void;
  874. flush(): void;
  875. close(): void;
  876. }
  877. function open(path: string, mode?: 'r', encoding?: string, bufferSize?: number): ReadableTextFile;
  878. function open(path: string, mode?: 'w' | 'a', encoding?: string, bufferSize?: number): WritableTextFile;
  879. namespace media {
  880. function scanFile(path: string): void;
  881. function playMusic(path: string, volume?: number, looping?: boolean);
  882. function musicSeekTo(msec: number): void;
  883. function pauseMusic(): void;
  884. function resumeMusic(): void;
  885. function stopMusic(): void;
  886. function isMusicPlaying(): boolean;
  887. function getMusicDuration(): number;
  888. function getMusicCurrentPosition(): number;
  889. }
  890. namespace sensors {
  891. interface SensorEventEmitter {
  892. on(eventName: 'change', callback: (...args: number[]) => void): void;
  893. on(eventName: 'accuracy_change', callback: (accuracy: number) => void): void;
  894. }
  895. function on(eventName: 'unsupported_sensor', callback: (sensorName: string) => void): void;
  896. function register(sensorName: string, delay?: delay): SensorEventEmitter;
  897. function unregister(emitter: SensorEventEmitter);
  898. function unregisterAll(): void;
  899. var ignoresUnsupportedSensor: boolean;
  900. enum delay {
  901. normal,
  902. ui,
  903. game,
  904. fastest
  905. }
  906. }
  907. function sleep(n: number): void;
  908. function currentPackage(): string;
  909. function currentActivity(): string;
  910. function setClip(test: string): void;
  911. function getClip(): string;
  912. function toast(message: string): void;
  913. function toastLog(message: string): void;
  914. function waitForActivity(activity: string, period?: number): void;
  915. function waitForPackage(packageName: string, period?: number): void;
  916. function exit(): void;
  917. function random(): number;
  918. function random(min: number, max: number): number;
  919. namespace http {
  920. interface HttpRequestOptions {
  921. header: { [key: string]: string },
  922. method: 'GET' | 'POST' | 'PUT' | 'DELET' | 'PATCH';
  923. contentType: string;
  924. body: string | string[] | files.byte[]
  925. }
  926. interface Request {
  927. }
  928. interface Response {
  929. statusCode: number;
  930. statusMessage: string;
  931. headers: { [key: string]: string };
  932. body: ResponseBody;
  933. request: Request;
  934. url: string;
  935. method: 'GET' | 'POST' | 'PUT' | 'DELET' | 'PATCH';
  936. }
  937. interface ResponseBody {
  938. bytes(): files.byte[];
  939. string(): string;
  940. json(): object;
  941. contentType: string;
  942. }
  943. function get(url: string, options?: HttpRequestOptions, callback?: (resp: Response) => void): Response;
  944. function post(url: string, data: object, options?: HttpRequestOptions, callback?: (resp: Response) => void): Response;
  945. function postJson(url: string, data?: object, options?: HttpRequestOptions, callback?: (resp: Response) => void): Response;
  946. interface RequestMultipartBody {
  947. file: ReadableTextFile | [string, string] | [string, string, string];
  948. }
  949. function postMultipart(url: string, files: RequestMultipartBody, options?: HttpRequestOptions, callback?: (resp: Response) => void): void;
  950. function postMultipart(url: string, files: { [key: string]: string } & RequestMultipartBody, options?: HttpRequestOptions, callback?: (resp: Response) => void): void;
  951. function request(url: string, options?: HttpRequestOptions, callback?: (resp: Response) => void): void;
  952. }
  953. interface Image {
  954. getWidth(): number;
  955. getHeight(): number;
  956. saveTo(path: string): void;
  957. pixel(x: number, y: number): number;
  958. }
  959. namespace images {
  960. function requestScreenCapture(landscape?: boolean): boolean;
  961. function captureScreen(): Image;
  962. function captureScreen(path: string): void;
  963. function pixel(image: Image, x: number, y: number): number;
  964. function save(image: Image, path: string): void;
  965. function read(path: string): Image;
  966. function load(url: string): Image;
  967. interface FindColorOptions {
  968. region?: [number, number] | [number, number, number, number];
  969. threshold?: number;
  970. }
  971. function clip(image: Image, x: number, y: number, w: number, h: number): Image;
  972. function findColor(image: Image, color: number | string, options: FindColorOptions): Point;
  973. function findColorInRegion(image: Image, color: number | string, x: number, y: number, width?: number, height?: number, threshold?: number): Point;
  974. function findColorEquals(image: Image, color: number | string, x?: number, y?: number, width?: number, height?: number): Point;
  975. function detectsColor(image: Image, color: number | string, x: number, y: number, threshold?: number, algorithm?: 'diff'): Point;
  976. interface FindImageOptions {
  977. region?: [number, number] | [number, number, number, number];
  978. threshold?: number;
  979. level?: number;
  980. }
  981. function findImage(image: Image, template: Image, options?: FindImageOptions): Point;
  982. function findImageInRegion(image: Image, template: Image, x: number, y: number, width?: number, height?: number, threshold?: number): Point;
  983. function findMultiColors(image: Image, firstColor: number | string, colors: [number, number, number | string][], options?: FindColorOptions): Point;
  984. }
  985. namespace colors {
  986. function toString(color: number): string;
  987. function red(color: number | string): number;
  988. function green(color: number | string): number;
  989. function blue(color: number | string): number;
  990. function alpha(color: number | string): number;
  991. function rgb(red: number, green: number, blue: number): number;
  992. function argb(alpha: number, red: number, green: number, blue: number): number;
  993. function parseColor(colorStr: string): number;
  994. function isSimilar(color1: number | string, color2: number | string, threshold: number, algorithm: 'diff' | 'rgb' | 'rgb+' | 'hs'): boolean;
  995. function equals(color1: number | string, color2: number | string): boolean;
  996. }
  997. /* 全局按键 */
  998. function back(): boolean;
  999. function home(): boolean;
  1000. function powerDialog(): boolean;
  1001. function notifications(): boolean;
  1002. function quickSettings(): boolean;
  1003. function recents(): boolean;
  1004. function splitScreen(): boolean;
  1005. function Home(): void;
  1006. function Back(): void;
  1007. function Power(): void;
  1008. function Menu(): void;
  1009. function VolumeUp(): void;
  1010. function VolumeDown(): void;
  1011. function Camera(): void;
  1012. function Up(): void;
  1013. function Down(): void;
  1014. function Left(): void;
  1015. function Right(): void;
  1016. function OK(): void;
  1017. function Text(text: string): void;
  1018. function KeyCode(code: number | string): void;
  1019. // var module: { exports: any };
  1020. interface Storage {
  1021. get<T>(key: string, defaultValue?: T): T;
  1022. put<T>(key: string, value: T): void;
  1023. remove(key: string): void;
  1024. contains(key: string): boolean;
  1025. clear(): void;
  1026. }
  1027. namespace storages {
  1028. function create(name: string): Storage;
  1029. function remove(name: string): boolean;
  1030. }
  1031. function auto(mode?: 'fast' | 'normal'): void;
  1032. namespace auto {
  1033. function waitFor(): void;
  1034. function setMode(mode: 'fast' | 'normal'): void;
  1035. }
  1036. function selector(): UiSelector;
  1037. function click(text: string, index?: number): boolean;
  1038. function click(left: number, top: number, bottom: number, right: number): boolean;
  1039. function longClick(text: string, index?: number): boolean;
  1040. function scrollUp(index?: number): boolean;
  1041. function scrollDown(index?: number): boolean;
  1042. function setText(text: string): boolean;
  1043. function setText(index: number, text: string): boolean;
  1044. function input(text: string): boolean;
  1045. function input(index: number, text: string): boolean;
  1046. interface UiSelector {
  1047. text(str: string): UiSelector;
  1048. textContains(str: string): UiSelector;
  1049. textStartsWith(prefix: string): UiSelector;
  1050. textEndsWith(suffix: string): UiSelector;
  1051. textMatches(reg: string | RegExp): UiSelector;
  1052. desc(str: string): UiSelector;
  1053. descContains(str: string): UiSelector;
  1054. descStartsWith(prefix: string): UiSelector;
  1055. descEndsWith(suffix: string): UiSelector;
  1056. descMatches(reg: string | RegExp): UiSelector;
  1057. id(resId: string): UiSelector;
  1058. idContains(str: string): UiSelector;
  1059. idStartsWith(prefix: string): UiSelector;
  1060. idEndsWith(suffix: string): UiSelector;
  1061. idMatches(reg: string | RegExp): UiSelector;
  1062. className(str: string): UiSelector;
  1063. classNameContains(str: string): UiSelector;
  1064. classNameStartsWith(prefix: string): UiSelector;
  1065. classNameEndsWith(suffix: string): UiSelector;
  1066. classNameMatches(reg: string | RegExp): UiSelector;
  1067. packageName(str: string): UiSelector;
  1068. packageNameContains(str: string): UiSelector;
  1069. packageNameStartsWith(prefix: string): UiSelector;
  1070. packageNameEndsWith(suffix: string): UiSelector;
  1071. packageNameMatches(reg: string | RegExp): UiSelector;
  1072. bounds(left: number, top: number, right: number, buttom: number): UiSelector;
  1073. boundsInside(left: number, top: number, right: number, buttom: number): UiSelector;
  1074. boundsContains(left: number, top: number, right: number, buttom: number): UiSelector;
  1075. drawingOrder(order): UiSelector;
  1076. clickable(b: boolean): UiSelector;
  1077. longClickable(b: boolean): UiSelector;
  1078. checkable(b: boolean): UiSelector;
  1079. selected(b: boolean): UiSelector;
  1080. enabled(b: boolean): UiSelector;
  1081. scrollable(b: boolean): UiSelector;
  1082. editable(b: boolean): UiSelector;
  1083. multiLine(b: boolean): UiSelector;
  1084. findOne(): UiObject;
  1085. findOne(timeout: number): UiObject;
  1086. findOnce(): UiObject;
  1087. findOnce(i: number): UiObject;
  1088. find(): UiCollection;
  1089. untilFind(): UiCollection;
  1090. exists(): boolean;
  1091. waitFor(): void;
  1092. filter(filter: (obj: UiObject) => boolean)
  1093. }
  1094. interface UiObject {
  1095. click(): boolean;
  1096. longClick(): boolean;
  1097. setText(text: string): boolean;
  1098. copy(): boolean;
  1099. cut(): boolean;
  1100. paste(): boolean;
  1101. setSelection(start, end): boolean;
  1102. scrollForward(): boolean;
  1103. scrollBackward(): boolean;
  1104. select(): boolean;
  1105. collapse(): boolean;
  1106. expand(): boolean;
  1107. show(): boolean;
  1108. scrollUp(): boolean;
  1109. scrollDown(): boolean;
  1110. scrollLeft(): boolean;
  1111. scrollRight(): boolean;
  1112. children(): UiCollection;
  1113. childCount(): number;
  1114. child(i: number): UiObject;
  1115. parent(): UiObject;
  1116. bounds(): Rect;
  1117. boundsInParent(): Rect;
  1118. drawingOrder(): number;
  1119. id(): string;
  1120. text(): string;
  1121. findByText(str: string): UiCollection;
  1122. findOne(selector): UiObject;
  1123. find(selector): UiCollection;
  1124. }
  1125. interface UiCollection {
  1126. size(): number;
  1127. get(i: number): UiObject;
  1128. each(func: (obj: UiObject) => void): void;
  1129. empty(): boolean;
  1130. nonEmpty(): boolean;
  1131. find(selector): UiCollection;
  1132. findOne(selector): UiObject;
  1133. }
  1134. interface Rect {
  1135. left: number;
  1136. right: number;
  1137. top: number;
  1138. bottom: number;
  1139. centerX(): number;
  1140. centerY(): number;
  1141. width(): number;
  1142. height(): number;
  1143. contains(r): Rect;
  1144. intersect(r): Rect;
  1145. }
  1146. }
  1147. export { };