扫码结果回调消息
声明
thread.register_event("xxtouch.scan_code_callback", function(val)
local ret = json.decode(val) -- 返回的是一个 json 字符串
if (ret.type == "org.iso.QRCode") then
-- 扫到一个二维码回调 ret.string 是结果
else
-- 其它类型回调可以根据 ret.type 来区分
end
end)
状态
- val
- 当使用扫码器扫到一个能识别的值时,以 xxtouch.scan_code_callback 标识的进程队列词典会推入这个值以及它的相关信息
说明
当扫码器扫到一个能识别的值的时候,这个消息标识的进程队列词典会推入一个状态
示例
-- 清空消息队列
proc_queue_clear("xxtouch.scan_code_callback")
--
local success = utils.open_code_scanner()
if not success then
sys.alert("可以于 “设置-通用-访问限制” 中取消 “相机” 的访问限制", 0, "无法访问系统相机")
return
end
--
sys.toast("脚本从现在开始监扫码结果事件,二十秒后取消监听")
--
-- 开始建立监听回调
local eid = thread.register_event("xxtouch.scan_code_callback", function(val)
local ret = json.decode(val)
if (ret.type == "org.iso.QRCode") then
sys.toast("扫到一个二维码\n"..ret.string)
else
sys.toast("扫到一个条码\n"..ret.string)
end
end)
--
sys.msleep(20000) -- 等待 20 秒
--
-- 反注册回调函数,如果不反注册监听,那么脚本不会在此结束
thread.unregister_event("xxtouch.scan_code_callback", eid)
注:上述代码中使用了非本章函数 utils.open_code_scanner
、sys.toast
、sys.msleep
、proc_queue_clear
、thread.register_event
、
thread.unregister_event
、json.decode