[关闭]
@miniknife 2018-07-31T08:51:31.000000Z 字数 33495 阅读 44553

ts.so 触动精灵高级扩展库使用手册

开发手册


Windows 平台按 Ctrl + F 打开快捷搜索

Mac 平台按 command + F 打开快捷搜索

※右侧文本列表可以找到全部手册


目录


更新日志

iOS v1.3.5

更新日期: 2018-06-27
更新日志:

  • 修复新增 ts.ftp.setFTPTimeOut 函数超时无效的问题
  • 修复 ts.httpsGet 函数跳转 301 页面的问题超时时间函数
  • 新增查询数据库返回 table 的功能
  • 修复 ts.httpGet 及 ts.httpPost 函数返回为空的问题
  • 修复 v1.3.1 版 本ts.so 解析特殊格式 table 会导致服务崩溃的问题
  • 修复 v1.3.1 版本字符串分割过滤报错的问题
  • 修复 v1.3.1 版本计算MD5报错的问题
  • 修复 v1.3.1 版调用 aes128_encryptbao 函数报错 nil value 的问题
  • 修复 iOS 10.2 系统调用 v1.3.1 版本导致设备重启 请求无法上传包含字符串格式参数的 table 的问题
  • 修复 httpsGet 返回值格式不正确的问题
  • 修复请求参数不支持数组的问题
  • 修复 ts.httpPost 在模拟器上 post 会失败的问题
  • 修复 htftp 请求参数不支持数组的问题
  • 修复企业版 require("ts") 调用 v1.3.0 版本导致设备重启的问题
  • 修复 http 请求重定向不成功的问题获取列表为空的问题
  • 修复 ts.qrDecode 识别二维码识别微信收款码会导致服务崩溃的问题

iOS v1.3.6

更新日期: 2018-07-31
更新日志:

  • 修复二值化函数导致手机内存增加的问题

Android v1.1.1

更新日期: 2018-07-17
更新日志:

  • 新增 ts.ftp.setFTPTimeOut 超时时间函数
  • 新增查询数据库返回 table 的功能
  • 修复 http 请求无法上传包含字符串格式参数的 table 的问题
  • 修复 httpsGet 返回值格式不正确的问题
  • 修复请求参数不支持数组的问题
  • 修复 ts.httpPost 在模拟器上 post 会失败的问题
  • 修复 ftp 获取列表为空的问题
  • 修复 ts.qrDecode 识别二维码识别微信收款码会导致服务崩溃的问题

使用方法

请在脚本开头插入 local ts = require("ts") 即可调用扩展库中所有函数。
iOS 版 ts.so 需要放到如下路径:/var/mobile/Media/TouchSprite/plugin
iOS 11 系统的设备,原 TouchSprite 文件夹下新增 plugin_ios11 快捷方式,连接到 usr/bin/tsplugin
如果系统是 iOS 11 则 tsp 自带 so 文件释放到该路径但 lua 文件释放路径保持不变
如果开发者想要手动导入 so 文件,也需要放到 usr/bin/tsplugin 目录
安卓版和模拟器版 ts.so > 需要放到如下路径:data/data/com.touchsprite.android/files/plugin
安卓设备找不到该目录时需要使用第三方文件管理器,推荐 RE文件管理器

注意事项

  • 模拟器版部分功能不支持,请自行尝试
  • 安卓和 iOS 部分函数调用方法不同,请仔细参考
  • 下载新的扩展库后需要重启触动服务才能生效

函数扩展库下载

平台 版本 备注 更新日期 下载
iOS v1.3.5 历史版本 2018-06-27 iOS-v1.3.5
iOS v1.3.6 正式版本 2018-07-31 iOS-v1.3.6
安卓真机 v1.1.1 适用于触动安卓 v2.2.x 及更低版本 2018-07-17 安卓真机-v1.1.1
安卓模拟器 v1.1.1 适用于触动安卓 v2.2.x 及更低版本 2018-07-17 安卓模拟器-v1.1.1
安卓真机 v1.1.1 适用于触动安卓 v2.3.0 及以上版本 2018-07-17 安卓真机-v1.1.1
安卓模拟器 v1.1.1 适用于触动安卓 v2.3.0 及以上版本 2018-07-17 安卓模拟器-v1.1.1

函数: ts.version 获取扩展库版本号

函数名称:获取扩展库版本号
函数功能:获取 ts.so 扩展库版本号

脚本实例:

  1. local ts = require("ts")
  2. dialog(ts.version())

网络相关模块

FTP

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。

函数: ts.ftp.connect 连接FTP服务器

函数名称:连接FTP服务器
函数功能:连接FTP服务器,使用FTP功能前必须先连接
函数方法:
status = ts.ftp.connect(ftppath,username,password)
参数 类型 说明
ftppath string 服务器地址,示例:"192.168.0.1"
username string 用户名,服务器登录用户名
password string 密码,服务器登录密码
返回值 类型 说明
status boolean 成功返回 true,失败返回 false

函数: ts.ftp.close 断开FTP连接

函数名称:断开FTP连接
函数功能:断开FTP连接,FTP功能使用结束后必须调用
函数方法:
ts.ftp.close()

函数: ts.ftp.setFTPTimeOut 设置FTP超时时间

函数名称:设置 FTP 超时时间
函数功能:设置 FTP 超时时间,超时后执行下一步防止阻塞
函数方法:
ts.ftp.setFTPTimeOut(sec)
参数 类型 说明
sec number 超时时间,单位为秒

函数: ts.ftp.mkdir 创建文件夹

函数名称:创建文件夹
函数功能:在服务器指定目录下创建文件夹
函数方法:
status = ts.ftp.mkdir(filePath)
参数 类型 说明
filePath string 文件夹路径及文件夹名
返回值 类型 说明
status boolean 成功返回 true失败,返回 false

脚本示例

  1. --脚本仅供参考不可直接使用
  2. local ts = require("ts")--使用官方库前一定要在开头插入这一句
  3. status = ts.ftp.connect("111.111.11.111","username","password") --此处应填入真实的地址及账号密码
  4. --FTP 操作第一步,连接 FT P服务器,连接成功后才可进行FTP相关操作
  5. if status then
  6. dialog("连接成功", 0)
  7. else
  8. dialog("连接失败", 0)
  9. end
  10. mkStatus = ts.ftp.mkdir("firstFile/childFile") --在 FTP 上的 firstFile 文件夹内创建一个 childFile 文件夹,如果没有 firstFile 文件夹则先创建 firstFile 文件夹
  11. ts.ftp.close() --操作完成后,断开 FTP 服务器连接

函数: ts.ftp.rmdir 删除文件夹

函数名称:删除文件夹
函数功能:在服务器指定目录下删除文件夹
函数方法:
ts.ftp.rmdir(filepath)
参数 类型 说明
filepath string 删除指定目录下的文件夹
返回值 类型 说明
status boolean 成功返回 true 失败,返回 false

脚本示例

  1. --脚本仅供参考不可直接使用
  2. local ts = require("ts")--使用官方库前一定要在开头插入这一句
  3. status = ts.ftp.connect("111.111.11.111","username","password")
  4. --FTP 操作第一步,连 FTP 服务器,连接成功后才可进行 FTP 相关操作
  5. if status then
  6. dialog("连接成功", 0)
  7. else
  8. dialog("连接失败", 0)
  9. end
  10. ts.ftp.rmdir("firstfile/ChildFile")--删除目录下的文件夹
  11. ts.ftp.close() --操作完成后,断开 FTP 服务器连接

函数: ts.ftp.list 获取文件列表文件

函数名称:获取文件列表文件
函数功能:获取服务器指定目录下的文件列表
函数方法:
ts.ftp.list(filepath)
参数 类型 说明
filepath table 文件目录下的所有文件列表

脚本示例

  1. --脚本仅供参考不可直接使用
  2. local ts = require("ts")--使用官方库前一定要在开头插入这一句
  3. status = ts.ftp.connect("111.111.11.111","username","password")
  4. --FTP 操作第一步,连接 FTP 服务器,连接成功后才可进行 FTP 相关操作
  5. if status then
  6. dialog("连接成功", 0)
  7. else
  8. dialog("连接失败", 0)
  9. end
  10. mkStatus = ts.ftp.mkdir("/hehe123/test") --创建文件夹
  11. allFile = ts.ftp.list("/hehe123/test") --列出文件夹里所有文件
  12. if allFile then
  13. allFilestr=""
  14. for i,v in pairs(allFile) do
  15. allFilestr=v.."\n"..allFilestr;
  16. end
  17. dialog(allFilestr, time)--打印文件夹内所有文件列表
  18. else
  19. dialog("error",0)
  20. end
  21. ts.ftp.close() --操作完成后,断开 FTP 服务器连接

函数: ts.ftp.rename 重命名文件

函数名称:重命名文件
函数功能:重命名服务器上指定目录的文件
函数方法:
ts.ftp.rename(oldfilepath,newfilepath)
参数 类型 说明
oldfilepath string 待重命名文件名
filePath string 新文件名
返回值 类型 说明
status boolean 成功返回 true 失败,返回 false

脚本示例

  1. --脚本仅供参考不可直接使用
  2. local ts = require("ts")--使用官方库前一定要在开头插入这一句
  3. status = ts.ftp.connect("111.111.11.151","username","password")
  4. if status then
  5. dialog("连接成功", 0)
  6. else
  7. dialog("连接失败", 0)
  8. end
  9. ts.ftp.rename("/haha/test1","/haha/test2")
  10. ts.ftp.close() --操作完成后,断开FTP服务器连接

注意事项:

  1. 新、旧文件路径层级数必须相同
  2. 新、旧文件夹路径必须是同一目录

函数: ts.ftp.delete 删除文件

函数名称:删除文件
函数功能:删除指定文件
函数方法:
ts.ftp.delete(fileName)
参数 类型 说明
fileName string 文件路径下的文件,具体文件需要加上扩展名
返回值 类型 说明
status boolean 成功返回 true 失败,返回 false

脚本示例

  1. --脚本仅供参考不可直接使用
  2. local ts = require("ts")--使用官方库前一定要在开头插入这一句
  3. status = ts.ftp.connect("111.111.11.151","username","password")
  4. if status then
  5. dialog("连接成功", 0)
  6. else
  7. dialog("连接失败", 0)
  8. end
  9. xstatus = ts.ftp.delete("C38K7L77DTWF.txt") --删除某个文件
  10. ts.ftp.close() --操作完成后,断开 FTP 服务器连接

函数: ts.ftp.upload 上传文件

函数名称:上传文件
函数功能:上传本地文件到服务器
函数方法:
status = ts.ftp.upload(localfilepath,severfilepath,type)
参数 类型 说明
localfilepath string 本地文件路径
severfilepath string FTP 文件路径
type number 选填,默认值 1 表示文本类型,0 表示非文本类型
返回值 类型 说明
status boolean 成功返回 true 失败,返回 false

脚本示例

  1. --脚本仅供参考不可直接使用
  2. local ts = require("ts")--使用官方库前一定要在开头插入这一句
  3. status = ts.ftp.connect("111.111.11.151","username","password")
  4. if status then
  5. dialog("连接成功", 0)
  6. else
  7. dialog("连接失败", 0)
  8. end
  9. path = userPath()
  10. upStatus = ts.ftp.upload(path.."/lua/main.txt","/haha/main.txt")
  11. --上传本地 lua 文件夹下的 main.lua 文件到服务器的 haha 文件夹里
  12. if upStatus then
  13. toast("上传完成", 1)
  14. else
  15. toast("上传失败", 1)
  16. end
  17. ts.ftp.close() --操作完成后,断开 FTP 服务器连接

函数: ts.ftp.download 下载文件

函数名称:下载文件
函数功能:下载服务器文件到本地
函数方法:
ts.ftp.download(localfilepath,severfilepath,type)
参数 类型 说明
localfilepath string 本地文件路径
severfilepath string FTP 文件路径
type number 选填,默认值非 0 表示文本类型,0 表示非文本类型
返回值 类型 说明
status boolean 成功返回 true 失败,返回 false

脚本示例

  1. --脚本仅供参考不可直接使用
  2. local ts = require("ts")--使用官方库前一定要在开头插入这一句
  3. status = ts.ftp.connect("111.111.11.151","username","password")
  4. if status then
  5. dialog("连接成功", 0)
  6. else
  7. dialog("连接失败", 0)
  8. end
  9. path = userPathd()
  10. dwStatus = ts.ftp.download(path.."/res/me.png","/love.png",0)
  11. --下载服务器上的 love.png 文件到本地 res 文件夹
  12. if dwStatus then
  13. toast("下载完成", 1)
  14. else
  15. toast("下载失败", 1)
  16. end
  17. ts.ftp.close() --操作完成后,断开 FTP 服务器连接

完整示例

  1. local ts = require("ts")--使用官方库前一定要在开头插入这一句
  2. status = ts.ftp.connect("111.111.11.151","username","password")
  3. --FTP 操作第一步,连接 FTP 服务器,连接成功后才可进行 FTP 相关操作
  4. if status then
  5. dialog("连接成功", 0)
  6. else
  7. dialog("连接失败", 0)
  8. end
  9. mkStatus = ts.ftp.mkdir("tsnewfolder") --创建文件夹
  10. rmStatus=ts.ftp.rmdir("/haha") --删除文件夹
  11. allFile = ts.ftp.list("/tsnewfolder") --列出文件夹里所有文件
  12. if allFile then
  13. allFilestr=""
  14. for i,v in pairs(allFile) do
  15. --dialog(string.format("%s = %s",i,v),1)
  16. --mSleep(3000)
  17. allFilestr=v.."\n"..allFilestr;
  18. end
  19. dialog(allFilestr, time)
  20. else
  21. dialog("error",0)
  22. end
  23. renameStatus = ts.ftp.rename("/haha","/hehe123") --重命名文件夹或文件,第一个参数为旧名,第二个参数为新名
  24. xstatus = ts.ftp.delete("C38K7L77DTWF.txt") --删除某个文件
  25. path = userPath()
  26. upStatus = ts.ftp.upload(path.."/lua/main.txt","/haha/main.txt")
  27. --上传本地 lua 文件夹下的 main.lua 文件到服务器的 haha 文件夹里
  28. dwStatus = ts.ftp.download(path.."/res/me.png","/love.png",0)
  29. --下载服务器上的 love.png 文件到本地 res 文件夹
  30. ts.ftp.close() --操作完成后,断开FTP服务器连接

注意事项:

  1. 使用本模块时填写的文件路径中,文件名不能使用中文字符
  2. 文件路径必须填写完整路径

HTTP 模块

函数: ts.httpGet 发送httpGET请求

函数名称:发送httpGET请求
函数功能:发送 http GET类型 请求
函数方法:
status_resp, body_resp = ts.httpGet("http://82flex.com", header_send, body_send)
参数 类型 说明
url string 请求URL,必填
header_send table 请求头部内容,选填,本参数必须与请求体一起填写
body_send table 请求内容,选填,本参数必须与头部一起填写
返回值 类型 说明
status_resp number HTTP 状态码
header_resp string 返回头部
body_resp string 返回内容

脚本实例:

  1. local ts = require("ts")
  2. header_send = {typeget = "ios"}
  3. ts.setHttpsTimeOut(60)--安卓不支持设置超时时间
  4. status_resp, header_resp,body_resp = ts.httpGet("http://82flex.com&love=1", header_send, body_send)
  5. dialog(status_resp,0)
  6. dialog(header_resp,0)
  7. dialog(body_resp,0)

函数: ts.httpPost 发送httpPOST请求

函数名称:ts.httpPost
函数功能:发送 http POST类型 请求
函数方法:
status_resp, body_resp = ts.httpPost("http://dev.touchsprite.com/site/login", header_send, body_send)
参数 类型 说明
url string 请求URL (必须填写)
header_send table 请求头部内容,选填,本参数必须与请求体一起填写
body_send table 请求内容,选填,本参数必须与头部一起填写
返回值 类型 说明
status_resp number HTTP 状态码
header_resp string 返回头部
body_resp string 返回内容

脚本实例:

  1. local ts = require("ts")
  2. header_send = {typeget = "ios"}
  3. body_send = {msg = "hello"}
  4. ts.setHttpsTimeOut(60)--安卓不支持设置超时时间
  5. status_resp,header_resp,body_resp = ts.httpPost("http://dev.touchsprite.com/site/login",header_send, body_send)
  6. dialog(status_resp,0)
  7. dialog(header_resp,0)
  8. dialog(body_resp,0)

HTTPS

函数: ts.setHttpsTimeOut 设置请求超时时间(仅支持iOS)

函数名称:设置请求超时时间
函数功能:发送 https GET类型 请求、发送 https POST类型 请求、设置请求超时时间
函数方法:
ts.setHttpsTimeOut(sec)
参数 类型 说明
sec number 超时时间,单位为秒
  • 此函数方法HTTP请求通用

函数: ts.httpsGet 发送httpsGET请求

函数名称:发送httpsGET请求
函数功能:发送 https GET类型 请求
函数方法:
:
code, header_resp, body_resp = ts.httpsGet("https://www.baidu.com", header_send, body_send)

参数 类型 说明
url string 请求URL (必须填写)
header_send table 请求头部内容,选填,本参数必须与请求体一起填写
body_send table 请求内容,选填,本参数必须与头部一起填写
返回值 类型 说明
code number 返回状态码
header_resp string 头部返回内容
body_resp string 返回内容

函数: ts.httpsPost 发送httpsPOST请求

函数名称:发送httpsPOST请求
函数功能:发送 https POST类型 请求
函数方法:
:
code ,header_resp, body_resp = ts.httpsPost("https://www.baidu.com", header_send, body_send)

参数 类型 说明
url string 请求URL (必须填写)
header_send table 请求头部内容,选填,本参数必须与请求体一起填写
body_send table 请求内容,选填,本参数必须与头部一起填写
返回值 类型 说明
code number 返回状态码
header_resp string 头部返回内容
body_resp string 返回内容

脚本实例:

  1. local ts = require("ts")
  2. header_send = {
  3. ["Content-Type"] = "application/x-www-form-urlencoded",
  4. ["Accept-Encoding"] = "gzip",
  5. ["typeget"] = "ios"
  6. }
  7. body_send = {["msg"] = "hello"}
  8. ts.setHttpsTimeOut(60)--安卓不支持设置超时时间
  9. code,header_resp, body_resp = ts.httpsGet("https://www.baidu.com", header_send,body_send)
  10. dialog(code,0)
  11. dialog(header_resp,0)
  12. dialog(body_resp,0)
  1. local ts = require("ts")
  2. header_send = {typeget = "ios"}
  3. body_send = {
  4. ["username"] = "aa",
  5. ["password"] = "1234"
  6. }
  7. -- body : username=aa&password=1234
  8. ts.setHttpsTimeOut(60) --安卓不支持设置超时时间
  9. code,status_resp, body_resp = ts.httpsPost("https://www.baidu.com", header_send, body_send)
  10. dialog(code,0)
  11. dialog(header_resp,0)
  12. dialog(body_resp,0)

Socket

函数功能:发送tcp/udp请求

脚本实例:

  1. local ts = require("ts")
  2. local socket = require("socket")
  3. local host = "www.baidu.com"
  4. local file = "/"
  5. local sock = assert(socket.connect(host, 80)) -- 创建一个 TCP 连接,连接到 HTTP 连接的标准 80 端口上
  6. sock:send("GET " .. file .. " HTTP/1.0\r\n\r\n")
  7. repeat
  8. local chunk, status, partial = sock:receive(1024) -- 1K 的字节块来接收数据,并把接收到字节块输出来
  9. dialog(chunk or partial, 0)
  10. until status ~= "closed"
  11. sock:close() -- 关闭 TCP 连接
  1. local ts = require("ts")
  2. local socket = require("socket")
  3. local host = host or "127.0.0.1"
  4. local port = port or 8080
  5. print("Binding to host '" ..host.. "' and port " ..port.. "...")
  6. --创建udp对象
  7. udp = assert(socket.udp())
  8. --绑定到指定的端口
  9. assert(udp:setsockname(host, port))
  10. --设置超时时间
  11. assert(udp:settimeout(5))
  12. --获取绑定IP和端口
  13. ip, port = udp:getsockname()
  14. assert(ip, port)
  15. print("Waiting packets on " .. ip .. ":" .. port .. "...")
  16. local recvmaxbyte =20
  17. --单线程无限循环
  18. while 1 do
  19. --接收udp packet
  20. dgram, ip, port = udp:receivefrom(recvmaxbyte)
  21. if(dgram=="终止")then
  22. nlog("终止")
  23. break
  24. end
  25. if dgram then
  26. nlog("Echoing '" .. dgram .. "' to " .. ip .. ":" .. port)
  27. --发送数据
  28. udp:sendto(dgram, ip, port)
  29. else
  30. nlog(ip)
  31. end
  32. end
  33. udp=nil
  34. collectgarbage("collect")

函数: ts.ping 测试网络连接情况

函数名称:测试网络连接情况
函数功能:测试设备网络连接情况
函数方法:
ts.ping(IP/Domain Name,time)
参数 类型 说明
IP/Domain Name number/string IP 地址或域名
time number ping 的次数
返回值 类型 说明
status table 网络连接情况

脚本实例:

  1. local ts = require("ts")
  2. status = ts.ping("www.baidu.com",3) --也可以是 ip 地址
  3. if status then
  4. for i,v in pairs(status) do
  5. dialog(string.format("%s = %s",i,v))
  6. mSleep(3000)
  7. end
  8. else
  9. dialog(status, 0)
  10. end

注意事项

  • 1.2.1 以上版本新增了超时时间,时间为 3 秒
  • ping 的次数只支持大于 0 的整数,次数超过 16 次返回值只显示 16 次的内容

函数: ts.setHttpProxy 设置 http 代理服务器(仅支持 iOS)

函数名称:设置 http 代理服务器
函数功能:设置 http 代理服务器,iOS v1.2.4及以上版本支持
函数方法:
ts.setHttpProxy(IP,status)
参数 类型 说明
IP string 代理服务器 IP 地址
status string 状态,填写 port 为开启,填写 80 为关闭

脚本实例:

  1. local ts = require("ts")
  2. IP = "123.43.123.1"
  3. ts.setHttpProxy(IP,"port") --—开启
  4. ts.setHttpProxy("127.0.0.1","80") --— 关闭

注意事项:

此函数只针对 ts.so 中 httpget 和 httppost 函数生效,并不是设置手机设置中的代理。

SMTP

函数: ts.smtp 通过 smtp 发送邮件

函数名称:通过 smtp 发送邮件
函数功能:通过 smtp 方式发送邮件
函数方法:
status = ts.smtp("收件人邮箱","邮件主题","邮件正文","smtp 服务器","smtp 邮箱账号","smtp 邮箱密码")

脚本实例:

  1. local ts = require("ts")
  2. status = ts.smtp("10879433@qq.com","紧急通知","今天不上班","smtp.163.com","test@163.com","testpassword")
  3. if (status) then
  4. dialog("Success", 0) --发送成功
  5. else
  6. dialog("False", 0) --发送失败
  7. end

注意事项:

  1. 邮箱需先开启SMTP服务功能,例如163邮箱,在登录邮箱后-设置-POP3/SMTP/IMAP 中开启 SMTP 服务。
  2. SMTP 服务器和 SMTP 密码请以邮箱后台提供的为准,一般与邮箱登录密码不同。
  3. 邮件有可能会被归入垃圾箱,请自行检查邮件内容。

图像处理模块

二维码

函数: ts.qrEncode 二维码图片生成

函数名称:二维码图片生成
函数功能:将文本编译成二维码图片
函数方法:
ts.qrEncode(path,string,size)
参数 类型 说明
path string 保存路径
string string 二维码信息内容
size number 二维码图片尺寸
返回值 类型 说明
status string 返回状态

脚本实例:

  1. local ts = require("ts")
  2. status = ts.qrEncode("/var/1.png","我只是比别人帅了一点而已","288")
  3. --"1.jpg"(如只填文件名,默认为图片在触动res目录下)
  4. dialog(status,0)

函数: ts.qrDecode 二维码图片解析

函数名称:二维码图片解析
函数功能:将二维码图片解析为字符串
支持版本:仅 ts.so v1.2.1 以上版本支持
函数方法:
str = ts.qrDecode(path)

※仅支持 iOS 8 及以上系统及触动精灵 Android v2.3.5.4 及其以上版本支持

参数 类型 说明
path string 解析二维码图片的路径,支持 jpg,png 等格式
返回值 类型 说明
str string 解析二维码得到的字符串

脚本实例:

  1. local ts = require("ts")
  2. str = ts.qrDecode(userPath().."/res/1.png")
  3. --"1.jpg"(如只填文件名,默认为图片在触动 res 目录下)
  4. dialog(str,0)
  • 此函数为系统方法,可能因为机型原因导致解析失败,如果出现解析失败或服务重启等问题,请尝试使用第三方扩展库→ tsqr.so
  • 暂不支持iPhone5s设备
  • 不支持微信面对面红包的二维码解析

二值化

函数: ts.binaryzation 屏幕二值化(仅支持 iOS)

函数名称:ts.binaryzation
函数功能:屏幕二值化,将指定区域保存为黑白图,仅支持 1.2.4 及以上版本
函数方法:
ts.binaryzation(x1,y1,x2,y2,value)
参数 类型 说明
x1 number 左上角顶点屏幕横坐标
y1 number 左上角顶点屏幕纵坐标
x2 number 右下角顶点屏幕横坐标
y2 number 右下角顶点屏幕纵坐标
value number 二值化阈值,范围 0 - 255,作为图像二值化的参照值

脚本实例:

  1. local ts = require("ts")
  2. degree = 150
  3. ts.binaryzation(0,0,100,100,degree)

注意事项

  • 调用本函数将会从当前屏幕截取一部分保存,保存路径为触动的 res 目录下 tmp.jpg 文件

函数: ts.imgFindColor 二值化图片区域多点找色(仅支持iOS)

※此功能为测试版功能,正式版将做调整

函数名称:二值化多点找色,图片多点找色
函数功能:在图片的指定区域,根据颜色以及其周边点的颜色,寻找符合条件的点的坐标,仅支持 1.2.4 及以上版本
函数方法:
point = ts.imgFindColor(path,color,posandcolor,x1, y1, x2, y2)
参数 类型 说明
path string 待找色的图片路径
color number 欲寻找的参照点颜色,0 - 黑色,255 - 白色
posandcolor string 周边点颜色参数
x1 number 找色区域相对图片左上角顶点横坐标
y1 number 找色区域相对图片左上角顶点纵坐标
x2 number 找色区域相对图片右下角顶点横坐标
y2 number 找色区域相对图片右下角顶点纵坐标
返回值 类型 说明
point table 以 table 形式返回符合条件的参照点的坐标,如未找到则返回的 table 为空

返回的 table 为以下形式:

  1. table = {
  2. {x = 100,y = 110},
  3. }

脚本实例:

  1. local ts = require("ts")
  2. point = ts.imgFindColor(userPath().."/res/tmp.jpg",255,"0|1|0,0|2|255",60, 239, 127, 501)
  3. if point then
  4. dialog(point[1].x)
  5. end

函数:ts.img.binaryzationImg 图片二值化(仅支持 iOS)

函数名称:图片二值化
函数功能:将指定图片进行二值化处理
函数方法:
ts.img.binaryzationImg(imgPath,posandcolor)
返回值:无
参数 类型 说明
imgPath number 图片路径
posandcolor number 偏色值

脚本示例

  1. local ts = require("ts")
  2. snapshot("test_3.jpg", 101, 101, 200, 200)
  3. ts.img.binaryzationImg(userPath().."/res/test_3.jpg",100)--不支持相对路径
  4. dialog("输出图片保存在"..userPath().."/res/tmp.jpg")

函数:ts.img.binaryzation 指定区域二值化(仅支持 iOS)

函数名称:指定区域二值化
函数功能:将指定区域的图片进行二值化处理
函数方法:
ts.img.binaryzation(x1,y1,x2,y2,posandcolor)
返回值:无
参数 类型 说明
x1,y1 number 图片左上角坐标
x2,y2 number 图片右上角坐标
posandcolor number 偏色值

脚本示例

  1. local ts = require("ts")
  2. ts.img.binaryzation(101,101,200,200,100)
  3. dialog("输出图片保存在"..userPath().."/res/tmp.jpg")

颜色表

函数:ts.img.loadFile 从图片创建颜色表(仅支持 iOS)

函数名称:创建颜色表
函数功能:从图片文件创建颜色表
函数方法:
ts.img.loadFile(imgPath)
返回值:table 类型 color
参数 类型 说明
imgPath string 图片路径
返回值 类型 说明
color table 颜色表

脚本示例

  1. local ts = require("ts")
  2. snapshot("test_1.jpg", 101, 101, 200, 200)
  3. ss = ts.img.loadFile(userPath().."/res/test_1.jpg")--不支持相对路径
  4. dialog(ss[1][12].color)

函数:ts.img.screen 从屏幕创建颜色表(仅支持 iOS)

函数名称:从屏幕创建颜色表
函数功能:从屏幕创建颜色表
函数方法:
ts.img.screen(x1,y1,x2,y2)
返回值:table 类型 color
参数 类型 说明
x1,y1 number 图片左上角坐标
x2,y2 number 图片右下角坐标
返回值 类型 说明
color table 颜色表

脚本示例

  1. local ts = require("ts")
  2. ss = ts.img.screen(101, 101, 200, 200)--不支持相对路径
  3. dialog(ss[1][13].color)

函数:ts.img.save 保存颜色表为图片文件(仅支持 iOS)

函数名称:保存颜色表为图片文件
函数功能:保存颜色表为图片文件
函数方法:
ts.img.save(table,imgPath)
返回值:无
参数 类型 说明
table table 颜色表
imgPath string 保存路径

脚本示例

  1. local ts = require("ts")
  2. ss = ts.img.screen(101, 101, 200, 200)
  3. ts.img.save(ss,userPath().."/res/test_2.jpg")--不支持相对路径

图片操作

函数: ts.imgSize 图片缩放(仅支持 iOS)

函数名称:图片缩放
函数功能:对指定图片进行缩放
支持版本:仅 ts.so v1.2.1 以上版本支持
函数方法:
ts.imgSize(path1,path2,w,h)
参数 类型 说明
path1 string 指定缩放的图片路径
path2 string 生成的图片路径
w number 图片缩放后宽度
h number 图片缩放后高度

脚本实例:

  1. local ts = require("ts")
  2. path = userPath()
  3. ts.imgSize(path.."/res/1.png",path.."/res/2.png",400,400)
  4. --图片后缀可写jpgpng

注意事项:

缩放函数可能导致图片变模糊

字符串处理模块

函数:ts.json.encode json 串编码

函数名称:ts.json.encode
函数功能:对 json 串进行编码

函数:ts.json.decode json 串解码

函数名称:json 串解码
函数功能:对 json 串进行解码

脚本实例:

  1. local ts = require("ts")--使用扩展库前必须插入这一句
  2. local json = ts.json--使用 JSON 模块前必须插入这一句
  3. local tb = {
  4. ["我"] = "五毛",
  5. ["爱"] = "六块",
  6. meme = {
  7. isArray = true,
  8. 1,0,0,4,6,9,5,1,0,0,
  9. },
  10. nullvalue = null,
  11. }
  12. local jsonstring = json.encode(tb);--把 table 转换成 json 字符串
  13. dialog(jsonstring, 0);
  14. local tmp = json.decode(jsonstring);--把 json 字符串转换为 table 对象
  15. dialog(tmp.meme[5], 0);
  16. dialog(tostring(tmp.nullvalue), 0);

函数:tohex、fromhex 十六进制转码

函数名称:十六进制转码
函数功能:转码,字符串十六进制编码转换

脚本实例:

  1. local ts = require("ts")
  2. local str = "触动精灵"
  3. dialog('"'..str..'" 的 16 进制编码为: <'..str:tohex()..'>', 0) --“触动精灵”的 16 进制编码
  4. dialog('<'..str:tohex()..'> 转换成明文为: "'..str:tohex():fromhex()..'"', 0)--将上一行的 16 进制编码转换为明文字符

函数:md5 计算 MD5

函数名称:计算 MD5
函数功能:字符串 MD5 计算

脚本实例:

  1. local ts = require("ts")
  2. local str = "触动精灵"
  3. local binstr = "\0\1\2\3\4\5"
  4. dialog('"'..str..'" 的 MD5 值是: '..str:md5(), 0)--计算"触动精灵" MD5
  5. dialog('<'..binstr:tohex()..'> 的 MD5 值是: '..binstr:md5(), 0)--计算“000102030405”的 MD5

函数:sha1 计算 SHA1

函数名称:计算 SHA1
函数功能:字符串 SHA1 计算

脚本实例:

  1. local ts = require("ts")
  2. local str = "触动精灵的征程"
  3. local binstr = "\0\1\2\3\4\5"
  4. dialog('"'..str..'" 的 SHA1 值是: '..str:sha1(), 0)--计算"触动精灵" SHA1
  5. dialog('<'..binstr:tohex()..'> 的 SHA1 值是: '..binstr:sha1(), 0)计算“000102030405”的 SHA1

函数:aes128_encrypt、aes128_decrypt、base64_encode、base64_decode AES128、BASE64 编解码

函数名称:AES128、BASE64 编解码
函数功能:字符串 AES128、BASE64 编解码

脚本实例:

  1. local ts = require("ts")
  2. local msg = "\5\4\3\2\1\0"
  3. local key = "触动精灵"
  4. local emsg = msg:aes128_encrypt(key)
  5. local emsgb64 = emsg:base64_encode()
  6. dialog('二进制数据<'..msg:tohex()..'> \n 使用 AES128 算法 密钥 "'..key..'" 加密 值是: <'..emsg:tohex()..'> \n base64 串为 "'..emsgb64..'"', 0)
  7. local tmp = emsgb64:base64_decode()
  8. msg = tmp:aes128_decrypt(key)
  9. dialog('"'..emsgb64..'" base64 解码后的数据为 <'..tmp:tohex()..'> \n使用 AES128 算法 密钥 "'..key..'" 解密 值是: <'..msg:tohex()..'>', 0)

函数:split、rtrim、ltrim、trim、atrim 字符串分割过滤

函数名称:字符串分割过滤
函数功能:对字符串分割、过滤

脚本实例:
字符串分割及空白字符过滤

  1. local ts = require("ts")
  2. str = " 哈哈,he he,1,3,6 "
  3. new = str:split(",") --将字符串str按照 `,` 分割并返回一个TABLE
  4. dialog(new[2], 0)
  5. dialog(str:rtrim(), 0) -- 结果 " 哈哈,he he,1,3,6" ,删除字符串尾部的空白字符
  6. dialog(str:ltrim(), 0) -- 结果 "哈哈,he he,1,3,6 " ,删除字符串首部的空白字符
  7. dialog(str:trim(), 0) -- 结果 "哈哈,he he,1,3,6" ,删除字符串首尾的空白字符
  8. dialog(str:atrim(), 0) -- 结果 "哈哈,hehe,1,3,6" ,删除字符串所有的空白字符

名词解析:

空白字符包括:空格、制表符 \t 、换行符 \n\r

函数:fromgbk GBK 转 UTF8

函数名称:GBK 转 UTF8
函数功能:转码,GBK 转 UTF8

脚本实例:
将字符串从 GBK 编码转换到 UTF8 编码(需引擎版本 iOS v2.2.6 以上版本)

  1. require "ts"
  2. f = io.open("/var/mobile/Media/TouchSprite/lua/a.txt", "r")
  3. s = f:read("*a")
  4. f:close()
  5. dialog(s:fromgbk())

函数:toUTF8 unicode 转 utf8

函数名称:unicode 转 utf8
函数功能:转码,unicode 转 UTF8

脚本实例:

  1. --unicode utf8
  2. local ts = require "ts"
  3. local tmp = ts.json.totable([[{"toUTF8":"\u6211\u7231\u5a1c\u5a1c"}]])
  4. dialog(tmp["toUTF8"],0)

系统相关模块

函数: ts.system.resetNetWork 还原网络设置 (仅支持 iOS)

函数名称:ts.system.resetNetWork
函数功能:还原网络设置,仅支持 1.2.1 以上版本
函数方法
ts.system.resetNetWork()

※仅支持 iOS 8 及以上系统

脚本实例:

  1. local ts = require("ts")
  2. ts.system.resetNetWork()- 本函数仅支持 iOS 8 及以上系统,调用后会自动重启设备,请勿频繁调用

注意事项

  • 本函数仅支持 iOS8 及以上系统
  • 本函数调用后会自动重启设备,请勿频繁调用

函数: ts.system.udid 获取设备 UDID 码(仅支持 iOS)

函数名称:获取设备 UDID 码
函数功能:获取设备 UDID 码
函数方法
udid = ts.system.udid()
返回值:文本型 udid

返回值 类型 说明
udid string 设备 UDID

脚本实例:

  1. local ts = require("ts")
  2. udid = ts.system.udid() --获取设备的 UDID
  3. dialog(udid, 0)

函数: ts.system.serialnumber 获取设备序列号

函数名称:获取设备序列号(安卓不同的手机可能返回空值)
函数功能:获取设备序列号
函数方法
serialnumber = ts.system.serialnumber()
返回值:文本型 serialnumber
返回值 类型 说明
serialnumber string 设备序列号

脚本实例:

  1. local ts = require("ts")
  2. serialnumber = ts.system.serialnumber()--获取设备的序列号,安卓不同的手机可能返回空值
  3. dialog(serialnumber, 0)

注意事项:

安卓不同的手机可能返回空值

函数: ts.system.space 获取设备存储空间(仅支持 iOS)

函数名称:获取设备存储空间
函数功能:获取设备存储空间
函数方法
string = ts.system.space()
返回值 类型 说明
string string 剩余容量*G/总容量*G

脚本实例:

  1. local ts = require("ts")
  2. string = ts.system.space()
  3. dialog(string, 0)

函数: ts.system.wifimac 获取设备 WiFi MAC 地址

函数名称:获取设备 WiFi MAC地址
函数功能:获取设备 WiFi MAC地址
函数方法
wifimac = ts.system.wifimac()
返回值:文本型 wifimac
返回值 类型 说明
wifimac 文本型 设备 WiFi MAC 地址

脚本实例:

  1. local ts = require("ts")
  2. wifimac = ts.system.wifimac() --获取设备的 WiFi MAC 地址,安卓不同的手机可能返回空值
  3. dialog(wifimac, 0)

注意事项:

安卓不同的手机可能返回空值

函数: ts.system.btmac 获取蓝牙 MAC 地址

函数名称:获取蓝牙 MAC 地址
函数功能:获取设备蓝牙 MAC 地址
函数方法
btmac = ts.system.btmac()
返回值: btmac
返回值 类型 说明
btmac string 蓝牙 MAC 地址

脚本实例:

  1. local ts = require("ts")
  2. btmac = ts.system.btmac() --获取设备的蓝牙 MAC 地址,安卓不同的手机可能返回空值
  3. dialog(btmac, 0)

注意事项:

安卓不同的手机可能返回空值

函数: ts.system.osversion 获取系统版本号

函数名称:获取系统版本号
函数功能:获取设备系统版本号
函数方法
osversion = ts.system.osversion()
返回值: osversion
返回值 类型 说明
osversion string 设备系统版本号

脚本实例:

  1. local ts = require("ts")
  2. osversion = ts.system.osversion() --获取设备的系统版本号,安卓不同的手机可能返回空值
  3. dialog(osversion, 0)

注意事项:

安卓不同的手机可能返回空值

函数: ts.system.devicetype 获取详细型号

函数名称:获取详细型号
函数功能:获取设备详细型号
函数方法
producttype = ts.system.devicetype()
返回值 类型 说明
producttype string 设备详细型号

脚本实例:

  1. local ts = require("ts")
  2. producttype = ts.system.devicetype()--获取设备详细型号,安卓不同的手机可能返回空值
  3. dialog(producttype,0)
  4. --安卓返回的是手机型号
  5. --iOS 机型见附录对照表

注意事项:

安卓不同的手机可能返回空值

函数: ts.system.imei 获取 IMEI

函数名称:获取 IMEI
函数功能:获取设备 IMEI
函数方法
imei = ts.system.imei()
返回值 类型 说明
imei string 设备 IMEI

脚本实例:

  1. local ts = require("ts")
  2. imei = ts.system.imei() --获取设备 IMEI,安卓不同的手机可能返回空值
  3. dialog(imei,0)

注意事项:

安卓不同的手机可能返回空值

函数: ts.system.localwifiaddr 获取本地网络地址(仅支持 iOS)

函数名称:获取本地网络地址
函数功能:获取本地网络地址
函数方法
tab = ts.system.localwifiaddr()
返回值 类型 说明
tab table 本地网络地址,包含本地内部环回地址、蜂窝地址、本地 WiFi 地址

脚本实例:

  1. local ts = require("ts")
  2. local ret = ""
  3. for i,v in ipairs(ts.system.localwifiaddr()) do --获取本地网络地址
  4. ret = ret..(v[1]).."="..(v[2]).."\n"
  5. end
  6. dialog(ret,0)

注意事项:

ts.system.localwifiaddr() 将返回一个 TABLE,TABLE 中包含本地内部环回地址、蜂窝地址、本地 WiFi 地址。

函数: ts.getNetType 获取网络类型(仅支持 iOS)

函数名称:获取网络类型
函数功能:用于判断设备网络类型
函数方法:
ts.getNetType()

脚本实例:

  1. local ts = require("ts")
  2. nettype = ts.getNetType()
  3. dialog(nettype, 0)
返回值 类型 说明
type string 2G/3G/4G/WiFi/NO NETWORK

函数: ts.ms 毫秒级时间戳

函数名称:毫秒级时间戳
函数功能:返回毫秒级时间戳,用于精确计算时间
函数方法:
ts.ms()

脚本实例:

  1. local ts = require("ts")
  2. time =ts.ms()
  3. dialog(time, 0) --Unix时间戳
  4. --如需转换为标准时间格式
  5. print(os.date("%c",time))

文件操作类模块

函数:ts.hlfs.getFileEncoding 获取文本格式

函数名称:获取文本格式
函数功能:获取文本格式
函数方法:
ts.hlfs.getFileEncoding(filePath)
返回值:string form
参数 类型 说明
filePath string 文件路径
返回值 类型 说明
form string 文件格式

脚本示例

  1. local ts = require("ts")
  2. dialog(ts.hlfs.getFileEncoding(userPath().."/res/test3.txt"))--不支持相对路径

函数:ts.hlfs.codeConvert 转换文本格式

函数名称:转换文本格式
函数功能:转换文本格式
函数方法:
ts.hlfs.codeConvert(srcPath,dstPath,mode)
返回值:无
参数 类型 说明
srcPath string 原文件路径
dstPath string 保存后文件路径
mode string 文件格式:mode = 1,GB18030;mode = 2,GB2312;mode = 3,UTF-16

脚本示例

  1. local ts = require("ts")
  2. ts.hlfs.codeConvert(userPath().."/res/test.txt",userPath().."/res/test3.txt",1)--不支持相对路径

函数:ts.zip 文件压缩(仅支持 iOS)

函数名称:文件压缩
函数功能:文件压缩,生成压缩包
支持版本:仅 ts.so v1.2.1 以上版本支持
函数方法:
local fileList = {
{path1,bakpath1},
{path2,bakpath2},
{path3,bakpath3},
...
}
flag = ts.zip(zipPath,fileList)
参数 类型 说明
path string 压缩前文件路径,仅支持文件不支持目录
bakpath string 压缩包内文件路径,支持新建子目录
zipPath string 压缩包生成路径
fileList table 文件路径列表,仅支持文件不支持目录
返回值 类型 说明
flag boolean 成功返回 true,失败返回 false

脚本实例:

  1. local ts = require("ts")
  2. local root = userPath()
  3. io.open(root .. "/res/1.txt","w"):write("测试"):close()
  4. io.open(root .. "/res/2.txt","w"):write("测试"):close()
  5. io.open(root .. "/res/3.txt","w"):write("还是测试"):close()
  6. local fileList = {
  7. {root .. "/res/1.txt","1.txt"},
  8. {root .. "/res/2.txt","/file/2.txt"},
  9. {root .. "/res/3.txt","3.txt"}
  10. }
  11. flag = ts.zip(root .. "/res/测试.zip",fileList)
  12. if flag then
  13. dialog("压缩成功", time)
  14. else
  15. dialog("压缩失败", time)
  16. end

注意事项:

  • 添加到压缩包的文件名是中文的情况下会导致文件名乱码,请使用英文文件名

函数:ts.unzip 文件解压(仅支持 iOS)

函数名称:文件解压
函数功能:文件解压,解压压缩包
支持版本:仅 ts.so v1.2.1 以上版本支持
函数方法:
flag = ts.unzip(zipPath,filePath)
参数 类型 说明
zipPath string 压缩包路径
filePath string 解压路径
返回值 类型 说明
flag boolean 成功返回 true,失败返回 false

脚本实例:

  1. local ts = require("ts")
  2. ocal root = userPath()
  3. io.open(root .. "/res/1.txt","w"):write("测试"):close()
  4. io.open(root .. "/res/2.txt","w"):write("测试"):close()
  5. io.open(root .. "/res/3.txt","w"):write("还是测试"):close()
  6. local fileList = {
  7. {root .. "/res/1.txt","1.txt"},
  8. {root .. "/res/2.txt","/file/2.txt"},
  9. {root .. "/res/3.txt","3.txt"}
  10. }
  11. ts.zip(root .. "/res/测试.zip",fileList)
  12. zipPath = root .. "/res/测试.zip"
  13. filePath = root .. "/res/解压"
  14. flag = ts.unzip(zipPath,filePath)
  15. if flag then
  16. dialog("解压成功", time)
  17. else
  18. dialog("解压失败", time)
  19. end

注意事项:

  • 添加到压缩包的文件名是中文的情况下会导致文件名乱码,请使用英文文件名

函数:ts.tsDownload 下载文件

函数名称:下载文件
函数功能:下载文件到设备,支持 http 和 ftp
函数方法:
code,msg = ts.tsDownload(path,url)
参数 类型 说明
url string 下载URL
path string 保存路径
返回值 类型 说明
code number 状态码
msg string 下载状态

脚本实例:

  1. local ts = require("ts")
  2. code,msg = ts.tsDownload(userPath().."/res/1.jpg","http://p0.so.qhmsg.com/sdr/720_1080_/t01f0c2107148464d50.jpg")
  3. --同样支持ftp地址
  4. --"1.jpg"(如只填文件名,默认保存到触动 res 目录下)
  5. dialog(code,0)
  6. dialog(msg,0)

函数:ts.hlfs.getFileList 列出所有文件

函数名称:列出所有文件
函数功能:获取目录下所有文件列表,返回一个表
函数方法:
tableGet =ts.hlfs.getFileList(filePath)
参数 类型 说明
path string 目标目录的路径
返回值 类型 说明
tableGet table 目录下所有文件列表

脚本实例:

  1. local ts = require("ts")
  2. creatflag= ts.hlfs.makeDir("/var/mobile/hello") --新建文件夹
  3. io.open("/var/mobile/hello/test.txt","w"):write("测试"):close()--在 /var/mobile/hello 目录下创建一个 test.txt 的文件夹并写入“测试”这个字符串
  4. io.open("/var/mobile/hello/test2.txt","w"):write("测试2"):close()
  5. tableGet = ts.hlfs.getFileList("/var/mobile/hello") --列出 hello 文件夹下所有文件
  6. if tableGet then
  7. for i,v in pairs(tableGet) do
  8. dialog(string.format("%s = %s",i,v),1)
  9. mSleep(3000)
  10. end
  11. else
  12. dialog("没有此文件夹")
  13. end

函数:ts.hlfs.removeEntryDir 删除空文件夹

函数名称:删除空文件夹
函数功能:删除空文件夹
函数方法:
status = ts.hlfs.removeEntryDir(filePath)
参数 类型 说明
path string 文件夹路径
返回值 类型 说明
status boolean 是否删除成功

脚本实例:

  1. local ts = require("ts")
  2. creatflag= ts.hlfs.makeDir("/var/mobile/hello") --新建文件夹
  3. status = ts.hlfs.removeEntryDir("/var/mobile/hello")--删除 hello 文件夹
  4. if status then
  5. dialog("删除成功")
  6. else
  7. dialog("删除失败或没有此文件夹")
  8. end

函数:ts.hlfs.removeDir 删除文件夹及所有的文件

函数名称:删除文件夹及所有的文件
函数功能:删除文件夹及里面的文件
函数方法:
status = ts.hlfs.removeDir(filePath)
参数 类型 说明
path string 路径
返回值 类型 说明
status boolean 返回文件夹是否删除成功

脚本实例:

  1. local ts = require("ts")
  2. creatflag= ts.hlfs.makeDir("/var/mobile/hello") --新建文件夹
  3. io.open("/var/mobile/hello/test.txt","w"):write("测试"):close()--在 /var/mobile/hello 目录下创建一个 test.txt 的文件夹并写入“测试”这个字符串
  4. status = ts.hlfs.removeDir("/var/mobile/hello")--删除 hello 文件夹及所有文件
  5. if status then
  6. dialog("删除成功")
  7. else
  8. dialog("删除失败或没有此文件夹")
  9. end

函数:ts.hlfs.isDir 判断是否是文件夹

函数名称:判断是否是文件夹
函数功能:判断是否是文件夹
函数方法:
status = ts.hlfs.isDir(filePath)
参数 类型 说明
path stirng 路径
返回值 类型 说明
status boolean 返回判断结果

脚本实例:

  1. local ts = require("ts")
  2. creatflag= ts.hlfs.makeDir("/var/mobile/hello") --新建文件夹
  3. status = ts.hlfs.isDir("/var/mobile/hello")--判断 hello 是否是文件夹
  4. if status then
  5. dialog("这是一个文件夹")
  6. else
  7. dialog("这不是一个文件夹或没有此文件夹")
  8. end

函数:ts.hlfs.makeDir 新建文件夹

函数名称:新建文件夹
函数功能:新建文件夹
函数方法:
status = ts.hlfs.makeDir(filePath)
参数 类型 说明
path stirng 路径
返回值 类型 说明
status boolean 是否创建成功

脚本实例:

  1. local ts = require("ts")
  2. status = ts.hlfs.makeDir("/var/mobile/hello") --新建文件夹
  3. if status then
  4. dialog("创建成功")
  5. else
  6. dialog("创建失败")
  7. end

函数:ts.hlfs.copyDir 复制文件夹及所有文件

函数名称:复制文件夹及所有文件
函数功能:复制文件夹及所有文件,并把数据拷贝到新的文件夹路径下
函数方法:
status = ts.hlfs.copyDir(oldpath,newpath)
参数 类型 说明
oldpath stirng 要拷贝的文件路径
newpath stirng 新的文件路径
返回值 类型 说明
status boolean 复制是否成功

脚本实例:

  1. local ts = require("ts")
  2. creatflag= ts.hlfs.makeDir("/var/mobile/hello") --新建文件夹
  3. io.open("/var/mobile/hello/test.txt","w"):write("测试"):close()--在 /var/mobile/hello 目录下创建一个 test.tx t的文件夹并写入“测试”这个字符串
  4. status = ts.hlfs.copyDir("/var/mobile/hello","/var/hello") --复制文件夹及里面所有文件
  5. if status then
  6. dialog("复制成功")
  7. else
  8. dialog("复制失败")
  9. end

函数:ts.hlfs.copyFile 复制文件

函数名称:复制文件
函数功能:复制单个文件,并把拷贝到新的目录下
函数方法:
status = ts.hlfs.copyFile(oldpath,newpath)
参数 类型 说明
oldpath stirng 要拷贝的文件路径
newpath stirng 新的文件路径
返回值 类型 说明
status boolean 复制是否成功

脚本实例:

  1. local ts = require("ts")
  2. io.open("/var/mobile/hello/test.txt","w"):write("测试"):close()--在 /var/mobile/hello 目录下创建一个 test.txt 的文件夹并写入“测试”这个字符串
  3. creatflag= ts.hlfs.makeDir("/var/mobile/hello") --新建文件夹
  4. status = ts.hlfs.copyFile("/var/mobile/hello/test.txt","/1.txt") --复制文件
  5. if status then
  6. dialog("复制成功")
  7. else
  8. dialog("复制失败")
  9. end

函数:PLIST 文件操作(仅支持 iOS)

函数名称:plist.read、plist.write
函数功能:PLIST文件读取、写入
函数方法:
tmp2 = plist.read(plfilename)
返回值 TABLE
plist.write(plfilename, tmp2)

脚本实例:

  1. --读取键值
  2. local ts = require("ts")
  3. local plist = ts.plist
  4. local plfilename = "/var/mobile/Library/Caches/com.apple.mobile.installation.plist" --设置plist路径
  5. local tmp2 = plist.read(plfilename) --读取 PLIST 文件内容并返回一个 TABLE
  6. dialog(tmp2.Metadata.ProductBuildVersion, 0) --显示 ProductBuildVersion 的键值
  1. --写入键值
  2. local ts = require("ts")
  3. local plist = ts.plist
  4. local plfilename = "/var/mobile/Library/Caches/com.apple.mobile.installation.plist" --设置plist路径
  5. local tmp2 = plist.read(plfilename) --读取 PLIST 文件内容并返回一个 TABLE
  6. tmp2["Metadata"]["ProductBuildVersion"] = "havonz" --将表中ProductBuildVersion键值改为havonz
  7. plist.write(plfilename, tmp2) --将修改后的表写入 PLIST 文件

注意事项:

  1. 实例代码仅做为参考,实际调试中请将文件路径替换为实际存在的文件路径。
  2. 对于个别重要的 PLIST 文件,请谨慎使用写入功能或在运行脚本前进行备份。
  3. 需要注意的是,nib 文件作为一种特殊的 PLIST 文件格式,不能被正确的读取。

数据操作类

注意事项:

1.数据操作 config 类,所有的数据操作,必须以 open 开始,以 close 结束。

函数: ts.config.open 打开数据存储文件(仅支持 iOS)

函数名称:打开数据存储文件
函数功能:创建并初始化数据流
函数方法:
ts.config.open(path)
参数 类型 说明
path string 创建并初始化的文件路径

函数: ts.config.close 关闭数据流(仅支持 iOS)

函数名称:关闭数据流
函数功能:完成数据操作,必须执行此的函数
函数方法:
ts.config.close(flag)
参数 类型 说明
flag boolean true 表示提交之前操作,false 表示不提交之前操作,一般填 true

函数: ts.config.save 数据存储(仅支持 iOS)

函数名称:数据存储
函数功能:通过指定索引和索引值存储数据
函数方法:
ts.config.save(key,value)
参数 类型 说明
key string 索引
value string/number/boolean/table 索引对应的数据

脚本实例:

  1. local ts = require("ts")
  2. ts.config.open("/var/coc.plist")
  3. --打开一个plist文件,如果文件不存在,将自动创建该文件,同时只允许打开一个
  4. --此函数为初始化函数,所有 config 操作第一步必须以 open 开始并且以 close 结尾
  5. ts.config.save("金币数",999)
  6. --存储lua中的number string nil boolean table类型(不允许嵌套 table
  7. --ps:键值对(key-value)是一种存储格式,一个 key 对应一个 value
  8. --此处代表“金币数”是 key999 value,将存入此键值对
  9. ts.config.close(true)
  10. --必要函数,参数为true,操作结束后必须以此函数结尾,
  11. dialog(coin,0)
  12. --结尾后,此处才可输出 coin 值或删除“金币数”对应的值

函数: ts.config.get 获取数据(仅支持 iOS)

函数名称:获取数据
函数功能:通过索引获取数据
函数方法:
string = ts.config.get(key)
参数 类型 说明
key string
返回值 类型 说明
string string 通过索引获取之前存储的数据

脚本实例:

  1. local ts = require("ts")
  2. ts.config.open("/var/coc.plist")
  3. --打开一个plist文件,如果文件不存在,将自动创建该文件,同时只允许打开一个
  4. --此函数为初始化函数,所有 config 操作第一步必须以 open 开始并且以 close 结尾
  5. ts.config.save("金币数",999)
  6. --存储lua中的number string nil boolean table类型(不允许嵌套 table
  7. --ps:键值对(key-value)是一种存储格式,一个 key 对应一 value
  8. --此处代表“金币数”是 key999 value,将存入此键值对
  9. coin = ts.config.get("金币数")
  10. --获取键对应的值, 此处代表获取“金币数”所对应的值 coin = 999
  11. --但是此处暂时获取不到 coin 值,因为操作还没结束,请继续往下阅读
  12. ts.config.close(true)
  13. --必要函数,参数为 true,操作结束后必须以此函数结尾,
  14. dialog(coin,0)
  15. --结尾后,此处才可输出 coin 值或删除“金币数”对应的值

函数: ts.config.delete 删除数据(仅支持 iOS)

函数名称:删除数据
函数功能:通过键值删除数据
函数方法:
ts.config.delete(key)
参数 类型 说明
key string

脚本实例:

  1. local ts = require("ts")
  2. ts.config.open("/var/coc.plist")
  3. --打开一个 PLIST 文件,如果文件不存在,将自动创建该文件,同时只允许打开一个
  4. --此函数为初始化函数,所有 config 操作第一步必须以 open 开始并且以 close 结尾
  5. ts.config.save("金币数",999)
  6. --存储lua中的number string nil boolean table类型(不允许嵌套 table
  7. --ps:键值对(key-value)是一种存储格式,一个 key 对应一个 value
  8. --此处代表“金币数”是 key999 value,将存入此键值对
  9. coin = ts.config.get("金币数")
  10. --获取键对应的值, 此处代表获取“金币数”所对应的值 coin = 999
  11. --但是此处暂时获取不到 coin 值,因为操作还没结束,请继续往下阅读
  12. ts.config.delete("金币数")
  13. --删除这个键值对应的 value 值,此处代表把 999 变成 nil
  14. --但是此处暂时删除不掉 value 值,因为操作还没结束,请继续往下阅读
  15. ts.config.close(true)
  16. --必要函数,参数为 true,操作结束后必须以此函数结尾,
  17. dialog(coin,0)
  18. --结尾后,此处才可输出 coin 值或删除“金币数”对应的值

函数: ts.dborder 数据库操作

函数名称:数据库操作
函数功能:利用 sql 语句对数据库进行操作,支持增删改查操作
iOS 函数方法:
ts.dborder(path,order,Binary Parameters)
Android 函数方法:
ts.dborder(path,order)

iOS 参数和返回值

参数 类型 说明
path 文本型 数据库文件路径
order string sql 语句命令
Binary Parameters table 二进制参数
返回值 类型 说明
status string 数据操作结果
result table 查询结果

iOS 脚本实例:

  1. local ts = require("ts")
  2. --没有二进制参数的命令,无需第三个参数
  3. status = ts.dborder("/var/1.db","insert into stu_msg(ID, name, time) values(0, '华罗庚', 2)")
  4. --含有二进制参数的命令,第三个参数为table格式
  5. --注意:order命令里,涉及到二进制的参数,统一用英文问号(?)代替,然后在第三个参数里填二进制参数,一个问号仅对应一个二进制参数
  6. --iOS 和安卓使用有所差异
  7. status = ts.dborder("/var/1.db","insert into stu_msg(ID, name, picture) values(0, '华罗庚', ? ,?)",{a,b})
  8. --查询表中内容
  9. local result,msg = ts.dborder(userPath().."/res/LuaData.db","select * from ACCOUNT_INFO")

Android 参数和返回值

参数 类型 说明
path string 数据库文件路径
order string sql 语句命令
返回值 类型 说明
status string 数据操作结果
result table 查询结果

Android 脚本实例:

  1. local ts = require("ts")
  2. status = ts.dborder("/data/data/com.android.providers.contacts/databases/contacts2.db","insert into data(package_id, mimetype_id, raw_contact_id,is_read_only,is_primary,is_super_primary,data_version,data1,data2,data3,data4) values(1,1,1,1,1,1,1, '华罗庚','华罗庚','','110')")--增加
  1. local ts = require("ts")
  2. status,table = ts.dborder("/data/data/com.android.providers.telephony/databases/mmssms.db","select * from sms where thread_id=6")--查询

附录

历史版本

平台 版本 备注 更新日期 下载
iOS v1.2.3 历史版本 2017-10-13 iOS-v1.2.3
iOS v1.2.4.1 历史版本 2017-11-14 iOS-v1.2.4.1
iOS v1.3.0 历史版本 2018-01-30 iOS-v1.3.0
iOS v1.3.1 历史版本 2018-03-20 iOS-v1.3.1
iOS v1.3.4 历史版本 2018-04-20 iOS-v1.3.4
安卓真机 v1.1.0 适用于触动安卓 v2.3.0 及以上版本 2017-12-01 安卓真机-v1.1.0
安卓模拟器 v1.1.0 适用于触动安卓 v2.3.0 及以上版本 2017-12-29 安卓模拟器-v1.1.0

iOS 机型对照表

  1. -----------iPhone-----------
  2. iPhone 2,1 (iPhone 3GS 产品型号:国行 - A1325 ;国际版 - A1303
  3. iPhone 3,1 (iPhone 4 GSM 产品型号:A1332 )
  4. iPhone 3,2 (iPhone 4 8G 新制程版,目前新出的国行 8G 版均为此型号,型号同为: A1332)
  5. iPhone 3,3 (iPhone 4 CDMA 产品型号:A1349 )
  6. iPhone 4,1 (iPhone 4S 产品型号:A1387(电信版&国际版);A1431(联通专用型号) )
  7. iPhone 5,1 (iPhone 5 产品型号: A1428 - 3G+4G+GSM )
  8. iPhone 5,2 (iPhone 5 产品型号: A1429;中国电信定制版- A1442 - 3G+4G+GSM+CDMA )
  9. iPhone 5,3 (iPhone 5C 产品型号: A1532 A1456 CDMA)
  10. iPhone 5,4 (iPhone 5C 产品型号: A1526 A1529 A1507 GSM)
  11. iPhone 6,1 (iPhone 5S 产品型号: A1533 A1453 CDMA)
  12. iPhone 6,2 (iPhone 5S 产品型号: A1528 A1530 A1457 GSM)
  13. iPhone 7,1 (iPhone 6 Plus)
  14. iPhone 7,2 (iPhone 6)
  15. iPhone 8,1 (iPhone 6S)
  16. iPhone 8,2 (iPhone 6S Plus)
  17. iPhone 8,3 (iPhone SE)
  18. iPhone 8,4 (iPhone SE)
  19. iPhone 9,1 (iPhone7)
  20. iPhone 9,2 (iPhone7 Plus)
  21. --------iPod Touch--------
  22. iPod4,1 (iPod touch4 产品型号:A1367 )
  23. iPod5,1 (iPod touch5 产品型号:A1421 )
  24. iPod7,1 (iPod Touch6G)
  25. --------iPad--------
  26. iPad 2,1 (产品型号:A1395 - iPad2 Wi-Fi )
  27. iPad 2,2 (产品型号:A1396 - iPad2 Wi-Fi+3G+GSM )
  28. iPad 2,3 (产品型号:A1397 - iPad2 Wi-Fi+3G+GSM+CDMA )
  29. iPad 2,4 (产品型号:iPad 2 Wi-Fi rev_a 新制程版 )
  30. iPad 3,1 (产品型号:A1416 NewPad - iPad3 Wi-Fi )
  31. iPad 3,2 (产品型号:A1403 NewPad - iPad3 Wi-Fi+3G+GSM+CDMA )
  32. iPad 3,3 (产品型号:A1430 NewPad - iPad3 Wi-Fi+3G+GSM )
  33. iPad 2,5 (产品型号:A1432 - iPad Mini Wi-Fi )
  34. iPad 2,6 (产品型号:A1454 - iPad Mini Wi-Fi+3G+4G+GSM )
  35. iPad 2,7 (产品型号:A1455 - iPad Mini Wi-Fi+3G+4G+GSM+CDMA )
  36. iPad 3,4 (产品型号:A1458 - iPad4 Wi-Fi )
  37. iPad 3,5 (产品型号:A1459 - iPad4 Wi-Fi+3G+4G+GSM)
  38. iPad 3,6 (产品型号:A1460 - iPad4 Wi-Fi+3G+4G+GSM+CDMA )
  39. iPad 4,1 (iPad Air)
  40. iPad 4,2 (iPad Air)
  41. iPad 4,3 (iPad Air)
  42. iPad 5,3 (iPad Air2)
  43. iPad 5,4 (iPad Air2)
  44. iPad 4,4 (iPad Mini2)
  45. iPad 4,5 (iPad Mini2)
  46. iPad 4,6 (iPad Mini2)
  47. iPad 4,7 (iPad Mini3)
  48. iPad 4,8 (iPad Mini3)
  49. iPad 4,9 (iPad Mini3)
  50. iPad 5,1 (iPad Mini4)
  51. iPad 5,2 (iPad Mini4)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注