<?xml version="1.0" encoding="utf-8"?>
<api>
  <Platform name="android">
    
    <dll name="功能列表">
	  <namespace name="代答接口">
	    <function name="autoverifydm2">
		  <pram>(字符串)</pram>
		  <example>
			函数原型:|autoverifydm2(ID, UserName, PassWord)
            函数说明:|
            通过打码兔代答得到验证码结果
            ID:码类型ID
			UserName:打码兔账号名称
			PassWord:打码兔账号密码
            返回值:代答结果
            调用例子:|
            autoverifydm2(205, "test", "test")
	      </example>
        </function>
		<function name="好爱打码">
		  <pram>(字符串)</pram>
		  <example>
			函数原型:|lvreplyfile(cipherString,codeID,file,responseTime,softwareKey,extraDeductionNum,remarks)/ haoaiupload(file)/ haoairesult(questionID)
			函数说明:|示例有说明
            调用例子:|
			XM.Print("打码开始")
			local file="/sdcard/haoi"	--截图目录,无后缀
			screencap(398,45,880,598 ,file..".png")	--截图
			
			local cipherString = "123456|ADJKJLGFAONM"	--好爱密码串
			local codeID = "X6006"						--打码类型ID
			local responseTime = 60						--响应时长,超过时间返回空
			local softwareKey = "4217|39BBEA5443"		--软件Key
			local extraDeductionNum = 0  				--额外扣分(除答题分以外的扣分)
			local remarks = "测试"						--备注信息
			
			----lvreplyfile返回 1:成功,-1:失败 函数会将所有参数(包括图片的base64数据)存储在一个txt文本中,这个目录是截图目录,后缀名是.txt
			local A = lvreplyfile(cipherString,codeID,file.. ".png",responseTime,softwareKey,extraDeductionNum,remarks)
			
			if tonumber(A) == 1 then	--存储成功
				local judge = XM.ReadFile(file..".txt")		--判断文本是否存在
				if judge ~= nil and judge ~= "" then
					local questionID = haoaiupload(file..".txt")	--将文本数据上传至好爱平台,返回问题ID
					if questionID ~= "" then
						while XM.Timer("响应时长",responseTime) == false do --300秒响应时长
							local value = haoairesult(questionID)--此函数隔一秒调用一次直到获取到答案 如果超过响应时间再重新调用,返回答案
							if value~= nil and value ~= "" then
								XM.Print(value)
								XM.Print("答案已返回")
								return value	
							else
								XM.Print("等待答案")
								sleep(1000)
							end
						end
						--响应超时,未得到答案
						return false
					else
						XM.Print("未返回图片ID")
					end
				else
					XM.Print("目录不存在")
				end
			else
				XM.Print("存储失败")
			end
	      </example>
        </function>
	  </namespace>
      <namespace name="辅助">
        <function name="messagebox">
          <pram>(str)</pram>
          <example>
            函数原型:|messagebox(str)
            函数说明:|
            显示信息到屏幕
            str:要显示的字符串
            返回值:无
            调用例子:|
            messagebox("hello tc!")
          </example>
        </function>
		<function name="messageboxex">
          <pram>(str)</pram>
          <example>
			函数原型:|messageboxex(message, time, x, y, bUseTime, fontSize)
			函数说明:|
			显示信息到屏幕
			message:要显示的字串
			time:要显示的时长 (时间单位：毫秒)
			x:提示框的横向坐标位置
			y:提示框的纵向坐标位置
			bUseTime: 1:开启倒计时功能，此时time设置的时间才生效,倒计时结束后,对话框自动关闭。0:time无效，对话框会一直显示。 如果需要强制关闭对话框,此时 time 设置为0即可。
			fontSize:提示框内容的字体大小 10-40
			返回值:无
			调用例子:|
			messageboxex("测试内容", 3000, 200, 200, 1, 25)    //3秒后自动关闭对话框;
			messageboxex("测试内容", 3000, 200, 200, 0, 25)    //一直显示对话框
			messageboxex("测试内容", 0, 200, 200, 0, 25)       //立即关闭对话框
          </example>
        </function>
		<function name="logopen">
          <pram>(字符串)</pram>
          <example>
            函数原型:|logopen()
            函数说明:|
            日志功能初始化
            返回值:
            调用例子:|
            logopen()--先打开日志功能
            logex("张三")
          </example>
        </function>
		<function name="logex">
          <pram>(字符串)</pram>
          <example>
            函数原型:|logex(log)
            函数说明:|
            保存日志
			log:存入日志的字符串
            返回值:
            调用例子:|
			logopen()--先打开日志功能
            logex("张三")
          </example>
        </function>
		 <function name="traceprint">
          <pram>(str)</pram>
          <example>
            函数原型:|traceprint(str)
            函数说明:|
            在输出栏,输出信息
            str:输出的信息
            返回值:无
            调用例子:|
			-- 此输出未带文件和行号, 如要知道输出的文件行请使用lineprint
            traceprint("hello 指端精灵")
          </example>
        </function>
		<function name="lineprint">
          <pram>(str)</pram>
          <example>
            函数原型:|lineprint(str)
            函数说明:|
            在输出栏,输出信息
            str:输出的信息
            返回值:无
            调用例子:|
            lineprint("hello 指端精灵")
			-- 输出: dcytest.t[行号:2]hello 指端精灵
          </example>
        </function>
        <function name="gettickcount">
          <pram>()</pram>
          <example>
            函数原型:|gettickcount()
            函数说明:|
            获取系统从开机到现在所经历的时间(单位ms)
            参数:无
            返回值:返回开机到现在的时间
            调用例子:|
            ret=gettickcount()
            lineprint(ret)
          </example>
        </function>
        <function name="sleep">
          <pram>(ms)</pram>
          <example>
            函数原型:|sleep(ms)
            函数说明:|
            让程序进入一个短暂的等待(单位ms)
            ms:程序等待的时间(单位ms)
            返回值:无
            调用例子:|
            sleep(2000)
			-- 睡眠两秒
          </example>
        </function>
        <function name="getrcpath">
          <pram>()</pram>
          <example>
            函数原型:|getrcpath()
            函数说明:|
            获取当前项目资源路径
            参数:无
            返回值:返回tc资源目录路径
            调用例子:|
            local rc_path=getrcpath("rc:main.png")
            lineprint(rc_path)
          </example>
        </function>
        <function name="setrotatescreen">
          <pram>(type)</pram>
          <example>
            函数原型:|setrotatescreen(type=0)
            函数说明:|
            改变坐标体系,影响模拟点击,图色,识字一系列操作,以屏幕实际旋转为准,如果屏幕没有旋转,强行设置坐标体系会引起部分操作出现错误
            type:默认参数为0,以home键在下边为标准,旋转0度;1,以home键在右边为标准,旋转-90度,2,以home键在左边为标准,旋转90度,3,以home键在上边为标准,旋转180度
            返回值:设置成功返回true,失败返回false
            调用例子:|
			-- 设置竖屏
			setrotatescreen()
			-- 设置横屏
			setrotatescreen(1)
          </example>
        </function>
        
       
        
	  </namespace>
      <namespace name="字符串">
        <function name="strlowercase">
          <pram>(str)</pram>
          <example>
            函数原型:|strlowercase(str)
            函数说明:|
            把字符串中的英文转换为小写,中文不变
            str:要转小写的字符串
            返回值:返回转换成小写的字符串
            调用例子:|
            ret=strlowercase("ABC中国")
            lineprint(ret)
          </example>
        </function>
        <function name="struppercase">
          <pram>(str)</pram>
          <example>
            函数原型:|struppercase(str)
            函数说明:|
            把字符串中的英文转换为大写,中文不变
            str:要转大写的字符串
            返回值:返回转换成大写的字符串
            调用例子:|
            ret=struppercase("abc中国")
            lineprint(ret)
          </example>
        </function>
        <function name="strleft">
          <pram>(str,n)</pram>
          <example>
            函数原型:|strleft(str,n)
            函数说明:|
            从左边开始取字符,取得位数为N位
            str:要截取的字符串
            n:从左边截取的字符串长度
            返回值:返回截取到的字符串
            调用例子:|
            ret=strleft("AbcDeFfhji",5)
            lineprint(ret)
          </example>
        </function>
        <function name="strright">
          <pram>(str,n)</pram>
          <example>
            函数原型:|strright(str,n)
            函数说明:|
            从右边开始取字符,取得位数为N位
            str:要截取的字符串
            n:从右边截取的字符串长度
            返回值:返回截取到的字符串
            调用例子:|
            ret=strright("AbcDeFfhji",5)
            lineprint(ret)
			-- 输出 dcytest.t[行号:3]Ffhji
          </example>
        </function>
        <function name="strsub">
          <pram>(str,start,end)</pram>
          <example>
            函数原型:|strsub(str,start,end)
            函数说明:|
            截取指定位置的字符串
            str:要截取的字符串
            bengin:开始截取的位置
            end:结束截取的位置
            返回值:返回截取到的字符串
            调用例子:|
            ret=strsub("abcDEfGkldL",2,5)
            lineprint(ret)
			-- 输出 dcytest.t[行号:3]cDE
          </example>
        </function>
        <function name="strfind">
          <pram>(sourcestr,compstr,pos=0)</pram>
          <example>
            函数原型:|strfind(sourcestr,compstr,pos=0)
            函数说明:|
            查找指定的字符串,返回在设置pos后compstr所在的sourcestr中的第一个位置
            sourcestr:源字符串
            compstr:要查找的字符串
            pos:查找起始位置,默认值为0
            返回值:函数执行成功返回设置pos后compstr所在sourcestr中的第一个位置,否则返回-1
            调用例子:|
            ret=strfind("cOandroIdcamera","and")
            lineprint(ret)
			-- 输出 dcytest.t[行号:3]2
          </example>
        </function>
        <function name="strlen">
          <pram>(str)</pram>
          <example>
            函数原型:|strlen(str)
            函数说明:|
            获取字符串字符个数
            str:要操作的字符串
            返回值:返回字符个数
            调用例子:|
            ret=strlen("cOandroIdcamera")
            lineprint(ret)
			-- 输出 dcytest.t[行号:3]15
          </example>
        </function>
        <function name="strlenbyte">
          <pram>(str)</pram>
          <example>
            函数原型:|strlenbyte(str)
            函数说明:|
            获取字符串字节数
            str:要获取的字符串
            返回值:返回字符串字节数
            调用例子:|
            ret = strlenbyte("k中fan")
            lineprint(ret)
			-- 输出 dcytest.t[行号:3]7
          </example>
        </function>
        <function name="strtrim">
          <pram>(expression,str="")</pram>
          <example>
            函数原型:|strtrim(expression,str="")
            函数说明:|
            去除字符串两边指定的字符串
            expression:要操作的字符串
            str:要去掉的字符串,默认为空,去掉两边的空格
            返回值:返回截取到的字符串
            调用例子:|
            ret=strtrim("   comabCdef1   ")
            lineprint(ret)
			-- 输出 dcytest.t[行号:3] comabCdef1
			
			ret=strtrim(" comabCdef1","f1")
            lineprint(ret)
			-- 输出 dcytest.t[行号:3] comabCde
          </example>
        </function>
        <function name="straddchar">
          <pram>(str,utf8)</pram>
          <example>
            函数原型:|straddchar(str,utf8)
            函数说明:|
            在str结尾增加一个字符(utf-8编码)
            str:源字符串
            utf8:字符的utf-8编码
            返回值:返回新的字符串
            调用例子:|
            local str = "版本"
			-- 如果为0 则为版
			-- 如果为1 则为本
            ret = strgetat(str,1)
            local newstr = straddchar("TC移动",ret)
            lineprint(newstr) 
			-- 输出 dcytest.t[行号:5]TC移动本
          </example>
        </function>
        <function name="strgetat">
          <pram>(str,index)</pram>
          <example>
            函数原型:|strgetat(str,index)
            函数说明:|
            获取字符串指定位置字符utf-8编码
            str:源字符串
            index:要获取的字符所在的位置
            返回值:返回字符的utf-8编码的整型值
            调用例子:|
            ret = strgetat("A大A",2)
            lineprint(ret)
			-- 输出 dcytest.t[行号:3]65
          </example>
        </function>
        <function name="Strncmp">
          <pram>(str1,str2,count)</pram>
          <example>
            函数原型:|Strncmp(str1,str2,count)
            函数说明:|比较字符串前几位的ascii值
            str1:字符串1
            str1:字符串2
            count:要比较的字符数量
            返回值:指定长度一样则返回true,否则返回false
            调用例子:|
            ret = Strncmp("123744","1234",4)
            lineprint(tostring(ret)) 
			-- 输出 dcytest.t[行号:3]false
          </example>
        </function>
        <function name="strformat">
          <pram>(format,...)</pram>
          <example>
            函数原型:|strformat(format,...)
            函数说明:|
            格式化字符串
            format:格式化字符串,可包含转换字符
            %x 转成十六进制小写字符
            %X 转换成十六进制大写字符
            %d 转换成十进制字符
            %c 转换成对应ascii字符
            %f 转成浮点数值字符
            %s 转换成字符串
            返回值:函数执行成功返回格式化以后的的字符串,否则返回null
            调用例子:|
            ret=strformat("字符:%s 浮点型:%f 十进制:%d十六进制:%x ascii码:%c","aaf",20.5,50,255,65)
            lineprint(ret)
			-- 输出 dcytest.t[行号:3]字符:aaf 浮点型:20.500000
          </example>
        </function>
        <function name="strreverse">
          <pram>(sourcestr)</pram>
          <example>
            函数原型:|strreverse(sourcestr)
            函数说明:|
            把字符串进行倒序排列
            sourcestr:源字符串
            返回值:返回进行倒序排列以后的字符串
            调用例子:|
            ret=strreverse("com1ndroIdcamera")
            lineprint(ret)
			-- 输出 dcytest.t[行号:3]aremacdIordn1moc
          </example>
        </function>
        <function name="strreplace">
          <pram>(sourcestr,str2,str3)</pram>
          <example>
            函数原型:|strreplace(sourcestr,str2,str3)
            函数说明:|
            用指定字符串替换源字符串匹配的字符串
            sourcestr:源字符串
            str2:需要被替换的字串
            str3:用于替换的字串
            返回值:返回替换后的字符串
            调用例子:|
            ret=strreplace("com1ndroIdcamera","lndroId","android")
            lineprint(ret)
			-- 输出 dcytest.t[行号:3]com1ndroIdcamera
          </example>
        </function>
        
        <function name="strcut">
          <pram>(str,count,BeginOrEnd)</pram>
          <example>
            函数原型:|strcut(str,count,BeginOrEnd)
            函数说明:|在字符串中移除指定的前几位或后几位字符串
            str: 字符串
            count: 移除前几位或后几位字符串(取值范围为一个正整数且最大范围不能超过字符串长度)
            BeginOrEnd: 真(true)为从前移除,假(false)为从后移除
            返回值:返回移除后的字符串
            调用例子:|
            lineprint(strcut("abcdefghijiklnm",5,false))
			-- 输出 dcytest.t[行号:2]fghijiklnm
          </example>
        </function>
        <function name="strcmp">
          <pram>(str1,str2)</pram>
          <example>
            函数原型:|strcmp(str1,str2)
            函数说明:|
            比较2个字符串,返回值==0表示相等,&gt;0表示字符串1大于字符串2,反之则字符串1小于字符串2
            str1:字符串1
            str2:字符串2
            返回值:返回字符串之间相差的值,如果=0表示相等
            调用例子:|
            ret = strcmp("abc","abc1")
            lineprint(ret)
			-- 输出 dcytest.t[行号:3]-49
          </example>
        </function>
        <function name="stringtoarray">
          <pram>(string)</pram>
          <example>
            函数原型:|stringtoarray(string)
            函数说明:|
            string:初始化数组 以逗号分开的字符串,如:"1,2,3"
            返回值:转换成功返回数组,失败返回null
            调用例子:|
            ret = stringtoarray("1,2,3")
            lineprint(type(ret))
			-- 输出 dcytest.t[行号:3]table
          </example>
        </function>
        <function name="aesencrypt">
          <pram>(str,key)</pram>
          <example>
            函数原型:|aesencrypt(str,key)
            函数说明:|使用aes算法加密字符串
            str:字符串
            key:密钥
            返回值:返回加密后的内容
            调用例子:|
            x,y,ret = aesencrypt("123","123")
            lineprint(ret)
          </example>
        </function>
        <function name="aesdecrypt">
          <pram>(str,key)</pram>
          <example>
            函数原型:|aesdecrypt(str,key)
            函数说明:|使用aes算法解密字符串
            str:字符串
            key:密钥
            返回值:返回解密后的内容
            调用例子:|
            ret = aesdecrypt("123","123")
            lineprint(ret)
          </example>
        </function>
        <function name="md5">
          <pram>(str)</pram>
          <example>
            函数原型:|md5(str)
            函数说明:|计算字符串的md5值
            str:需加密的字符串
            返回值:返回32个字符的ascii字符串
            调用例子:|
            ret = md5("123")
            lineprint(ret)
			-- 输出 dcytest.t[行号:3]202cb962ac59075b964b07152d234b70
          </example>
        </function>
        <function name="regexreplace">
          <pram>(src,pattern,newstr,iscase=false,isGloble=false,isunicode=true,isMulilne=false)</pram>
          <example>
            函数原型:|regexreplace(src,pattern,newstr,iscase=false,isGloble=false,isunicode=true,isMulilne=false)
            函数说明:|替换正则表达式相匹配的文本
            src:原字符串
            pattern:正则表达式
            iscase:false:false:表示区分大小写 true:表示不区分大小写,默认区分大小写
            isgloble:false:表示只匹配第一个 true:表全局匹配,默认只匹配第一个
	    isunicode:true 表示所有字符以uncode编码来匹配,速度极慢,兼容历史版本中匹配中文代码,false,以utf8编码方式匹配,速度极快,比tc4.0正则快速度的2倍
	    isMulilne:参数默认为false,表示不支持多行匹配,参数为true,支持多行匹配
            返回值:返回替换后的文本
            调用例子:|
            local ret = regexreplace("12311(123){12}ggf(456){78}ff","(\\([0-9]+\\))(\\{[0-9]+\\}{1})","替换")
            lineprint(ret)
			-- 输出 dcytest.t[行号:3]12311替换ggf(456){78}ff
          </example>
        </function>
        <function name="regexsubreplace">
          <pram>(src,pattern,newstr,iscase=false,isGloble=false,isunicode=true,isMulilne=false)</pram>
          <example>
            函数原型:|regexsubreplace(src,pattern,newstr,iscase=false,isGloble=false,isunicode=true,isMulilne=false)
            函数说明:|替换正则子表达式相匹配的文本
            src:原字符串
            pattern:正则表达式
            iscase:false:false:表示区分大小写 true:表示不区分大小写,默认区分大小写
            isgloble:false:表示只匹配第一个 true:表全局匹配,默认只匹配第一个
	    isunicode:true 表示所有字符以uncode编码来匹配,速度极慢,兼容历史版本中匹配中文代码,false,以utf8编码方式匹配,速度极快,比tc4.0正则快速度的2倍
	    isMulilne:参数默认为false,表示不支持多行匹配,参数为true,支持多行匹配
            返回值:返回替换后的文本到
            调用例子:|
            local ret = regexsubreplace("12311(123){12}ggf(456){78}ff","(\\([0-9]+\\))(\\{[0-9]+\\}{1})","替换")
            lineprint(ret)
          </example>
        </function>
      </namespace>
      <namespace name="文件">
        <function name="fileopen">
          <pram>(file_path,attribute)</pram>
          <example>
            函数原型:|fileopen(file_path,attribute="r+")
            函数说明:|
            打开文件(如果文件包含有中文,必须确定文件编码为utf-8,否则会出现乱码)
            "r":打开只读文件,该文件必须存在
            "r+":打开可读写的文件,该文件必须存在
            "w":打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失.若文件不存在则建立该文件
            "w+":打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失.若文件不存在则建立该文件
            "a": 以附加的方式打开只写文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留
            "a+":以附加方式打开可读写的文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留
            "share":此参数与可上列参数组合 "r|share", "r+|share",表示以同步的方式访问此文
            返回值:打开成功返回打开文件的句柄,打开失败返回-1.
            调用例子:|
            local fd=fileopen("/sdcard/zdlog.log")
            lineprint(fd)
            fileclose(fd)
			-- 输出 dcytest.t[行号:3]107
          </example>
        </function>
        <function name="fileclose">
          <pram>(handle)</pram>
          <example>
            函数原型:|fileclose(handle)
            函数说明:|
            关闭文件
            handle:文件句柄
            返回值:返回执行结果,成功返回true,失败返回false.
            调用例子:|
            local fd=fileopen("/sdcard/1.txt")
            local ret=fileclose(fd)
            lineprint(ret)
          </example>
        </function>
        <function name="filewrite">
          <pram>(handle,content)</pram>
          <example>
            函数原型:|filewrite(handle,content)
            函数说明:|
            向打开的文件写入内容
            handle:文件句柄
            content:要写入的内容
            返回值:写入成功返回true,失败返回false
            调用例子:|
            local fd = fileopen("/sdcard/zdlog.log","w+")
            if fd > 0 then
				lineprint("开始写文本")
				filewrite(fd,"测试写文本")
				fileclose(fd)
            end
          </example>
        </function>
        <function name="filewriteline">
          <pram>(handle,content)</pram>
          <example>
            函数原型:|filewriteline(handle,content)
            函数说明:|
            向打开的文件在当前游标位置写入一行内容
            handle:文件句柄
            content:要写入的内容
            返回值:写入成功返回true,失败返回false
            调用例子:|
            local fd = fileopen("/sdcard/1.txt","w+")
            if fd > 0 then
				filewriteline(fd,"测试写文本")
				fileclose(fd)
            end
          </example>
        </function>
        <function name="fileread">
          <pram>(handle,content_size)</pram>
          <example>
            函数原型:|fileread(handle,content_size)
            函数说明:|
            打开文件在当前游标位置,开始读出指定数量字节内容
            handle:文件句柄
            content_size:要读出的内容大小
            返回值:执行成功返回读出的内容,否则返回null
            调用例子:|
            local fd=fileopen("/sdcard/1.txt")
            if fd > 0 then
				local content=fileread(fd,10)
				lineprint(content)
			fileclose(fd)
            end
            
          </example>
        </function>
        <function name="filereadline">
          <pram>(fd)</pram>
          <example>
            函数原型:|filereadline(fd)
            函数说明:|
            读一行文本
            fd:文件句柄
            line:文本所在行
            返回值:返回读出的文本,返回null表示出现错误,使用getlasterror函数查询相关错误信息
            调用例子:|
			local fd=fileopen("/sdcard/zdlog.log")
			if fd > 0 then
				local content = filereadline(fd)
				lineprint(content)
			end
          </example>
        </function>
        <function name="fileisend">
          <pram>(fd)</pram>
          <example>
            函数原型:|fileisend(fd)
            函数说明:|
            判断文件是否读到结尾
            fd:文件句柄
            返回值:读到文件尾,返回true,否则返回false
            调用例子:|
            local fd = fileopen("/sdcard/file.txt")
			if fd > 0 then
				while true do
					local ret = fileisend(fd)
					if tostring(ret) == "true" then
					   break 
					end
					local line = filereadline(fd)
					lineprint(line)
				end
				fileclose(fd)
			end
          </example>
        </function>
        <function name="filecopy">
          <pram>(path1,path2,type=false)</pram>
          <example>
            函数原型:|filecopy(path1,path2,type=false)
            函数说明:|
            拷贝文件
            path1:文件源地址
            path2:目标地址
            type:如果文件存在是否覆盖,默认为false不覆盖,true则覆盖
            返回值:返回拷贝操作的结果,成功返回true,失败返回false.
            调用例子:|
            local ret=filecopy("/sdcard/zdlog.log","/sdcard/3.log")
            lineprint(tostring(ret))
			-- 输出 dcytest.t[行号:3]true
          </example>
        </function>
        <function name="filemove">
          <pram>(path1,path2)</pram>
          <example>
            函数原型:|filemove(path1,path2)
            函数说明:|
            移动文件
            path1:文件源地址
            path2:目标地址
            返回值:返回移动操作的结果,成功返回true,失败返回false.
            调用例子:|
            local ret=filemove("/sdcard/zdlog.log","/sdcard/55.txt")
            lineprint(tostring(ret))
			-- 输出 dcytest.t[行号:3]true
          </example>
        </function>
        <function name="filerename">
          <pram>(path1,path2)</pram>
          <example>
            函数原型:|filerename(path1,path2)
            函数说明:|
            重命名文件
            path1:原文件名(全路径)
            path2:目标文件名(全路径)
            返回值:返回操作的结果,成功返回true,失败返回false.
            调用例子:|
            local ret=filerename("/sdcard/1.txt","/sdcard/3.txt")
            lineprint(tostring(ret))
			-- 输出 dcytest.t[行号:3]true
          </example>
        </function>
        <function name="filedelete">
          <pram>(path)</pram>
          <example>
            函数原型:|filedelete(path)
            函数说明:|
            删除文件
            path:文件存放的位置
            返回值:返回操作的结果,成功返回true,失败返回false.
            调用例子:|
            local ret=filedelete("/sdcard/3.txt")
            lineprint(tostring(ret))
			-- 输出 dcytest.t[行号:3]true
          </example>
        </function>
        <function name="foldercreate">
          <pram>(path1)</pram>
          <example>
            函数原型:|folderreate(path1)
            函数说明:|
            创建目录
            path1:要创建目录的路径
            返回值:返回操作的结果,成功返回true,失败返回false.
            调用例子:|
            local ret=foldercreate("/sdcard/folderTest")
            lineprint(tostring(ret))
          </example>
        </function>
        <function name="foldercopy">
          <pram>(path1,path2)</pram>
          <example>
            函数原型:|foldercopy(path1,path2)
            函数说明:|
            拷贝目录
            path1:目录原路径
            path2:拷贝目标路径
            返回值:返回操作的结果,成功返回true,失败返回false.
            调用例子:|
            local ret=foldercopy("/sdcard/tc","/sdcard/folderTest")
            lineprint(tostring(ret))
          </example>
        </function>
        <function name="folderrename">
          <pram>(path1,path2)</pram>
          <example>
            函数原型:|folderrename(path1,path2)
            函数说明:|
            重命名目录
            path1:原目录名(全路径)
            path2:新目录名(全路径)
            返回值:返回操作的结果,成功返回true,失败返回false.
            调用例子:|
            local ret=folderrename("/sdcard/folderTest","/sdcard/folderTest11")
           lineprint(tostring(ret))
          </example>
        </function>
        <function name="folderdelete">
          <pram>(path1)</pram>
          <example>
            函数原型:|folderdelete(path1)
            函数说明:|
            删除目录
            path1:目录路径
            返回值:返回操作的结果,成功返回true,失败返回false.
            调用例子:|
            local ret=folderdelete("/sdcard/folderTest11")
            lineprint(tostring(ret))
          </example>
        </function>
        <function name="fileexist">
          <pram>(file)</pram>
          <example>
            函数原型:|fileexist(file)
            函数说明:|
            文件是否存在
            file:文件存放的位置
            返回值:返回0,文件不存在;返回1,目标是文件;返回2,目标是文件夹
            调用例子:|
            local ret=fileexist("/sdcard/b.txt")
            lineprint(tostring(ret))
          </example>
        </function>
        <function name="filelog">
          <pram>(content,path)</pram>
          <example>
            函数原型:|filelog(content,path)
            函数说明:|
            写日志到指定路径
            content:写入的内容
            path:log文件存放的位置
            返回值:返回写入操作的结果,成功返回true,失败返回false.
            调用例子:|
            local ret=filelog("my log test","/sdcard/a.txt")
            lineprint(tostring(ret))
          </example>
        </function>
        <function name="filesetpostion">
          <pram>(handle,pos)</pram>
          <example>
            函数原型:|filesetpostion(handle,pos)
            函数说明:|
            设置文件中游标的位置
            handle:文件句柄
            pos:游标位置
            返回值:函数成功返回游标的值,否则返回-1
            调用例子:|
            local fd=fileopen("/sdcard/1.txt")
            local posval=filesetpostion(fd,3)
            fileclose(fd)
            lineprint(fd)
            lineprint(posval)
          </example>
        </function>
        <function name="filereadex">
          <pram>(path)</pram>
          <example>
            函数原型:|filereadex(path)
            函数说明:|
            一次性读出整个文件
            path:文件存放的位置
            返回值:函数执行成功返回文件的内容,否则返回null
            调用例子:|
            local file = filereadex("/sdcard/1.txt")
            lineprint(file)
          </example>
        </function>
        <function name="filewriteex">
          <pram>(path,content)</pram>
          <example>
            函数原型:|filewriteex(path,content)
            函数说明:|
            将内容以覆盖的方式写入文件
            path:文件存放的位置
            content:内容
            返回值:写入成功返回真,失败返回假
            调用例子:|
            local file = filewriteex("/sdcard/1.txt","测试文本")
            lineprint(tostring(file))
          </example>
        </function>
        <function name="filegetlengthbyte">
          <pram>(path)</pram>
          <example>
            函数原型:|filegetlengthbyte(path)
            函数说明:|
            获取文件字节长度
            path:文件存放的位置
            返回值:文件的字节长度
            调用例子:|
            local len = filegetlengthbyte("/sdcard/1.txt")
            lineprint(len)
          </example>
        </function>
        <function name="filegetlength">
          <pram>(filePath)</pram>
          <example>
            函数原型:|filegetlength(路径)
            函数说明:|
            获取文件字符的数量,android系统中文件是utf8编码中文表示三个字节的长度
            路径:文件存放的位置
            返回值:函数执行成功返回文件的字符长度,否则返回-1
            调用例子:|
            变量 len = filegetlength("d:/sdcard/1.txt")
            lineprint(len)
          </example>
        </function>
        <function name="filetraverse">
          <pram>path</pram>
          <example>
            函数原型:| local file_array, folder_array, bRes = filetraverse(path)
            函数说明:|
            遍历目录的文件夹与文件
            path:文件存放的位置
            file_array:保存文件名数组
            folder_array:保存文件夹数组
            返回值:目录存在返回true(1),否则返回false(0)
            调用例子:|
            local file_array, folder_array, bRes = filetraverse("/sdcard/")
				if bRes then
					if arraysize(file_array) == 0 then
						lineprint("无文件")
					else
						for i=1,arraysize(file_array), 1 do
							--messagebox(file_array[i])
							lineprint(file_array[i])
						end
					end
					
					if arraysize(folder_array) == 0 then
						lineprint("无文件夹")
					else
						for i=1,arraysize(folder_array),1 do
							lineprint(folder_array[i])
						end
					end
				else
					lineprint("无此目录")
			end
          </example>
        </function>
        <function name="fileinsertline">
          <pram>(file_path,content,line)</pram>
          <example>
            函数原型:|fileinsertline(file_path,content,line)
            函数说明:|
            在指定行前面插入文本
            file_path:文件存放的位置
            content:要插入的内容
            line:插件内容所在行
            返回值:成功返回true,失败返回false,使用getlasterror函数查询相关错误信息
            调用例子:|
            local ret = fileinsertline("/sdcard/123.txt","asdfasdf",5)
            lineprint(tostring(ret))
          </example>
        </function>
        <function name="fileaddtext">
          <pram>(file_path,content)</pram>
          <example>
            函数原型:|fileaddtext(file_path,content)
            函数说明:|
            追加内容到文件
            file_path:文件存放的位置
            content:要追加的内容
            返回值:成功返回true,失败返回false,使用getlasterror函数查询相关错误信息
            调用例子:|
            local ret = fileaddtext("/sdcard/123.txt","asdfasdf")
            lineprint(tostring(ret))
          </example>
        </function>
        <function name="filereadlineex">
          <pram>(file_path,line)</pram>
          <example>
            函数原型:|filereadlineex(file_path,line)
            函数说明:|
            读出指定行文本
            file_path:文件存放的位置
            line:文本所在行
            返回值:返回读出的文本,返回null表示出现错误,使用getlasterror函数查询相关错误信息
            调用例子:|
            local content = filereadlineex("/sdcard/123.txt",5)
            lineprint(content)
          </example>
        </function>
        <function name="filedeleteline">
          <pram>(file_path,line)</pram>
          <example>
            函数原型:|filedeleteline(file_path,line)
            函数说明:|
            删除指定行文本
            file_path:文件存放的位置
            line:文本所在行
            返回值:成功返回true,失败返回false,使用getlasterror函数查询相关错误信息
            调用例子:|
            local ret = filedeleteline("/sdcard/123.txt",5)
            lineprint(tostring(ret))
          </example>
        </function>
        <function name="filegetline">
          <pram>(file_path)</pram>
          <example>
            函数原型:|filegetline(file_path)
            函数说明:|
            获取文件总行
            file_path:文件存放的位置
            返回值:文件内容行数,返回null表示打开文件出错,使用getlasterror函数查询相关错误信息
            调用例子:|
            local b = filegetline("/sdcard/123.txt")
            lineprint(b)
          </example>
        </function>
        <function name="fileencrypt">
          <pram>(srcfile,dstfile,key)</pram>
          <example>
            函数原型:|fileencrypt(srcfile,dstfile,key)
            函数说明:|加密文件
            加密文件
            srcfile:需加密的文件路径
            dstfile:加密后的文件存放的路径(新建一个文件)
            key:密钥
            返回值:加密的文件与加密后的文件路径合法则返回真,否则返回假
            调用例子:|
            local ret = fileencrypt("/sdcard/123.txt","/sdcard/123d.txt","key")
            lineprint(tostring(ret))
          </example>
        </function>
        <function name="filedecrypt">
          <pram>(srcfile,dstfile,key)</pram>
          <example>
            函数原型:|filedecrypt(srcfile,dstfile,key)
            函数说明:|
            解密文件
            srcfile:源文件路径(加密过后的文件)
            dstfile:解密后的文件存放的路径(新建一个文件)
            key:密钥
            返回值:加密后的文件与解密后的文件路径合法则返回真,否则返回假
            调用例子:|
            local ret = filedecrypt("/sdcard/123d.txt","/sdcard/123e.txt","key")
            lineprint(tostring(ret))
          </example>
        </function>
        <function name="filemd5">
          <pram>(file)</pram>
          <example>
            函数原型:|filemd5(file)
            函数说明:|
            生成文件唯一的md5值
            file:文件路径
            返回值:返回文件的md5值
            调用例子:|
            local ret = filemd5("/sdcard/123")
            lineprint(ret)
          </example>
        </function>
      </namespace>
      <namespace name="模拟功能">
        <function name="tap">
          <pram>(x,y)</pram>
          <example>
            函数原型:|tap(x,y)
            函数说明:|
            轻轻点击一下屏幕
            x:屏幕绝对坐标x
            y:屏幕绝对坐标y
            返回值:无
            调用例子:|
            tap(100,100)
          </example>
        </function>
        <function name="touch">
          <pram>(x,y,time)</pram>
          <example>
            函数原型:|touch(x,y,time)
            函数说明:|
            长按屏幕一段时间
            x:屏幕绝对坐标x
            y:屏幕绝对坐标y
            time:长按屏幕不放的时间(单位ms)
            返回值:无
            调用例子:|
            touch(100,100,2000)
          </example>
        </function>
        <function name="touchdown">
          <pram>(x,y,id)</pram>
          <example>
            函数原型:|touchdown(x,y,id)
            函数说明:|
            指定坐标点触摸按下,支持多点触控,id取值0-4
            x:屏幕绝对坐标x
            y:屏幕绝对坐标y
            id:用作区分手指(暂时只支持0-4)
            返回值:无
            调用例子:|
            touchdown(100,100,0)
            touchmove(200,200,0)
            touchup(0)
          </example>
        </function>
        <function name="touchmove">
          <pram>(x,y,id)</pram>
          <example>
            函数原型:|touchmove(x,y,id)
            函数说明:|
            滑动到指定点,支持多点滑动,id取值0-4
            x:屏幕绝对坐标x
            y:屏幕绝对坐标y
            id:用作区分手指(暂时只支持0-4)
            返回值:无
            调用例子:|
            touchdown(100,100,0)
            touchmove(200,200,0)
            touchup(0)
          </example>
        </function>
        <function name="touchup">
          <pram>(id)</pram>
          <example>
            函数原型:|touchup(id)
            函数说明:|
            触摸弹起,id取值0-4区分
            id:用作区分手指
            返回值:无
            调用例子:|
            touchdown(100,100,0)
            touchmove(200,200,0)
            touchup(0)
          </example>
        </function>
        <function name="swipe">
          <pram>(x1,y1,x2,y2)</pram>
          <example>
            函数原型:|swipe(x1,y1,x2,y2)
            函数说明:|
            手指从屏幕一个点划到另外一个点
            x1:手指在屏幕按下的点x,(相对屏幕原点)
            y1:手指在屏幕按下的点y,(相对屏幕原点)
            x2:手指在屏幕上松手的点x,(相对屏幕原点)
            y2:手指在屏幕上松手的点y,(相对屏幕原点)
            返回值:无
            调用例子:|
            swipe(100,300,500,300)
          </example>
        </function>
        <function name="keypress">
          <pram>(code)</pram>
          <example>
            函数原型:|keypress(code)
            函数说明:|
            模拟物理键或者虚拟按键
            code:键码
            返回值:无
            调用例子:|
            keypress(3) //表示模拟home键
          </example>
        </function>
        <function name="keydown">
          <pram>(code)</pram>
          <example>
            函数原型:|keydown(code)
            函数说明:|
            模拟物理键或者虚拟按键按下
            code:键码
            返回值:无
            调用例子:|
            keydown(25)//音量键
          </example>
        </function>
        <function name="keyup">
          <pram>(code)</pram>
          <example>
            函数原型:|keyup(code)
            函数说明:|
            模拟物理键或者虚拟按键弹起
            code:键码
            返回值:无
            调用例子:|
            keyup(25)//音量键
          </example>
        </function>
        <function name="getime">
          <pram>(无)</pram>
          <example>
            函数原型:|getime()
            函数说明:|
            获取默认输入法
            返回值:返回输入法id
            调用例子:|
            lineprint(getime())//显示当前默认输入法
          </example>
        </function>
        <function name="setime">
          <pram>(id)</pram>
          <example>
            函数原型:|setime()
            函数说明:|
            设置默认输入法
            id:输入法的id,可以在通过adb shell登陆手机,使用 ime list -s,查看当前可以使用的输入法
            返回值:无
            调用例子:|
            setime("com.android.inputmethod.pinyin/.PinyinIME")
			-- 设置默认为谷歌输入法,id可用getime()获取
          </example>
        </function>
        <function name="inputtext">
          <pram>(str)</pram>
          <example>
            函数原型:|inputtext(str)
            函数说明:|
            在文字编辑区输出文字
            text:文本信息
            返回值:无
            调用例子:|
            inputtext("hello,你好")
          </example>
        </function>
        <function name="keypresschar">
          <pram>(code)</pram>
          <example>
            函数原型:|keypresschar(code)
            函数说明:|
            模拟物理键或者虚拟按键
            code:字符串常量,详细参考文档 虚拟键码表
            返回值:无
            调用例子:|
            keypresschar("home") 
			--表示模拟home键
          </example>
        </function>
        <function name="keydownchar">
          <pram>(code)</pram>
          <example>
            函数原型:|keydownchar(code)
            函数说明:|
            模拟物理键或者虚拟按键按下
            code:字符串常量,详细参考文档 虚拟键码表
            返回值:无
            调用例子:|
            keydownchar("volup")//音量键
          </example>
        </function>
        <function name="keyupchar">
          <pram>(code)</pram>
          <example>
            函数原型:|keyupchar(code)
            函数说明:|
            模拟物理键或者虚拟按键弹起
            code:字符串常量,详细参考文档 虚拟键码表
            返回值:无
            调用例子:|
            keyupchar("volup")
			-- 音量键
          </example>
        </function>
      </namespace>
      <namespace name="图色">
        <function name="findpic">
          <pram>(x1,y1,x2,y2,path,picname, delta_color,sim,scantype)</pram>
          <example>
            函数原型:|findpic(x1,y1,x2,y2,path,picname,delta_color,sim,scantype)
            函数说明:|
            屏幕找图返回xy坐标,以及图片索引.
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            path: 图片路径暂时需要写绝对路径
			picname: 图片名称 |用此符号分开
            delta_color: 颜色色偏 比如"203040" 表示rgb的色偏分别是20 30 40 (这里是16进制表示)
            sim: 颜色的相似度(取值范围0.5~1.0)
            scantype: 扫描方式,0: 从左到右,从上到下 1: 从左到右,从下到上 2: 从右到左,从上到下 3: 从右到左,从下到上
            x: 返回起点颜色值的x坐标
            y: 返回起点颜色值的y坐标
            返回值:返回找到的图片的序号,从0开始索引.如果没找到返回-1
            调用例子:|
            local x=-1 y=-1 ret=-1
            x,y,ret=findpic(0,0,2000,2000,"/sdcard/bmp/","石头.bmp","000000",1.0,0)
            if x~=-1 then
            tap(x,y)
            end
          </example>
        </function>
        <function name="findpics">
          <pram>(x1,y1,x2,y2,path,delta_color,sim,scantype)</pram>
          <example>
            函数原型:|findpics(x1,y1,x2,y2,path,delta_color,sim,scantype)
            函数说明:|
            屏幕找图返回xy坐标,以及文件名.
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            path: 图片路径,支持多图片用|符号分开,暂时需要写绝对路径
            delta_color: 颜色色偏 比如"203040" 表示rgb的色偏分别是20 30 40 (这里是16进制表示)
            sim: 颜色的相似度(取值范围0.5~1.0)
            scantype: 扫描方式,0: 从左到右,从上到下 1: 从左到右,从下到上 2: 从右到左,从上到下 3: 从右到左,从下到上
            x: 返回起点颜色值的x坐标
            y: 返回起点颜色值的y坐标
            返回值:返回找到的图片的文件名. 没找到返回长度为0的字符串.
            调用例子:|
            local x=-1 y=-1 ret=-1
            x,y,ret=findpics(0,0,2000,2000,"/sdcard/123.bmp","000000",1.0,0)
            if x~=-1 then
            tap(x,y)
            end
          </example>
        </function>
        <function name="findpicex">
          <pram>(x1,y1,x2,y2,path,delta_color,sim,scantype)</pram>
          <example>
            函数原型:|findpicex(x1,y1,x2,y2,path,delta_color,sim,scantype)
            函数说明:|
            以"索引,x,y"格式返回所有找到的图片信息.
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            path: 图片路径,支持多图片用|符号分开,暂时需要写绝对路径
            delta_color: 颜色色偏 比如"203040" 表示rgb的色偏分别是20 30 40 (这里是16进制表示)
            sim: 颜色的相似度(取值范围0.5~1.0)
            scantype: 扫描方式,0: 从左到右,从上到下 1: 从左到右,从下到上 2: 从右到左,从上到下 3: 从右到左,从下到上
            x: 返回起点颜色值的x坐标
            y: 返回起点颜色值的y坐标           
		    返回值:返回的是所有找到的坐标格式如下:"id,x,y|id,x,y..|id,x,y" (图片左上角的坐标),返回字符长度不会超过1024字节
            调用例子:|
            local ret=findpicex(0,0,2000,2000,"/sdcard/123.bmp","000000",1.0,0)
            if strlen(ret) > 0 then
            lineprint(ret)
            end
          </example>
        </function>
        <function name="findpicexs">
          <pram>(x1,y1,x2,y2,path,delta_color,sim,scantype)</pram>
          <example>
            函数原型:|findpicexs(x1,y1,x2,y2,path,delta_color,sim,scantype)
            函数说明:|
            以"文件名,x,y"格式返回所有找到的图片信息.
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            path: 图片路径,支持多图片用|符号分开,暂时需要写绝对路径
            delta_color: 颜色色偏 比如"203040" 表示rgb的色偏分别是20 30 40 (这里是16进制表示)
            sim: 颜色的相似度(取值范围0.5~1.0)
            scantype: 扫描方式,0: 从左到右,从上到下 1: 从左到右,从下到上 2: 从右到左,从上到下 3: 从右到左,从下到上
            x: 返回起点颜色值的x坐标
            y: 返回起点颜色值的y坐标            
			返回值:返回是所有找到的坐标格式如下:"file,x,y| file,x,y..| file,x,y"(图片左上角的坐标),返回字符长度不会超过1024字节
            调用例子:|
            local ret=findpicexs(0,0,2000,2000,"/sdcard/123.bmp","000000",1.0,0)
            if strlen(ret) > 0 then
            lineprint(ret)
            end
          </example>
        </function>
        <function name="findcolor">
          <pram>(x1,y1,x2,y2,color,sim,scantype)</pram>
          <example>
            函数原型:|findcolor(x1,y1,x2,y2,color,sim,scantype)
            函数说明:|
            屏幕找色,支持多色
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            color:要查找的颜色 颜色格式为"RRGGBB-DRDGDB|RRGGBB-DRDGDB|…………",颜色排列为RGB格式
            sim: 相似度,取值范围0.1-1.0
            scantype: 扫描方式,0: 从左上到右下 1: 从中间到四周 2: 从右下到左上
            x: 返回起点颜色值的x坐标
            y: 返回起点颜色值的y坐标
            返回值:返回找到颜色索引,没找到返回-1
            调用例子:|
            local x=-1 y=-1 ret=-1
            x,y,ret=findcolor(0,0,500,500,"000000-ff00ff|f1f1f1-000000",1.0,0)
            if x~=-1 then
            tap(x,y)
            end
          </example>
        </function>
		<function name="findcolorAJ">
          <pram>(x1,y1,x2,y2,color,sim,scantype)</pram>
          <example>
            函数原型:|findcolorAJ(x1,y1,x2,y2,color,sim,scantype)
            函数说明:|
            屏幕找色,支持多色. 注：暂不支持偏色
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            color:要查找的颜色 颜色格式为"RRGGBB-000000|RRGGBB-000000|…………",颜色排列为RGB格式
            sim: 相似度,取值范围0.1-1.0
            scantype: 扫描方式,0: 从左上到右下 1: 从中间到四周 2: 从右下到左上
            x: 返回起点颜色值的x坐标
            y: 返回起点颜色值的y坐标
            返回值:返回找到颜色索引,没找到返回-1
            调用例子:|
            local x=-1 y=-1 ret=-1
            x,y,ret=findcolorAJ(0,0,500,500,"ff00ff-000000|f1f1f1-000000",1.0,0)
            if x~=-1 then
            tap(x,y)
            end
          </example>
        </function>
        <function name="findcolorex">
          <pram>(x1,y1,x2,y2,color,sim,scantype)</pram>
          <example>
            函数原型:|findcolorex(x1,y1,x2,y2,color,sim,scantype)
            函数说明:|
            以"索引,x,y"格式返回所有找到的颜色信息
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            color:要查找的颜色 颜色格式为"RRGGBB-DRDGDB|RRGGBB-DRDGDB|…………",颜色排列为RGB格式
            sim: 相似度,取值范围0.1-1.0
            scantype: 扫描方式,0: 从左上到右下 1: 从中间到四周 2: 从右下到左上
            x: 返回起点颜色值的x坐标
            y: 返回起点颜色值的y坐标          
		    返回值:返回的是color参数中所有找到的颜色点坐标格式如下:"id,x,y|id,x,y..|id,x,y" ,返回字符长度不会超过1024字节
            调用例子:|
            local ret=findcolorex(0,0,500,500,"000000-ff00ff|f1f1f1-000000",1.0,0)
            if strlen(ret)>0 then
            lineprint(ret)
            end
          </example>
        </function>
        <function name="findmulticolor">
          <pram>(x1,y1,x2,y2,color,OffsetPos,sim,scantype)</pram>
          <example>
            函数原型:|findmulticolor(x1,y1,x2,y2,color,OffsetPos,sim,scantype)
            函数说明:|
            根据指定的多点查找颜色坐标
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            color:起点颜色值,颜色格式为"RRGGBB-DRDGDB|RRGGBB-DRDGDB|…………",颜色排列为RGB格式
            OffsetPos:色点组(格式为"x1|y1|RRGGBB-DRDGDB|RRGGBB-DRDGDB……,……xn|yn|RRGGBB-DRDGDB|RRGGBB-DRDGDB……"
            sim: 相似度,取值范围0.1-1.0
            scantype: 扫描方式,0: 从左上到右下 1: 从中间到四周 2: 从右下到左上
            x: 返回起点颜色值的x坐标
            y: 返回起点颜色值的y坐标
            返回值:返回找到颜色索引,没找到返回-1
            调用例子:|
            local x=-1 y=-1 ret=-1
            x,y,ret=findmulticolor(0,0,2000,2000,"cc805b-020202","9|2|-00ff00|-ff0000,15|2|2dff1c-010101",1.0,0)
            if x~=-1 then
            tap(x,y)
            end
          </example>
        </function>
		<function name="findmulticolorAJ">
          <pram>(x1,y1,x2,y2,color,OffsetPos,sim,scantype)</pram>
          <example>
            函数原型:|findmulticolorAJ(x1,y1,x2,y2,color,OffsetPos,sim,scantype)
            函数说明:|
            根据指定的多点查找颜色坐标,注：暂不支持偏色
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            color:起点颜色值,颜色格式为"RRGGBB-000000|RRGGBB-000000|…………",颜色排列为RGB格式
            OffsetPos:色点组(格式为"x1|y1|RRGGBB-000000|RRGGBB-000000,……xn|yn|RRGGBB-000000|RRGGBB-000000"
            sim: 相似度,取值范围0.1-1.0
            scantype: 扫描方式,0: 从左上到右下 1: 从中间到四周 2: 从右下到左上
            x: 返回起点颜色值的x坐标
            y: 返回起点颜色值的y坐标
            返回值:返回找到颜色索引,没找到返回-1
            调用例子:|
            local x=-1 y=-1 ret=-1
            x,y,ret=findmulticolorAJ(0,0,2000,2000,"cc805b-000000","9|2|-00ff00|-000000,15|2|2dff1c-000000",1.0,0)
            if x~=-1 then
            tap(x,y)
            end
          </example>
        </function>
        <function name="findmulticolorex">
          <pram>(x1,y1,x2,y2,color,OffsetPos,sim,scantype)</pram>
          <example>
            函数原型:|findmulticolorex(x1,y1,x2,y2,color,OffsetPos,sim,scantype)
            函数说明:|
            根据指定的多点查找所有颜色坐标,以"索引,x,y"格式返回所有找到的颜色坐标信息
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            color:起点颜色值,颜色格式为"RRGGBB-DRDGDB|RRGGBB-DRDGDB|…………",颜色排列为RGB格式
            OffsetPos:色点组(格式为"x1|y1|RRGGBB-DRDGDB|RRGGBB-DRDGDB……,……xn|yn|RRGGBB-DRDGDB|RRGGBB-DRDGDB……"
            sim: 相似度,取值范围0.1-1.0
            scantype: 扫描方式,0: 从左上到右下 1: 从中间到四周 2: 从右下到左上
            x: 返回起点颜色值的x坐标
            y: 返回起点颜色值的y坐标            
			返回值:返回的是color参数中所有找到的颜色点坐标格式如下:"id,x,y|id,x,y..|id,x,y"
            调用例子:|
            local ret=findmulticolorex(0,0,2000,2000,"cc805b-020202","9|2|-00ff00|-ff0000,15|2|2dff1c-010101",1.0,0)
            if strlen(ret) > 0 then
            lineprint(ret)
            end
          </example>
        </function>
		<function name="findmulticolorexAJ">
          <pram>(x1,y1,x2,y2,color,OffsetPos,sim,scantype)</pram>
          <example>
            函数原型:|findmulticolorexAJ(x1,y1,x2,y2,color,OffsetPos,sim,scantype)
            函数说明:|
            根据指定的多点查找所有颜色坐标,以"索引,x,y"格式返回所有找到的颜色坐标信息, 注：暂不支持偏色
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            color:起点颜色值,颜色格式为"RRGGBB-000000|RRGGBB-000000|…………",颜色排列为RGB格式
            OffsetPos:色点组(格式为"x1|y1|RRGGBB-000000|RRGGBB-000000,……xn|yn|RRGGBB-000000|RRGGBB-000000"
            sim: 相似度,取值范围0.1-1.0
            scantype: 扫描方式,0: 从左上到右下 1: 从中间到四周 2: 从右下到左上
            x: 返回起点颜色值的x坐标
            y: 返回起点颜色值的y坐标            
			返回值:返回的是color参数中所有找到的颜色点坐标格式如下:"id,x,y|id,x,y..|id,x,y"
            调用例子:|
            local ret=findmulticolorexAJ(0,0,2000,2000,"cc805b-000000","9|2|-00ff00|-000000,15|2|2dff1c-000000",1.0,0)
            if strlen(ret) > 0 then
            lineprint(ret)
            end
          </example>
        </function>
        <function name="screencap">
          <pram>(x1,y1,x2,y2,pic_path)</pram>
          <example>
            函数原型:|screencap(x1,y1,x2,y2,pic_path)
            函数说明:|
            根据指定范围截图
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            pic_path:保存图片路径
            返回值:成功返回真,失败返回假
            调用例子:|
            local ret = screencap(0,0,500,500,"/sdcard/t.bmp")
            if ret == true then
            lineprint("截图成功")
            else
            lineprint("截图失败")
            end
          </example>
        </function>
        <function name="getcolor">
          <pram>(x,y,mode=0)</pram>
          <example>
            函数原型:|getcolor(x,y,mode=0)
            函数说明:|
            获取指定点的颜色值
            x:屏幕绝对坐标x
            y:屏幕绝对坐标y
            mode:整型模式值,0为返回十进制(RGB)颜色值,1为返回十六进制颜色字符串,默认为0
            返回值:函数执行成功返回颜色值,否则返回-1
            调用例子:|
            local color = getcolor(12,50)
            lineprint(color)
          </example>
        </function>
		<function name="getcolornum">
          <pram>(x1,y1,x2,y2,color,sim)</pram>
          <example>
            函数原型:|getcolornum(x1,y1,x2,y2,color,sim)
            函数说明:|
            获取指定范围内指定颜色的数量
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            color:颜色值,可以有多个颜色点
            sim:相似度,0.1-1.0
            返回值:返回获取到的的颜色点的数量
            调用例子:|
            local ret = getcolornum(0,0,500,500,"000000-000000|ff00ff-000000",1.0)
            lineprint(ret)
          </example>
        </function>
        <function name="getcolornumAJ">
          <pram>(x1,y1,x2,y2,color,sim)</pram>
          <example>
            函数原型:|getcolornumAJ(x1,y1,x2,y2,color,sim)
            函数说明:|
            获取指定范围内指定颜色的数量,注：暂不支持偏色
            x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
            color:颜色值,可以有多个颜色点
            sim:相似度,0.1-1.0
            返回值:返回获取到的的颜色点的数量
            调用例子:|
            local ret = getcolornumAJ(0,0,500,500,"000000-000000|ff00ff-000000",1.0)
            lineprint(ret)
          </example>
        </function>
        <function name="cmpcolor">
          <pram>(x,y,color,sim)</pram>
          <example>
            函数原型:|cmpcolor(x,y,color,sim)
            函数说明:|
            比较指定坐标点颜色,返回匹配的色点索引.
            x:x坐标
            y:y坐标
            color:颜色描述,"00ffdd-000000|ddffee-000000"
            sim:相似度,0-1.0之间
            返回值:匹配到了返回当前匹配的索引值, 比如匹配到00ffdd-000000为1, ddffee-000000 为2.两个都未匹配返回-1
            调用例子:|
            local ret = cmpcolor(100,200,"00ffdd-000000|ddffee-000000",1.0)
			if ret ~= -1 then 
            lineprint("找到")
            else
            lineprint("没有找到")
            end
          </example>
        </function>
		 <function name="cmpcolorAJ">
          <pram>(x,y,color,sim)</pram>
          <example>
             函数原型:|cmpcolorAJ(x,y,color,sim)
            函数说明:|
            比较指定坐标点颜色,返回匹配的色点索引.注：暂不支持偏色
            x:x坐标
            y:y坐标
            color:颜色描述,"00ffdd-000000|ddffee-000000"
            sim:相似度,0-1.0之间
            返回值:匹配到了返回当前匹配的索引值, 比如匹配到00ffdd-000000为1, ddffee-000000 为2.两个都未匹配返回-1
            调用例子:|
            local ret = cmpcolorAJ(100,200,"00ffdd-000000|ddffee-000000",1.0)
			if ret ~= -1 then 
            lineprint("找到")
            else
            lineprint("没有找到")
            end
          </example>
        </function>
        <function name="cmpcolorex">
          <pram>(color,sim)</pram>
          <example>
            函数原型:|cmpcolorex(color,sim)
            函数说明:|
            同时比较多个坐标点的颜色 (需要root权限)
			color: 多个坐标点的颜色字符串,例如 "500|500|42322A,780|506|4C3E20-080808|AABBCC"
			sim: 颜色的相似度(取值范围0.1~1.0)
            返回值:匹配所有坐标颜色值返回1,否则返回0
            调用例子:|
			local ret=cmpcolorex("500|500|42322A,780|506|4C3E20-080808|AABBCC",0.8)  
			lineprint(ret)
			-- 输出1
          </example>
        </function>
		<function name="cmpcolorexAJ">
          <pram>(color,sim)</pram>
          <example>
            函数原型:|cmpcolorexAJ(color,sim)
            函数说明:|
            同时比较多个坐标点的颜色 (需要root权限),注：暂不支持偏色
			color: 多个坐标点的颜色字符串,例如 "500|500|42322A,780|506|4C3E20-000000|AABBCC"
			sim: 颜色的相似度(取值范围0.1~1.0)
            返回值:匹配所有坐标颜色值返回1,否则返回0
            调用例子:|
			local ret=cmpcolorexAJ("500|500|42322A,780|506|4C3E20-000000|AABBCC",0.8)  
			lineprint(ret)
			-- 输出1
          </example>
        </function>
        <function name="keepcapture">
          <pram>(type=0)</pram>
          <example>
            函数原型:|keepcapture(type=0)
            函数说明:|
            让图色功能数据进入暂时停止刷新,当遇到releasecapture恢复正常
            type:0、暂停图色屏幕数据刷新,1、暂停识字屏幕数据刷新
            返回值:无
            调用例子:|
            keepcapture()
            local color1=getcolor(200,500)//中间这段图色操作的代码,数据不会刷新
            sleep(2000)
            local color2=getcolor(200,500)//中间这段图色操作的代码,数据不会刷新
            if color1==color2 then
            lineprint("图色数据没有刷新")
            end
            releasecapture()
          </example>
        </function>
        <function name="releasecapture">
          <pram>(type=0)</pram>
          <example>
            函数原型:|releasecapture(type=0)
            函数说明:|
            图色功能数据刷新恢复正常.
            type:0、释放图色屏幕数据刷新,1、释放识字屏幕数据刷新
            返回值:无
            调用例子:|
            keepcapture()
            local color1=getcolor(200,500)//中间这段图色操作的代码,数据不会刷新
            sleep(2000)
            local color2=getcolor(200,500)//中间这段图色操作的代码,数据不会刷新
            if color1==color2 then
            lineprint("图色数据没有刷新")
            end
            releasecapture()
          </example>
        </function>
        <function name="hextorgb">
          <pram>(hex,mode)</pram>
          <example>
            函数原型:|hextorgb(hex,mode)
            函数说明:|16进制颜色值得到R G B值的
            hex:颜色值,由mode参数决定hex类型
            mode:模式，1代表hex参数为十六进制字符串
            返回值:成功返回r,g,b,true,失败返回r,g,b,false
            调用例子:|
            local r,g,b,bool = hextorgb("FFFFFF",1)
			lineprint(r.."-"..g.."-"..b.."-"..tostring(bool))
			--r:255 g:255 b:255  bool:true
          </example>
        </function>
        <function name="rgbtohex">
          <pram>(R,G,B,mode=0)</pram>
          <example>
            函数原型:|rgbtohex(R,G,B,mode=0)
            函数说明:|根据R G B的值获取16进制颜色值,根据mode的值来返回对应的颜色值
            R:r通道颜色值
            G:g通道颜色值
            B:b通道颜色值
            mode:默认模式为0,0、表示返回值为整型数值,1、表示返回值为十六进制字符
            返回值:返回组合完成后的颜色值,失败返回null
            调用例子:|
            local color=rgbtohex(50,100,150)
          </example>
        </function>
      </namespace>
      <namespace name="数学">
	  <function name="rnd">
          <pram>(start,end)</pram>
          <example>
            函数原型:|rnd(start,end)
            函数说明:|
            获得指定范围内的一个随机数
            start:随机数最小数
            end:随机数最大数
            返回值:返回[start,end]之间的一个随机数
            调用例子:|
            ret=rnd(1,100)
            lineprint(ret)
          </example>
        </function>
        <function name="msqrt">
          <pram>(dword)</pram>
          <example>
            函数原型:|msqrt(dword)
            函数说明:|
            数学开方
            dword:要开方的数
            返回值:开方后的值
            调用例子:|
            local ret=msqrt(100)
            lineprint(ret)
          </example>
        </function>
        <function name="mabs">
          <pram>(iword)</pram>
          <example>
            函数原型:|mabs(iword)
            函数说明:|
            求绝对值
            iword:要求绝对值的数
            返回值:绝对值
            调用例子:|
            local ret=mabs(-10)
            lineprint(ret)
          </example>
        </function>
        <function name="masin">
          <pram>(dword)</pram>
          <example>
            函数原型:|msin(dword)
            函数说明:|
            求反正弦
            dword:要求反正弦的数
            返回值:求反正弦后的弧度值
            调用例子:|
            local ret=masin(0.5)
            lineprint(ret)
          </example>
        </function>
        <function name="macos">
          <pram>(dword)</pram>
          <example>
            函数原型:|mcos(dword)
            函数说明:|
            求反余弦
            dword:要求反余弦的数
            返回值:求反余弦后的弧度值
            调用例子:|
            local ret=macos(0.5)
            lineprint(ret)
          </example>
        </function>
        <function name="matan">
          <pram>(dword)</pram>
          <example>
            函数原型:|mtan(dword)
            函数说明:|
            求反正切后的弧度值
            dword:要求反正切的数
            返回值:求反正切后的弧度值
            调用例子:|
            local ret=matan(1)
            lineprint(ret)
          </example>
        </function>
        <function name="msin">
          <pram>(dword)</pram>
          <example>
            函数原型:|masin(dword)
            函数说明:|
            求正弦值
            dword:传入的弧度值
            返回值:正弦值
            调用例子:|
            local ret=msin(0.5235987755983)//弧度=度数*π/180
            lineprint(ret)
          </example>
        </function>
        <function name="mcos">
          <pram>(dword)</pram>
          <example>
            函数原型:|macos(dword)
            函数说明:|
            求余弦值
            dword:传入的弧度值
            返回值:余弦值
            调用例子:|
            local ret=mcos(0.5235987755983)//弧度=度数*π/180
            lineprint(ret)
          </example>
        </function>
        <function name="mtan">
          <pram>(dword)</pram>
          <example>
            函数原型:|matan(dword)
            函数说明:|
            求正切值
            dword:传入的弧度值
            返回值:正切值
            调用例子:|
            local ret=mtan(0.5235987755983)//弧度=度数*π/180
            lineprint(ret)
          </example>
        </function>
        <function name="matan2">
          <pram>(y,x)</pram>
          <example>
            函数原型:|matan2(y,x)
            函数说明:|
            根据x,y坐标求反正切后的弧度值
			y:y坐标 
			x:x坐标
            返回值:反正切后的弧度值
            调用例子:|
            local ret=matan2(20,50) 
            lineprint(ret)
          </example>
        </function>
        <function name="mpow">
          <pram>(x,y)</pram>
          <example>
            函数原型:|mpow(x,y)
            函数说明:|
            求一个数的多次幂
            x:基数
            y:幂数
            返回值:x的y次幂
            调用例子:|
            local ret=mpow(2,4)
            lineprint(ret)
          </example>
        </function>
        <function name="mlg">
          <pram>(x)</pram>
          <example>
            函数原型:|mlg(x)
            函数说明:|
            求以10为底的对数值 
            x:自然数
            返回值:返回以10为底的对数值
            调用例子:|
            local ret=mlg(2050)
            lineprint(ret)
          </example>
        </function>
        <function name="mln">
          <pram>(x)</pram>
          <example>
            函数原型:|mln(x)
            函数说明:|
            求以e为底的对数值 
            x:自然数
            返回值:返回以e为底的对数值
            调用例子:|
            local ret=mln(2050)
            lineprint(ret)
          </example>
        </function>
      </namespace>
      <namespace name="时间">
        <function name="timenow">
          <pram>(无)</pram>
          <example>
            函数原型:|timenow()
            函数说明:|
            获取当前系统时间
            返回值:函数执行成功返回获取到的当前系统时间,否则返回null
            调用例子:|
            lineprint(timenow())
          </example>
        </function>
        <function name="timeadd">
          <pram>(type,value,time1)</pram>
          <example>
            函数原型:|timeadd(type,value,time1)
            函数说明:|
            获取已添加指定时间间隔的日期
            type:时间间隔类型;y-年;m-月;d-日;h-时;n-分;s-秒
            value:要添加的时间间隔的值 数值为负数:表示日期往后,数值为正:表示日期往前
            time1:表示日期(注:日期格式2014/8/8 12:12:12)
            返回值:函数执行成功返回指定的日期，否则返回null
            调用例子:|
            lineprint(timeadd("d",120,"2012/12/1"))
            lineprint(timeadd("d",-99,"2012/12/1 11:20:30"))
          </example>
        </function>
        <function name="timediff">
          <pram>(type,time1,time2)</pram>
          <example>
            函数原型:|timediff(type,time1,time2)
            函数说明:|
            返回两个日期之间的时间间隔
            type:时间间隔类型;y-年;m-月;d-日;h-时;n-分;s-秒;w-星期
            time1:第一个日期(注:日期格式2014/8/8 12:12:12)
            time2:第二个日期(注:日期格式2014/8/8 12:12:12)
            返回值:函数执行成功返回两个时间相隔的间隔，否则返回null
            调用例子:|
            lineprint(timediff("m","2012/12/1","2013/12/1"))
            lineprint(timediff("h","2012/12/1 11:20:30","2012/12/3 11:20:30"))
          </example>
        </function>
        <function name="timeyear">
          <pram>(time)</pram>
          <example>
            函数原型:|timeyear(time)
            函数说明:|
            返回日期的年
            time:时间(注:日期格式2014/8/8 12:12:12)
            返回值:函数执行成功返回日期的年,否则返回-1
            调用例子:|
            local at=timenow()
            lineprint(timeyear(at))
          </example>
        </function>
        <function name="timemonth">
          <pram>(time)</pram>
          <example>
            函数原型:|timemonth(time)
            函数说明:|
            返回日期的月
            time:时间(注:日期格式2014/8/8 12:12:12)
            返回值:函数执行成功返回日期的月,否则返回-1
            调用例子:|
            local at=timenow()
            lineprint(timemonth(at))
          </example>
        </function>
        <function name="timeday">
          <pram>(time)</pram>
          <example>
            函数原型:|timeday(time)
            函数说明:|
            返回日期的日
            time:时间(注:日期格式2014/8/8 12:12:12)
            返回值:函数执行成功返回日期的日,否则返回-1
            调用例子:|
            local at=timenow()
            lineprint(timeday(at))
          </example>
        </function>
        <function name="timehour">
          <pram>(time)</pram>
          <example>
            函数原型:|timehour(time)
            函数说明:|
            返回日期的小时
            time:时间(注:日期格式2014/8/8 12:12:12)
            返回值: 函数执行成功返回日期的小时,否则返回-1
            调用例子:|
            local at=timenow()
            lineprint(timehour(at))
          </example>
        </function>
        <function name="timeminute">
          <pram>(time)</pram>
          <example>
            函数原型:|timeminute(time)
            函数说明:|
            返回日期的分钟
            time:时间(注:日期格式2014/8/8 12:12:12)
            返回值:函数执行成功返回日期的分钟,否则返回-1
            调用例子:|
            local at=timenow()
            lineprint(timeminute(at))
          </example>
        </function>
        <function name="timesecond">
          <pram>(time)</pram>
          <example>
            函数原型:|timesecond(time)
            函数说明:|
            返回日期的秒
            time:时间(注:日期格式2014/8/8 12:12:12)
            返回值:函数执行成功返回日期的秒,否则返回-1
            调用例子:|
            local at=timenow()
            lineprint(timesecond(at))
          </example>
        </function>
        <function name="timeweek">
          <pram>(time)</pram>
          <example>
            函数原型:|timeweek(time)
            函数说明:|
            返回星期几,0~6 表示 周日~周六
            time:时间(注:日期格式2014/8/8 12:12:12)
            返回值:函数执行成功返回大于等于0,否则返回-1
            调用例子:|
            local at=timenow()
            lineprint(timeweek(at))
          </example>
        </function>
      </namespace>
      <namespace name="类型">
        <function name="tostring">
          <pram>(str)</pram>
          <example>
            函数原型:|tostring(str)
            函数说明:|
            将布尔类型和数值类型转换为字符串类型
            str:要转逻辑型的数据类型
            返回值:函数执行成功返回转换后的数据
            调用例子:|
            local bVar = false
			lineprint(tostring(bVar)); -- 输出"false"
            lineprint(tostring(10)); --输出"10"
			lineprint(tostring(10.03)); --输出"10.03"
          </example>
        </function>
        <function name="tonumber">
          <pram>(str,base=0)</pram>
          <example>
            函数原型:|tonumber(str)
            函数说明:|
            将非数字的原始值转换成数字
            str: 要转整型的字符串
            返回值:函数执行成功返回转换后的数据
            调用例子:|
			local num = tonumber("10");    -- 返回十进制数10
			local num = tonumber("AF",16); -- 返回十六进制数175 
			local num = tonumber("0xA");   -- 返回10
			local num = tonumber("56.9");  -- 返回56.9
			local num = tonumber("0102");  -- 返回102
			local num = tonumber("123456red");     -- 返回nil
			local num = tonumber("red");           -- 返回nil
			local num = tonumber("true");          -- 返回nil
			local num = tonumber({x  =10, y = 20});-- 返回nil
          </example>
        </function>
      </namespace>	  
      <namespace name="系统">
		<function name="gettopactivity">
          <pram>()</pram>
          <example>
            函数原型:|gettopactivity()
            函数说明:|
            获取当前窗口的activity名称
            参数:无
            返回值:返回顶层activity名称
            调用例子:|
            lineprint(gettopactivity())
          </example>
        </function>
		<function name="cmd">
          <pram>(cmdstr)</pram>
          <example>
            函数原型:|cmd(cmdstr)
            函数说明:|
            执行CMD命令
            cmdstr:cmd命令,此处执行与使用adb shell登陆手机执行命令是一样的,如果需要root权限
            执行且在手机已经root的情况下,请在命令前增加su root 例如 "su root ls /sdcard/"或 "su -c 'ls /sdcard/",更多的执行命令,
            大家可以百度android adb常用命令
            返回值:返回命令执行的结果,以字符串形式返回(不建议执行会持续返回数据的命令,例如ping,可能会造成程序卡死)
            调用例子:|
            local t = cmd("ls /sdcard/") 
            lineprint(t)
          </example>
        </function>
		<function name="cmdnew">
          <pram>(cmdstr)</pram>
          <example>
            函数原型:|cmdnew(cmdstr)
            函数说明:|
            执行CMD命令
            cmdstr:shell命令,此处执行与使用adb shell登陆手机执行命令是一样的,如果需要root权限
            执行且在手机已经root的情况下,请在命令前增加su root 例如 "su root ls /sdcard/"或 "su -c 'ls /sdcard/",更多的执行命令,
            大家可以百度android adb常用命令
            返回值:返回命令执行的结果,以字符串形式返回(不建议执行会持续返回数据的命令,例如ping,可能会造成程序卡死)
            调用例子:|
            local t = cmdnew("ls /sdcard/") 
            lineprint(t)
          </example>
        </function>
		  <function name="getimei">
			  <pram>()</pram>
			  <example>
				函数原型:|getimei()
				函数说明:|
				获取设备的唯一标识(使用过程中注意判断标识的真实性,此标识是有机率可以被修改的)
				返回值:返回设备标识字符串
				调用例子:|
				local imei = getimei()
				lineprint(imei)
			  </example>
			</function>
		  <function name="isroot">
			  <pram></pram>
			  <example>
				函数原型:|isroot()
				函数说明:|
				判断系统是否已经root
				参数:无
				返回值:返回真,已经root,返回假,则没有root
				调用例子:|
				lineprint(isroot())
			  </example>
			</function>
		   <function name="setclipboard">
			  <pram>(content)</pram>
			  <example>
				函数原型:|setclipboard(content)
				函数说明:|
				向系统剪切板设置指定文本内容
				content:文本内容
				返回值:无
				调用例子:|
				setclipboard("向剪切板设置文本")
			  </example>
			</function>
			<function name="getclipboard">
			  <pram>()</pram>
			  <example>
				函数原型:|getclipboard()
				函数说明:|
				获取系统剪切板文本内容
				参数:无
				返回值:剪切板中的内容
				调用例子:|
				lineprint(getclipboard())
			  </example>
			</function>
		  <function name="gettopapppackagenameex">
			  <pram>(字符串)</pram>
			  <example>
				函数原型:|gettopapppackagenameex()
				函数说明:|
				得到顶层APP包名
				返回值:函数包名字符串
				调用例子:|
				lineprint(gettopapppackagenameex())
				-- 输出 dcytest.t[行号:2]com.android.launcher3
			  </example>
			</function>
			<function name="getscreendpi">
			  <pram>(字符串)</pram>
			  <example>
				函数原型:|getscreendpi()
				函数说明:|
				得到屏幕DPI
				返回值:DPI
				调用例子:|
				lineprint(getscreendpi())
				-- 输出 dcytest.t[行号:2]320
			  </example>
			</function>
		  <function name="installapk">
			  <pram>(字符串)</pram>
			  <example>
				函数原型:|installapk(字符串)
				函数说明:|
				静默安装一个应用
				字符串:应用路径
				返回值:无
				调用例子:|
				installapk("/sdcard/xxx.apk")
			  </example>
			</function>
			<function name="vibrate">
			  <pram>(time)</pram>
			  <example>
				函数原型:|vibrate(time)
				函数说明:|
				使手机震动
				time:时间
				返回值:返回真,表示支持震动功能,返回假,表示设备不支持震动功能
				调用例子:|
				vibrate(1000)//1s
			  </example>
			</function>
			<function name="keepscreen">
			  <pram>(iskeep)</pram>
			  <example>
				函数原型:|keepscreen(iskeep)
				函数说明:|
				控制手机屏幕常亮
				iskeep:是否常亮配置选项.1:表示常亮；0:表示不常亮.
				返回值:返回函数执行的结果,执行成功返回true,执行失败返回false.
				调用例子:|
				ret = keepscreen(1)
				lineprint(tostring(ret))
				-- 输出 dcytest.t[行号:3]true
			  </example>
			</function>
			<function name="getsdcardpath">
			  <pram>(无)</pram>
			  <example>
				函数原型:|getsdcardpath()
				函数说明:|
				获取sdcard卡绝对路径
				参数:无
				返回值:返回sdcard卡的绝对路径.
				调用例子:|
				ret=getsdcardpath()
				lineprint(ret)
				-- 输出 dcytest.t[行号:3]/sdcard
			  </example>
			</function>
			<function name="sysgetscreen">
			  <pram>(w,h)</pram>
			  <example>
				函数原型:|sysgetscreen(w,h)
				函数说明:|
				获取手机屏幕的宽高
				w:返回的屏幕宽度
				h:返回的屏幕高度
				返回值:获取成功返回真,失败返回假
				调用例子:|
				    local w=0 h=0 ret=0
					ret,w, h = sysgetscreen()
					lineprint(w..","..h)
					-- 输出 dcytest.t[行号:4]720,1280
			  </example>
			</function>
			<function name="sysgetversion">
			  <pram>(无)</pram>
			  <example>
				函数原型:|sysgetversion()
				函数说明:|
				取得android版本信息
				返回值:返回android详细版本号
				调用例子:|
				local ret=sysgetversion()
				lineprint(ret)
				-- 输出 dcytest.t[行号:3]5.1.1
			  </example>
			</function>
			<function name="syspoweroff">
			  <pram>(无)</pram>
			  <example>
				函数原型:|syspoweroff()
				函数说明:|
				关闭手机
				返回值:返回真,以实际效果为准
				调用例子:|
				local ret=syspoweroff()
				-- 模拟器会重启
			  </example>
			</function>
			<function name="sysstartapp">
			  <pram>(pkgName)</pram>
			  <example>
				函数原型:|sysstartapp(pkgName)
				函数说明:|
				通过包名启动相应的程序
				pkgName:要启动的应用的包名
				返回值:成功返回1,失败返回0
				调用例子:|
				local ret = sysstartapp("com.android.camera")
				lineprint(tostring(ret))
				-- 输出 dcytest.t[行号:3]true
			  </example>
			</function>
			<function name="syskillapp">
			  <pram>(pkgName)</pram>
			  <example>
				函数原型:|syskillapp(pkgName)
				函数说明:|
				通过包名结束指定进程
				pkgName:要启动的应用的包名
				返回值:成功返回1,失败返回0
				调用例子:|
				local ret=syskillapp("com.android.camera")
				lineprint(tostring(ret))
			  </example>
			</function>
			<function name="sysisrunning">
			  <pram>(pkgName)</pram>
			  <example>
				函数原型:|sysisrunning(pkgName)
				函数说明:|
				找查手机指定应用是否在运行
				pkgName:要判断是否在运行的包名
				返回值:程序正在运行返回1,否则返回0
				调用例子:|
				local ret=sysisrunning("com.android.camera")
				lineprint(tostring(ret))
				-- 输出 dcytest.t[行号:3]false
			  </example>
			</function>
			<function name="sysfindapp">
			  <pram>(pkgName)</pram>
			  <example>
				函数原型:|sysfindapp(pkgName)
				函数说明:|
				找查手机里面是否安装相应的应用程序
				pkgName:要查找的包名
				返回值:返回查找的结果,查找到返回1,否则返回0
				调用例子:|
				local ret=sysfindapp("com.ais.app")
				lineprint(tostring(ret))
				-- 输出 dcytest.t[行号:3]true
			  </example>
			</function>
      </namespace>
      <namespace name="文字识别">
        <function name="setdict">
          <pram>(path,index)</pram>
          <example>
            函数原型:|setdict(path,index)
            函数说明:|
            设置字库,最多设置20个(0-19),必须设置了字库才能识别文字(文件编码必须为utf-8,否则中文会出现乱码)
            file:字库文件名
            index:字库的序号,取值为0-19,目前最多支持20个字库
            返回值:成功返回1 ,失败返回0
            调用例子:|
            ret = setdict("/sdcard/tc_dict.txt",0)
			lineprint(ret)
			-- 输出 dcytest.t[行号:3]0
          </example>
        </function>
        <function name="usedict">
          <pram>(index)</pram>
          <example>
            函数原型:|usedict(index)
            函数说明:|
            切换字库,切换未设置字库会出现错误
            index:字库的序号,取值为0-19,目前最多支持20个字库
            返回值:成功返回 1,失败返回 0
            调用例子:|
            ret = usedict(1)
			lineprint(ret)
			-- 输出 dcytest.t[行号:3]1
          </example>
        </function>
        <function name="deletedict">
          <pram>(index)</pram>
          <example>
            函数原型:|deletedict(index)
            函数说明:|从内存中删除设置过的字库
            index:字库的序号,取值为0-19,目前最多支持20个字库
            返回值:成功返回真,失败返回假
            调用例子:|
            deletedict(1)
          </example>
        </function>
        <function name="ocr">
          <pram>(x1,y1,x2,y2,color_format,sim)</pram>
          <example>
            函数原型:|ocr(x1,y1,x2,y2,color_format,sim)
            函数说明:|
            根据字库识别字,返回识别到的文字
            x1:区域的左上X坐标
            y1:区域的左上Y坐标
            x2:区域的右下X坐标
            y2:区域的右下Y坐标
            color_format:颜色格式串"ffffff-202020|000000-000000"
            sim: 颜色的相似度(取值范围0.1~1.0)
            返回值:返回识别到的字符串,字符长度不会超过1024
            调用例子:|
            setdict("/sdcard/tc_dict.txt",0)
            local ret = ocr(0,0,200,100,"f3f3f3-121212",1.0)
            lineprint(ret)
          </example>
        </function>
        <function name="ocrex">
          <pram>(x1,y1,x2,y2,color_format,sim)</pram>
          <example>
            函数原型:|ocrex(x1,y1,x2,y2,color_format,sim)
            函数说明:|
            根据字库识别字,返回识别到的文字以及每个字的坐标
            x1:区域的左上X坐标
            y1:区域的左上Y坐标
            x2:区域的右下X坐标
            y2:区域的右下Y坐标
            color_format:颜色格式串"ffffff-202020|000000-000000"
            sim: 颜色的相似度(取值范围0.1~1.0)
            返回值:返回识别到的字符串格式如"识别到的信息,x0,y0|…|识别到的信息,xn,yn",字符长度不会超过1024
            调用例子:|
            setdict("/sdcard/tc_dict.txt",0)
			usedict(0)
            local ret = ocrex(0,0,200,100,"f3f3f3-121212",1.0)
            lineprint(ret)
          </example>
        </function>
        <function name="findtext">
          <pram>(x1,y1,x2,y2,string,color_format,sim)</pram>
          <example>
            函数原型:|findtext(x1,y1,x2,y2,string,color_format,sim)
            函数说明:|
            在屏幕范围(x1,y1,x2,y2)内,查找string(可以是任意个字符串的组合),并返回符合color_format的坐标位置
            x1:区域的左上X坐标
            y1:区域的左上Y坐标
            x2:区域的右下X坐标
            y2:区域的右下Y坐标
            string:待查找的字符串,可以是字符串组合,比如"长安|洛阳|大雁塔",中间用"|"来分割字符串
            color_format:颜色格式串,"f3f3f3-404040|00ff00-ddff00"
            sim:相似度,取值范围0.1-1.0
            x:返回X坐标没找到返回-1
            y:返回Y坐标没找到返回-1
            返回值:返回字符串的索引, 没找到返回-1, 比如"长安|洛阳",若找到长安,则返回0
            调用例子:|
            local x=-1 y=-1 ret=-1
            setdict("/sdcard/tc_dict.txt",0)
			usedict(0)
            x,y,ret = findtext(0,0,200,100,"长安|洛阳","f3f3f3-121212",1.0)
            lineprint(x..","..y)
            tap(x,y)
          </example>
        </function>
        <function name="findtexts">
          <pram>(x1,y1,x2,y2,string,color_format,sim)</pram>
          <example>
            函数原型:|findtexts(x1,y1,x2,y2,string,color_format,sim)
            函数说明:|
            在屏幕范围(x1,y1,x2,y2)内,查找string(可以是任意个字符串的组合),并返回符合color_format的坐标位置
            x1:区域的左上X坐标
            y1:区域的左上Y坐标
            x2:区域的右下X坐标
            y2:区域的右下Y坐标
            string:待查找的字符串,可以是字符串组合,比如"长安|洛阳|大雁塔",中间用"|"来分割字符串
            color_format:颜色格式串,"f3f3f3-404040|00ff00-ddff00"
            sim:相似度,取值范围0.1-1.0
            X:返回X坐标没找到返回-1
            Y:返回Y坐标没找到返回-1
            返回值:返回找到的字符串. 没找到的话返回长度为0的字符串.
            调用例子:|
            local x=-1 y=-1 ret=-1
            setdict("/sdcard/tc_dict.txt",0)
            x,y,ret = findtexts(0,0,200,100,"长安|洛阳","f3f3f3-404040",1.0)
            lineprint(x..","..y)
            tap(x,y)
          </example>
        </function>
        <function name="findtextex">
          <pram>(x1,y1,x2,y2,string,color_format,sim)</pram>
          <example>
            函数原型:|findtextex(x1,y1,x2,y2,string,color_format,sim)
            函数说明:|
            在屏幕范围(x1,y1,x2,y2)内,查找string(可以是任意个字符串的组合),并返回符合color_format的坐标位置
            x1:区域的左上X坐标
            y1:区域的左上Y坐标
            x2:区域的右下X坐标
            y2:区域的右下Y坐标
            string:待查找的字符串,可以是字符串组合,比如"长安|洛阳|大雁塔",中间用"|"来分割字符串
            color_format:颜色格式串,"f3f3f3-404040|00ff00-ddff00"
            sim:相似度,取值范围0.1-1.0
            返回值:返回所有找到的坐标集合,格式如下: "index,x0,y0| index,x1,y1|......| index,xn,yn",返回字符长度不会超过1024
            调用例子:|
			local x=-1 y=-1 ret=-1
            setdict("/sdcard/tc_dict.txt",1)
			usedict(1)
            x,y,ret = findtextex(0,0,200,100,"长安|洛阳","f3f3f3-404040",1.0)
            lineprint(ret)
          </example>
        </function>
        <function name="findtextexs">
          <pram>(x1,y1,x2,y2,string,color_format,sim)</pram>
          <example>
            函数原型:|findtextexs(x1,y1,x2,y2,string,color_format,sim)
            函数说明:|
            在屏幕范围(x1,y1,x2,y2)内,查找string(可以是任意个字符串的组合),并返回符合color_format的坐标位置
            x1:区域的左上X坐标
            y1:区域的左上Y坐标
            x2:区域的右下X坐标
            y2:区域的右下Y坐标
            string:待查找的字符串,可以是字符串组合,比如"长安|洛阳|大雁塔",中间用"|"来分割字符串
            color_format:颜色格式串,"f3f3f3-404040|00ff00-ddff00"
            sim:相似度,取值范围0.1-1.0
            返回值:返回所有找到的坐标集合,格式如下: "str,x0,y0| str,x1,y1|......| str,xn,yn",返回字符长度不会超过1024
            调用例子:|
			local x=-1 y=-1 ret=-1
            setdict("/sdcard/tc_dict.txt",2)
			usedict(2)
            x,y,ret = findtextexs(0,0,200,100,"长安|洛阳","f3f3f3-404040",1.0)
            lineprint(ret)
          </example>
        </function>
        <function name="findtextfast">
          <pram>(x1,y1,x2,y2,string,color_format,sim)</pram>
          <example>
            函数原型:|findtextfast(x1,y1,x2,y2,string,color_format,sim)
            函数说明:|
            在屏幕范围(x1,y1,x2,y2)内,查找string(可以是任意个字符串的组合),并返回符合color_format的坐标位置,速度比findtext快
            x1:区域的左上X坐标
            y1:区域的左上Y坐标
            x2:区域的右下X坐标
            y2:区域的右下Y坐标
            string:待查找的字符串,可以是字符串组合,比如"长安|洛阳|大雁塔",中间用"|"来分割字符串
            color_format:颜色格式串,"f3f3f3-404040|00ff00-ddff00"
            sim:相似度,取值范围0.1-1.0
            x:返回X坐标没找到返回-1
            y:返回Y坐标没找到返回-1
            返回值:返回字符串的索引, 没找到返回-1, 比如"长安|洛阳",若找到长安,则返回0
            调用例子:|
            local x=-1 y=-1 ret=-1
            setdict("/sdcard/tc_dict.txt",0)
			usedict(0)
            x,y,ret = findtextfast(0,0,200,100,"长安|洛阳","f3f3f3-404040",1.0)
            lineprint(ret)
            tap(x,y)
          </example>
        </function>
        <function name="findtextfasts">
          <pram>(x1,y1,x2,y2,string,color_format,sim,intx,inty)</pram>
          <example>
            函数原型:|findtextfasts(x1,y1,x2,y2,string,color_format,sim)
            函数说明:|
            在屏幕范围(x1,y1,x2,y2)内,查找string(可以是任意个字符串的组合),并返回符合color_format的坐标位置,速度比findtext快
            x1:区域的左上X坐标
            y1:区域的左上Y坐标
            x2:区域的右下X坐标
            y2:区域的右下Y坐标
            string:待查找的字符串,可以是字符串组合,比如"长安|洛阳|大雁塔",中间用"|"来分割字符串
            color_format:颜色格式串,"f3f3f3-404040|00ff00-ddff00"
            sim:相似度,取值范围0.1-1.0
            返回x:返回X坐标没找到返回-1
            intY:返回Y坐标没找到返回-1
            返回值:返回找到的字符串. 没找到的话返回长度为0的字符串.
            调用例子:|
            local x=-1 y=-1 ret=-1
            setdict("/sdcard/tc_dict.txt",0)
			usedict(0)
            x,y,ret = findtextfasts(0,0,200,100,"长安|洛阳","f3f3f3-404040",1.0)
            lineprint(ret)
            tap(x,y)
          </example>
        </function>
        <function name="findtextfastex">
          <pram>(x1,y1,x2,y2,string,color_format,sim)</pram>
          <example>
            函数原型:|findtextfastex(x1,y1,x2,y2,string,color_format,sim)
            函数说明:|
            在屏幕范围(x1,y1,x2,y2)内,查找string(可以是任意个字符串的组合),并返回符合color_format的坐标位置
            x1:区域的左上X坐标
            y1:区域的左上Y坐标
            x2:区域的右下X坐标
            y2:区域的右下Y坐标
            string:待查找的字符串,可以是字符串组合,比如"长安|洛阳|大雁塔",中间用"|"来分割字符串
            color_format:颜色格式串,"f3f3f3-404040|00ff00-ddff00"
            sim:相似度,取值范围0.1-1.0
            返回值:返回所有找到的坐标集合,格式如下: "index,x0,y0| index,x1,y1|......| index,xn,yn",返回字符长度不会超过1024
            调用例子:|
			local x=-1 y=-1 ret=-1
            setdict("/sdcard/tc_dict.txt",0)
			usedict(0)
            x,y,ret = findtextfastex(0,0,200,100,"长安|洛阳","f3f3f3-404040",1.0)
            lineprint(ret)
          </example>
        </function>
        <function name="findtextfastexs">
          <pram>(x1,y1,x2,y2,string,color_format,sim)</pram>
          <example>
            函数原型:|findtextfastexs(x1,y1,x2,y2,string,color_format,sim)
            函数说明:|
            在屏幕范围(x1,y1,x2,y2)内,查找string(可以是任意个字符串的组合),并返回符合color_format的坐标位置
            x1:区域的左上X坐标
            y1:区域的左上Y坐标
            x2:区域的右下X坐标
            y2:区域的右下Y坐标
            string:待查找的字符串,可以是字符串组合,比如"长安|洛阳|大雁塔",中间用"|"来分割字符串
            color_format:颜色格式串,"f3f3f3-404040|00ff00-ddff00"
            sim:相似度,取值范围0.1-1.0
            返回值:返回所有找到的坐标集合,格式如下: "str,x0,y0| str,x1,y1|......| str,xn,yn",返回字符长度不会超过1024
            调用例子:|
			local x=-1 y=-1 ret=-1
            setdict("/sdcard/tc_dict.txt",0)
			usedict(0)
            x,y,ret = findtextfastexs(0,0,200,100,"长安|洛阳","f3f3f3-404040",1.0)
            lineprint(ret)
          </example>
        </function>
      </namespace>
      <namespace name="数组">
        <function name="#">
          <pram>(arrayval)</pram>
          <example>
            函数原型:|#array
            函数说明:|
            获取数组长度,不是数组变量返回nil
            array:要操作数组
            返回值:返回数组元素个数
            调用例子:|
            local arr = {1,2,3,4,5,6}
            local ar_len = #arr
			lineprint(ar_len)
            --结果: 6
          </example>
        </function>
        <function name="table.insert">
          <pram>(array,pos,val)</pram>
          <example>
            函数原型:|table.insert(array,pos,val) 
            函数说明:|
            向数组中指定位置插入一个值
            array:要操作数组
            pos:数组位置从1开始
            val:向数组中插入的值
            调用例子:|
            local arr = {}
            table.insert(arr,1,"指端精灵")
			table.insert(arr,2,"No1")
			lineprint(arr[1])
			lineprint(arr[2])
			-- 输出 dcytest.t[行号:5]指端精灵
			-- dcytest.t[行号:6]No1
          </example>
        </function>
        <function name=" table.remove">
          <pram>(array,val)</pram>
          <example>
            函数原型:| table.remove(array,val)
            函数说明:|
            从数组指定位置移除一个数据
            array:要操作数组
            val:要移除的值
            调用例子:|
            local arr = {1,2,"abc",3,"你好",3,6} 
            table.remove(arr,5)
			for i=1,#arr do
				lineprint(arr[i])
			end
            -- 输出: 1,2,"abc",3,3,6
          </example>
        </function>
      </namespace>
      
      
      
    </dll>
    <dll name="控件列表">
		<namespace name="全局">
			<function name="controlsetvisible">
			  <pram>(name,bool)</pram>
			  <example>
				函数原型:|controlsetvisible(name,bool)
				函数说明:|设置控件显示隐藏,只对界面中的id有效
				name:指定的控件ID,(布局/多选框/下拉框/标签/输入框)
				bool:true:显示/false:隐藏
				返回值:无
				调用例子:|
				--图片框无法隐藏,但是可以将图片框放在布局中,将布局隐藏即可
				controlsetvisible("label1",false)	--隐藏标签
			  </example>
			</function>
			
		  </namespace>
		<namespace name="按钮">
			<function name="buttonsettext">
			  <pram>(name,text)</pram>
			  <example>
				函数原型:|buttonsettext(name,text)
				函数说明:|设置按钮文本
				name:指定的按钮ID
				text:要设置的文本内容
				返回值:无
				调用例子:|
				buttonsettext("button0","AIS指端精灵")
			  </example>
			</function>
			<function name="buttongettext">
			  <pram>(name)</pram>
			  <example>
				函数原型:|buttongettext(name)
				函数说明:|得到按钮文本
				name:指定的按钮ID
				返回值:执行成功则返回按钮文本内容,失败返回空
				调用例子:|
				var content = buttongettext("button0")
			  </example>
			</function>
		  </namespace>
		<namespace name="Tab页">
			<function name="Tab页">
			  <pram>(name)</pram>
			  <example>
				函数原型:| &ltTAB页 标题="内容" /TAB页&gt
				函数说明:|在界面中设计TAB页，包含布局
				返回值:无
				调用例子:|
				&ltTAB页
					标题="通用设置"&gt  
					&lt布局
						备注="垂直布局 或 水平布局"
						Id="Layout100"
						类型="垂直布局"
						可见="true"
						边距="0|0|0|0"
						宽度="-1"&gt    
					&lt/布局&gt
				&lt/TAB页&gt		
			  </example>
			</function>
		</namespace>
		<namespace name="布局">
        <function name="布局">
          <pram>(name)</pram>
          <example>
            函数原型:|&lt布局 备注="垂直布局 或 水平布局" Id="Layout1" 类型="垂直布局" 可见="true"&gt content &lt/布局&gt
            函数说明:|在界面中设计布局
            Id:指定的布局id，不同布局id不能重复
            content:其它子控件内容
            调用例子:|
			&lt布局
				备注="垂直布局 或 水平布局"
				Id="Layout1"
				类型="垂直布局"
				可见="true"
				&gt
                &lt标签
                    Id="Label1"
                    标题="本辅助永久免费 "
                    字体大小="12"
                    高度="20"
                    宽度="-2"
                    可见="true"
                    边距="0|0|0|0"
                    &gt
                &lt/标签&gt 				
			&lt/布局&gt
          </example>
        </function>
      </namespace>
      <namespace name="图片框">
        <function name="图片框">
          <pram>(name)</pram>
          <example>
            函数原型:|&lt图片框 Id="Image1" 标题="图片框" 路径="main.png" 可见="true" 高度="-2" 宽度="-2"&gt &lt/图片框&gt
            函数说明:|界面上显示指定图片
            Id:图片控件id必须唯一
            路径:图片所在路径(可以是绝对路径,也可以是RC路径)
			高度:-1充满父布局，-2自适应，固定数值自己填
            宽度:-1充满父布局，-2自适应，固定数值自己填
            调用例子:|
                &lt图片框
                    Id="Image1"
                    标题="图片框"
                    边距="0|0|0|0"
                    路径="main.png"
                    可见="true"
                    高度="50"
                    宽度="50"
                    边距="0|0|0|0"&gt
                &lt/图片框&gt
          </example>
        </function>
      </namespace>
      <namespace name="标签">
        <function name="标签">
          <pram>(name)</pram>
          <example>
            函数原型:|&lt标签 Id="Label1" 标题="标签" 字体大小="12" 高度="-2" 宽度="-2" 可见="true"&gt &lt/标签&gt
            函数说明:|设置界面控件说明
            Id:图片控件id必须唯一
			标题:设置说明文字
			高度:-1充满父布局，-2自适应，固定数值自己填
            宽度:-1充满父布局，-2自适应，固定数值自己填
            调用例子:|
                &lt标签
                    Id="Label1"
                    标题="本辅助永久免费 "
                    字体大小="12"
                    高度="20"
                    宽度="-2"
                    可见="true"
                    边距="0|0|0|0"&gt
                &lt/标签&gt
          </example>
        </function>
		 <function name="staticgettext">
          <pram>(名称)</pram>
          <example>
            函数原型:|staticgettext(name)
            函数说明:|获取标签内容
            name:指定标签ID
            返回值:执行成功返回标签内容,失败则返回空
            调用例子:|
            local value = staticgettext("Label1")
			lineprint(value)
          </example>
        </function>	
		<function name="staticsettext">
          <pram>(name,text)</pram>
          <example>
            函数原型:|staticsettext(name,text)
            函数说明:|设置标签文本内容
            name:指定的标签ID
            text:设置标签的内容
            返回值:
            调用例子:|
            staticsettext("Label1","改变标签") 
          </example>
        </function>
      </namespace>
      <namespace name="下拉框">
        <function name="下拉框">
          <pram>(名称)</pram>
          <example>
            函数原型:|&lt下拉框 Id="Select1" 标题="下拉框" 列表="选项1|选项2|选项3" 可见="true" 默认值="0" 
			高度="22" 宽度="100" 点击事件="config_sl1.txt" 边距="0|0|0|0"&gt &lt/下拉框&gt
            函数说明:|下拉框获取选中文本
            Id:指定的下拉框ID
			列表:选中的内容，每个内容必须|间隔开
			高度:-1充满父布局，-2自适应，固定数值自己填
            宽度:-1充满父布局，-2自适应，固定数值自己填	
			点击事件:选择之后触发的事件文本，存在在资源目录中
			边距:距离边界的距离,依次为左,上,右,下
            返回值:执行成功返回下拉框当前选中的文本
            调用例子:|
            &lt下拉框
                Id="SelTaskFun"
                标题="下拉框"
                列表="隐藏设置|行会领地|世界BOSS|免费算卦|世界喊话"
                可见="true"
                默认值="0"
                高度="23"
                宽度="79"
                边距="0|0|0|0"
                点击事件="checkbox.txt"
                字体颜色="#0BBF18"&gt
            &lt/下拉框&gt
          </example>
        </function>
        <function name="getselectsitemcontent">
          <pram>(名称)</pram>
          <example>
            函数原型:|getselectsitemcontent(name)
            函数说明:|获取下拉框选中文本
            name:指定的下拉框ID
            返回值:执行成功返回下拉框当前选中的文本,失败则返回空
            调用例子:|
            local selecttext =getselectsitemcontent("SelTaskFun")
          </example>
        </function>		
		<function name="setSelectChosedItem">
          <pram>(name,text)</pram>
          <example>
            函数原型:|setSelectChosedItem(name,text)
            函数说明:|设置下拉框文本内容
            name:指定的下拉框ID
            text:设置下拉框的内容
            返回值:
            调用例子:|
            setSelectChosedItem("Select1","1|2|3") 
          </example>
        </function>
        <function name="getselectscheckitemindex">
          <pram>(name)</pram>
          <example>
            函数原型:|getselectscheckitemindex(name)
            函数说明:|获取下拉框获取选中下标
            name:指定的下拉框ID
            返回值:执行成功则返回当前选中下拉框下标,失败则返回-1
            调用例子:|
            local index = getselectscheckitemindex("SelTaskFun")
          </example>
        </function>	
       <function name="setselectscheckitemindex">
			<pram>(id,index)</pram>
			<example>
			函数原型:|setselectscheckitemindex(id,index)
			函数说明:|
			设置下拉框选中下标
			id:下拉框id
			index:设置下标(从0开始)
			返回值:成功:true,失败:false
			调用例子:|
			function floatwinrun()
				local value = setselectscheckitemindex("Select1",5)
				lineprint("value:"..tostring(value))
			end
			</example>
			</function>
			
      </namespace>
      <namespace name="多选框">
        <function name="多选框">
          <pram>(name)</pram>
          <example>
            函数原型:|&lt多选框 Id="CheckBox1" 标题="多选框" 选中="false" 可见="true" 
					字体大小="12" 高度="-2" 宽度="-2" 边距="0|0|0|0"&gt &lt/多选框&gt
            函数说明:|设置功能是否选中
            Id:指定的下拉框ID
			高度:-1充满父布局，-2自适应，固定数值自己填
            宽度:-1充满父布局，-2自适应，固定数值自己填	
            返回值:如果选中返回为true,否则返回为false
            调用例子:|
				&lt多选框
					Id="Chpkprotect"
					标题="PK保护功能"
					选中="true"
					可见="true"
					字体大小="12"
					高度="20"
					宽度="-2"
					边距="0|0|0|0"&gt
				&lt/多选框&gt
          </example>
        </function>
        <function name="checkgetselected">
          <pram>(name)</pram>
          <example>
            函数原型:|checkgetselected(name)
            函数说明:|判断多选框是否选中
            name:指定的多选框ID
            返回值:选中返回true,没选中返回false
            调用例子:|
            local bis = checkgetselected("Chpkprotect")
          </example>
        </function>  
        <function name="checksetselected">
			<pram>(name,selected)</pram>
			<example>
			函数原型:|checksetselected(name,selected)
			函数说明:|设置多选框的是否选中
			name:指定的多选框ID
			selected:是否选中,选中为true,不选中为false
			返回值:无
			调用例子:|
			checksetselected("check0",true)
			</example>
		</function> 
      </namespace>
      <namespace name="输入框">
        <function name="输入框">
          <pram>(name)</pram>
          <example>
            函数原型:|&lt输入框 Id="text1" 提示文本="输入框" 默认文本="默认" 输入类型="文本型"
                        字体大小="11" 高度="18" 宽度="-2" 可见="true" 边距="0|0|0|0"&gt &lt/输入框&gt
            函数说明:|界面输入指定数据
            Id:指定的输入框ID
            默认文本:未输入任何数据的默认数据
			高度:-1充满父布局，-2自适应，固定数值自己填
            宽度:-1充满父布局，-2自适应，固定数值自己填	
			边距:距离边界的距离,依次为左,上,右,下
            返回值:返回输入的数据
            调用例子:|
				&lt输入框
					Id="TextxmTeamcs"
					提示文本="输入框1|输入框2"
					默认文本="60"
					输入类型="文本型"
					字体大小="11"
					高度="20"
					宽度="30"
					可见="true"
					边距="0|0|0|0"&gt
				&lt/输入框&gt
          </example>
        </function>
		<function name="editsettext">
          <pram>(name,text)</pram>
          <example>
            函数原型:|editsettext(name,text)
            函数说明:|设置编辑框内容
            name:指定的编辑框ID
            text:要设置的编辑框的文本内容
            返回值:无
            调用例子:|
            editsettext("edit0","AIS指端精灵")
          </example>
        </function>
        <function name="editgettext">
          <pram>(name)</pram>
          <example>
            函数原型:|editgettext(name)
            函数说明:|获取编辑框内容
            name:指定的编辑框ID
            返回值:执行成功则返回编辑框内容,失败则返回"error"
            调用例子:|
            local content = editgettext("TextxmTeamcs")
          </example>
        </function>        
		
      </namespace>
      
    </dll>
	<dll name="新功能">
		<namespace name="监控脚本">
			<function name="remindlostconnect">
				<pram>(str)</pram>
				<example>
						函数原型:|remindlostconnect(str)
						函数说明:|脚本掉线提醒,会向飞天助手推送消息
						str:输出的信息
						返回值:无
						调用例子:|
						remindlostconnect("脚本掉线了")
				</example>
			</function>
			<function name="uploadscriptmsg">
				<pram>(str)</pram>
				<example>
						函数原型:|uploadscriptmsg(str)
						函数说明:|上传日志
						str:上传日志信息
						返回值: 0 成功 1失败
						调用例子:|
						uploadscriptmsg("执行点击成功")
				</example>
			</function>
		</namespace>
		<namespace name="卡密验证">
			<function name="cdkeyauthorization">
				<pram>(str)</pram>
				<example>
					函数原型:|cdkeyauthorization(Key, UserCode, IDcode )  
					函数说明:|卡密系统 
					Key:  		cdKey 
					UserCode: 	用户设置的密码
					IDcode:     识别码
					返回值:		失败返回 -1 
								成功返回 剩余可用时间
					调用例子:|
					ret = cdkeyauthorization("edd1edfcdc7b4a819c71011f703cf542","123456", "123456789");
					messagebox(ret)
				</example>
			</function>
		</namespace>
		<namespace name="缩放或者展开">
			<function name="zoomorexpand">
				<pram>(circleX,circleY,isZoom)</pram>
				<example>
					函数原型:|zoomorexpand(circleX,circleY,isZoom)  
					函数说明:|缩放或者展开 
					circleX:  	中心点X
					circleY: 	中心点Y
					isZoom:     是否缩放     0缩放  1展开
					调用例子:|
					zoomorexpand(500,500,1);
				</example>
			</function>
		</namespace>
		<namespace name="画圆">
			<function name="drawcircle">
				<pram>(x,y,radio,isReverser,pointDelay)</pram>
				<example>
					函数原型:|drawcircle(x,y,radio,isReverser,pointDelay)  
					函数说明:|缩放或者展开 
					x:  			圆心点X
					y: 				圆心点Y
					radio:  		半径
					isReverser:  	是否反向 0顺时针画  1 逆时针画
					pointDelay:		延迟(画圆速度, 单位ms )
					调用例子:|
					touchdown(300,300,0)
					drawcircle(300,300,20,0,0);
					touchup(0)
				</example>
			</function>
		</namespace>
		<namespace name="新字库(2.1.6版本及以上)">
			<function name="setnewdict">
				<pram>(path,index)</pram>
				<example>
					函数原型:|setnewdict(path,index)  
					函数说明:|设置新字库文件索引
					path:  			字库文件路径
					index: 			给字库文件设置索引, 值范围：0-19
					返回值:			成功返回 1
									失败返回 0 
					调用例子:|
					
					local rc = getrcpath("rc:dictconfig.txt")
					local result = setnewdict(rc,1)
					-- 1为设置成功 0为设置失败
					lineprint("字库设置结果："..result)
				</example>
			</function>
			<function name="usenewdict">
				<pram>(index)</pram>
				<example>
					函数原型:|usenewdict(index)  
					函数说明:|使用新字库文件索引
					index: 			要使用的字库文件索引
					返回值:			成功返回 1
									失败返回 0 
					调用例子:|
					local rc = getrcpath("rc:dictconfig.txt")
					setnewdict(rc,1)
					local result = usenewdict(1)
					-- 1为使用成功 0为使用失败
					lineprint("字库使用结果："..result)
				</example>
			</function>
			<function name="delnewdict">
				<pram>(index)</pram>
				<example>
					函数原型:|delnewdict(index)  
					函数说明:|删除新字库文件索引
					index: 			要删除的字库文件索引
					返回值:			成功返回 1
									失败返回 0 
					调用例子:|
					local rc = getrcpath("rc:dictconfig.txt")
					setnewdict(rc,1)
					local result = delnewdict(1)
					-- 1为删除成功 0为删除失败
					lineprint("字库删除结果："..result)
				</example>
			</function>
			<function name="ocrrec">
				<pram>(x1,y1,x2,y2,color_format,sim)</pram>
				<example>
					函数原型:|ocrrec(x1,y1,x2,y2,color_format,sim)  
					函数说明:|根据当前的字库文件索引识别字
					x1: 			区域的左上X坐标
					y1: 			区域的左上Y坐标
					x2: 			区域的右下X坐标
					y2: 			区域的右下Y坐标
					color_format: 	识字的颜色格式串"ffffff-202020|000000-000000"
					sim: 			颜色的相似度(取值范围0.1~1.0)
					返回值:			返回字库中识别到的所有的字, 未识别到返回空
					调用例子:|
					setnewdict(rc,1)
					usenewdict(1)
					local result = ocrrec(324,77,393,117,"ffffff-000000",1.0)
					lineprint("识别到的字有："..result)
				</example>
			</function>
			<function name="findword">
				<pram>(x1,y1,x2,y2,string,color_format,sim)</pram>
				<example>
					函数原型:|findword(x1,y1,x2,y2,string,color_format,sim)  
					函数说明:|根据当前的字库文件索引找字
					x1: 			区域的左上X坐标
					y1: 			区域的左上Y坐标
					x2: 			区域的右下X坐标
					y2: 			区域的右下Y坐标
					strng:			待查找的字符串,可以是字符串组合,比如"发现|你好|搜索",中间用"|"来分割字符串
					color_format: 	识字的颜色格式串"ffffff-202020|FFFFFF-000000"
					sim: 			颜色的相似度(取值范围0.1~1.0)
					返回值:			返回找到某个字的x,y坐标和字符串的索引, 如:找到"发现", 返回 329,108,0
					调用例子:|
					
					setnewdict(rc,1)
					usenewdict(1)
					local x,y,index = findword(324,77,393,117,"发现|你好|搜索","ffffff-000000",1.0)
					-- 返回结果如: 108,190,0  
					lineprint("找到的字坐标为：x ="..x.."y = "..y.."index = "..index)
				</example>
			</function>
		</namespace>
				<namespace name="2.1.7版本更新">
			<function name="readfinish">
			<pram>(fd)</pram>
			<example>
			函数原型:|readfinish(fd)
			函数说明:|
			判断文件是否读到结尾,与fileisend接口相同
			fd:文件句柄
			返回值:读到文件尾,返回true,否则返回false
			调用例子:|
			local fd = fileopen("/sdcard/123.txt")
			local index
			while(!readfinish(fd)) do
			index++
			filereadline(fd)
			end
			fileclose(fd)
			lineprint("文件一共:"..index.."行")
			</example>
			</function>
			<function name="logdel">
			<pram>(number)</pram>
			<example>
			函数原型:|logdel()
			函数说明:|
			删除除了number天,其它的日志全部删除或保留number天的日志
			返回值:
			调用例子:|
			-- 除了最近7天的日志,其它的全部删除
			logdel()

			-- 除了最近3天的日志，其它的全部删除
			logdel(3)
			</example>
			</function>
			<function name="cmdroot">
			<pram>(string)</pram>
			<example>
			函数原型:|cmdroot(string)
			函数说明:|
			执行shell命令,不再提示已授权信息
			string:shell命令,此处执行与使用adb shell登陆手机执行命令是一样的,如果需要root权限
			执行且在手机已经root的情况下,请在命令前增加su root 例如 "su root ls /sdcard/"或 "ls /sdcard/",更多的执行命令,
			大家可以百度android adb常用命令
			返回值:返回命令执行的结果,以字符串形式返回
			调用例子:|
			local t = cmdroot("ls /sdcard/") 
			traceprint(t)
			-- t = dcytest.t[行号:5]AisDownloaded Alarms Android Applications DCIM Download Misc Movies Music
			</example>
			</function>
			<function name="playmp3">
			<pram>(string)</pram>
			<example>
			函数原型:|playmp3(路径)
			函数说明:|
			播放mp3音乐
			string:mp3的路径 如：/sdcard/ais.mp3
			返回值:无
			调用例子:|
			playmp3("/sdcard/ais.mp3")
			</example>
			</function>
			<function name="stopmp3">
			<pram>()</pram>
			<example>
			函数原型:|stopmp3()
			函数说明:|
			停止mp3音乐
			
			返回值:无
			调用例子:|
			stopmp3()
			</example>
			</function>
			<function name="pauseplay">
			  <pram>(无)</pram>
			  <example>
				函数原型:|pauseplay()
				函数说明:|
				暂停播放MP3
				参数:无
				返回值:返回函数执行的结果,执行成功返回true,执行失败返回false.
				调用例子:|
				playmp3("/sdcard/test.mp3")
				pauseplay()
			  </example>
			</function>
			<function name="sendmail">
			  <pram>(serveradd,port,user,pass,from,to,title,msg)</pram>
			  <example>
				函数原型:|sendmail(serveradd,port,user,pass,from,to,title,msg)
				函数说明:|
				通过serveradd,port端口邮箱服务器发送MSG邮件给某人
				参数:
				serveradd: 邮箱服务器 如： smtp.qq.com , smtp.sina.cn , smtp.163.com  (注：必须开启POP3/SMTP服务)
				port: 邮箱服务器通信的端口(注:大部分邮箱的端口为25)
				user: 用户名
				password:	密码 	(注： 部分帐户需要用授权码登陆,帐户级别高)温馨提示：在第三方登录QQ邮箱， 继续获取授权码登录第三方客户端邮箱 。 生成授权码
				from:	发邮件的地址    如:  123456@qq.com 
				to:		收邮件的地址	 如： 654321@qq.com
				msg:	要发送的消息 	 如： 你好,指端精灵
				返回值: 发送邮箱成功返回 1  失败返回 -1
				调用例子:|
				ret = sendmail("smtp.qq.com",25,"274877532@qq.com","kvbvtodegxtibhhj","274877532@qq.com","304322527@qq.com","测试邮件","你好呀,产品经理")
				lineprint(ret)
				-- 输出 dcytest.t[行号:4]1
			  </example>
			</function>
			<function name="gettopapp">
			  <pram>()</pram>
			  <example>
				函数原型:|gettopapp()
				函数说明:|
				获得当前运行的APK包名,解决gettopapppackagenameex导致脚本卡死的问题
				参数:无
				返回值: 成功返回包名
				调用例子:|
				ret = gettopapp()
				lineprint(ret)
				-- 输出 dcytest.t[行号:4]com.ais.app
			  </example>
			</function>
			<function name="postjson">
			  <pram>(url, port, addr, body)</pram>
			  <example>
				函数原型:|postjson(url, port, addr, body)
				函数说明:|
				向服务器发送json消息并返回json结果
				参数:
				url: 	服务器域名 如： baidu.com
				port: 	端口号
				addr: 	具体的地址 /a/b/c
				body:  	要发送的json数据
				返回值: 成功返回服务器回复的json数据或结果  失败返回 -1
				调用例子:|
				url = "a.iftzs.com"
				port = 80
				addr = "/bbs/script/scriptCommentList"
				body = "{\"scriptId\":\"2c928cf95f7564bf015f760650590267\",\"current\":1,\"size\":2}"
				ret = postjson(url,port,addr,body)
				lineprint(ret)
				-- 输出 dcytest.t[行号:5]{"resultMsg":"成功"}
			  </example>
			</function>
			<function name="httprequest">
				<pram>(mode,url,send,charset="utf-8",arr_setheader=null)</pram>
				<example>
				函数原型:|httprequest(mode,url,send,charset="utf-8",arr_setheader=null)
				函数说明:|
				发送http请求,可以是post与get
				mode:请求模式
				url:请求地址,必须带http://开头
				send:请求内容,get模式可以为空
				charset:服务器返回的数据编码
				arr_setheader:设置http请求头,默认为null,一般情况不建议自行设置,可能会影响正常使用
				返回值:请求成功,返回网页内容,失败返回null,可以使用getlasterror()函数获取相关错误信息
				调用例子:|
				var body = httprequest("get","http://www.baidu.com/","","utf-8")
				messagebox(body)
				</example>
			</function>
			<function name="checksetselected">
			<pram>(name,selected)</pram>
				<example>
				函数原型:|checksetselected(name,selected)
				函数说明:|设置复选框的是否默认选中
				name:指定的复选框ID
				selected:是否默认选中,选中为true,不选中为false
				返回值:无
				调用例子:|
				checksetselected("check0",true)
				</example>
			</function>
		</namespace>
		<namespace name="2.2.1版本更新">
			<function name="getscreendata">
			<pram>(x1,y1,x2,y2,hex)</pram>
			<example>
			函数原型:|getscreendata(x1,y1,x2,y2,hex)
			函数说明:|
			获取范围的竖屏/横屏的RGB值
			x1:左上角坐标x
            y1:左上角坐标y
            x2:右下角坐标x
            y2:右下角坐标y
			hex:输出的进制 0为RGB十进制值 1为RGB十六进制值 默认为0
			返回值: tab, 二维的tab表 
			调用例子:|
			setrotatescreen(0)		-- 竖屏
			local x1 = 0 y1 = 0 x2 = 720 y2 = 1280
			local tab10 = getscreendata(x1,y1,x2,y2,0) -- 十进制
			local tab16 = getscreendata(x1,y1,x2,y2,1) -- 十六进制
			--注意:因lua数组从1开始,所以取(100,100)这个点的颜色值时,输出的时候你需要将x+1,y+1:
			lineprint(tostring(tab10[101][101]))
			lineprint(tostring(tab16[101][101]))
			-- 起点坐标(0,0)
				--十进制
			lineprint(tostring(tab10[1][1]))
			-- 输出 OneStepTest.t.t[行号:13]4218264
				--十六进制
			lineprint(tostring(tab16[1][1]))
			-- 输出 OneStepTest.t.t[行号:13]405D98
			
			
			-- 终点坐标(720,1280)
				--十进制
			lineprint(tostring(tab10[720][1280]))
			-- 输出 OneStepTest.t.t[行号:15]16777215
				--十六进制
			lineprint(tostring(tab16[720][1280]))
			-- 输出 OneStepTest.t.t[行号:15]FFFFFF
			</example>
			</function>
			<function name="setselectscheckitemindex">
			<pram>(id,index)</pram>
			<example>
			函数原型:|setselectscheckitemindex(id,index)
			函数说明:|
			设置下拉框选中下标
			id:下拉框id
			index:设置下标(从0开始)
			返回值:成功:true,失败:false
			调用例子:|
			function floatwinrun()
				local value = setselectscheckitemindex("Select1",5)
				lineprint("value:"..tostring(value))
			end
			</example>
			</function>
			<function name="getruntype">
			<pram>无</pram>
			<example>
			函数原型:|getruntype()
			函数说明:|
			获取当前运行环境
			参数:无
			返回值:1:调试版,2:打包版,3飞天助手
			调用例子:|
			function floatwinrun()
				local value = getruntype()
				if value == 1 then
					lineprint("运行环境:调试版")
				elseif value == 2 then
					lineprint("运行环境:单独包")
				elseif value == 3 then
					lineprint("运行环境:飞天助手")
				end
			end
			</example>
			</function>
			<function name="getgray">
			<pram>color</pram>
			<example>
			函数原型:|getgray(color)
			函数说明:|
			获取十进制颜色的灰度
			color:十进制颜色
			返回值:灰度值
			调用例子:|
			function floatwinrun()
				local color = getcolor(100,100,0)	--获取100,100坐标的颜色,以十进制返回
				local value = getgray(color)	--传入颜色,获取灰度
				lineprint("当前颜色灰度:"..tostring(value))
			end
			</example>
			</function>
			<function name="setfloatwindowlocation">
			<pram>x,y</pram>
			<example>
			函数原型:|setfloatwindowlocation(x,y)
			函数说明:|
			设置当前悬浮窗位置;调试版目前无法使用,支持独立包/飞天助手
			x:坐标X
			y:坐标Y
			返回值:无
			调用例子:|
			function floatwinrun()
				setfloatwindowlocation(720,1280)	--设置悬浮窗至右下角落
			end
			</example>
			</function>
			<function name="bdocr">
			<pram>apikey,secretKey,path,url</pram>
			<example>
			函数原型:|bdocr(apikey,secretKey,path,url) 	
			函数说明:|
			百度ocr识别
			apikey:百度Api
			secretKey:百度secretKey
			path:识别图片的路径
			url:对应识别链接
			返回值:json
			调用例子:|
				require("XM")	--导入XM插件
				local value = ""
				local path = getrcpath().."/A.bmp"
				screencap(413,64,613,102 ,path)	--截图存放在指定目录
				local apikey = "百度Api key"
				local secretKey = "百度Secret Key"
				local url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"	--此链接识别可识别字母/数字/汉字,可免费试用50000次
				--文档链接:https://cloud.baidu.com/doc/OCR/s/zk3h7xz52
				local retOcrStr = bdocr(apikey,secretKey,path,url) 	
				--返回json数据,通过XM插件的XM.JsonDecode进行json解析
				XM.Print("返回值:",retOcrStr)
				local list = XM.JsonDecode(retOcrStr)
				XM.Print("list:",list)
				XM.ReadFile(path,true)	--删除截图
				if list.words_result ~= nil and list.words_result[1] ~= nil and list.words_result[1].words ~= nil then
				   XM.Print("识别到的内容:",list.words_result[1].words)
				end
			</example>
			</function>
		</namespace>
	</dll>
  </Platform>
</api>