首页 > 其他分享 >懒人精灵写法

懒人精灵写法

时间:2024-11-02 20:33:24浏览次数:2  
标签:end .. 写法 精灵 懒人 import ocr local tmo

import('java.io.File')
import('java.lang.*')
import('java.util.Arrays')
import('android.content.Context')
import('android.hardware.Sensor')
import('android.hardware.SensorEvent')
import('android.hardware.SensorEventListener')
import('android.hardware.SensorManager')
import('com.nx.assist.lua.LuaEngine')
local w,h
w,h = getDisplaySize()
print(w,h) 
 
local loader = LuaEngine.loadApk("111222.apk")

local OCR = loader.loadClass("com.tomato.ocr.lr.OCRApi")
local tmo_ocr = OCR.init(LuaEngine.getContext())

local license = "TF70TX9SQEDJXUISSRNOPT3RPZJRDQKZ|K55DSIM3E82ZRKEKMDEGLF";
local flag = tmo_ocr.setLicense(license);
print(flag)
tmo_ocr.setRecType("ch-3.0")
tmo_ocr.setDetBoxType("rect")
tmo_ocr.setDetUnclipRatio(1.9)
tmo_ocr.setRecScoreThreshold(0.3)
tmo_ocr.setReturnType("json")
tmo_ocr.setBinaryThresh(0)

local w,h
w,h = getDisplaySize()
if w~=540 or h~=960 then
    print('分辨率540*960 才可以运行')
    stop()
end
 

function click_node()
    local sel = index(0):text(""):desc("文件夹:系统应用"):visibleToUser(true)
    local node = sel:findOne(10000)
    if node ~= nil then
        print(node:click())
    end

end
function find_text_click(x1, y1, x2, y2, wz,count)
    count = count or 0  -- 如果count未传入,则设置为0
    local type = 3;

    local bitmap = LuaEngine.snapShot(x1, y1, x2, y2)
    local result = tmo_ocr.ocrBitmap(bitmap, type)
    bitmap.recycle()

    local point = tmo_ocr.findTapPoint(wz)
    if point ~= "" then
        local json_point = jsonLib.decode(point)
        local center_x = json_point[1] + x1
        local center_y = json_point[2] + y1
        printEx('找到了' .. wz .. ': 坐标' .. center_x .. '  ' .. center_y .. ' 开始点击');
        tap(center_x, center_y)

    else

        printEx('未找到文字' .. wz)
        count = count + 1;
        sleep(2000)
        print('延迟2秒后继续找' .. count)
        find_text_click(x1, y1, x2, y2, wz,count)
    end

end

function recognize_text(x1, y1, x2, y2)
    local type = 3;

    local bitmap = LuaEngine.snapShot(x1, y1, x2, y2)
    local result = tmo_ocr.ocrBitmap(bitmap, type)
    bitmap.recycle()

    if result ~= "" then
        local json_result = jsonLib.decode(result) -- setReturnType为“json”时,返回的是json字符串,用jsonLib.decode解析
        for i, data in ipairs(json_result) do
            local location = data.location
            local score = data.score
            local words = data.words
            printEx('找到文字' .. words);
            return words;

        end

    else
        printEx('识别不了文字');
        return 0;
    end

end

function stop()
    exitScript()
end
function begintouch()
    print('开始滑动');
    touchDown(1, 297, 327)
    sleep(50)
    touchMoveEx(1, 297, 127, 2000)
    touchUp(1)

end
-- local ret, code = httpPost("https://wxserver.zhihuxuetang.cn/home/moban/testajax", "arg=123")
-- print(ret)

local function start()
    find_text_click(0, 0, 208, 397, '系统应用')

    text = recognize_text(79, 341, 209, 375)
    print(text);
end

return {
    start = start
}

 

标签:end,..,写法,精灵,懒人,import,ocr,local,tmo
From: https://www.cnblogs.com/newmiracle/p/18522421

相关文章

  • C语言的一些Hacking写法
    很显然,这些写法大多并不规范,也不被提倡。很显然,咱并没有在windows下试过这些代码,而且实测大部分在线编程网站用的是Linux,可以接受GNUC扩展支持。如果有人问我为什么折腾,为什么以折腾这些无聊的东西作为目标,那他们完全可以问,为什么要登上最高峰?为什么人类要登月?………我选择去折......
  • flask之cbv写法
    一、CBV介绍1、class-basedviews,CBVs通常使用函数视图(function-basedviews,FBVs)来定义路由和处理逻辑。不过,Flask也支持基于类的视图(class-basedviews,CBVs),这可以帮助在需要共享逻辑或管理复杂视图结构时组织代码。基于类的视图 CBV 的特点组织性:CBV方式可以更好......
  • 网络安全渗透测试写法
    xss谝:CSP:设置白名单,只允许特定来源的脚本和资源加载,阻止不在白名单中的脚本执行Content-Security-Policy:default-src'self';script-src'self';style-src'self';img-src'self'data:;XSS保护头X-XSS-Protection:1;mode=blockphp中使用htmlspecialc......
  • VUEJS实例中DATA属性的三种写法及区别是什么
    Vue.js是一种流行的JavaScript前端框架,用于构建交互式的用户界面。VUEJS实例中DATA属性的三种写法及区别是:1、独立性;2、推荐性;3、ES6语法。其中,独立性是指,使用函数返回一个对象的写法确保了每个组件实例都拥有独立的数据,不会相互影响。而直接使用对象声明DATA属性的写法会导致数......
  • C#中四舍五入的正确写法是什么?
    四舍五入是一种精确度的计数保留法。在取小数近似数的时候,如果尾数的最高位数字是4或者比4小,就把尾数去掉。如果尾数的最高位数是5或者比5大,就把尾数舍去并且在它的前一位进"1",这种取近似数的方法叫做四舍五入法。一、BUG回顾我们经常使用四舍五入时,会使用【Math.Round(价格,2......
  • SpringBoot 单元测试 - 登录认证在 Spring Boot 上的标准单元测试写法。
    ......
  • 分页写法3
    exportfunctiongetTaskPageList(query){returnrequest({url:'/XXX/getTaskPageList',method:'post',data:query})} @PostMapping("/getTaskPageList") publicRgetTaskPageList(Pagepage,@RequestBodyMap&......
  • 工程化爬虫的写法
    爬虫工程化是指将爬虫开发成一个稳定、可维护、可扩展的系统。这通常涉及到以下几个方面:模块化设计:将爬虫分解为多个模块,例如数据抓取、数据解析、数据存储、错误处理等。配置管理:使用配置文件来管理爬虫的参数,如目标URL、请求头、代理服务器等。异常处理:合理处理网络请......
  • 009 el和data的两种写法
    Vue实例带$的是给程序员用的,其他是Vue底层相关注意el的两种写法是随意的,但是data的两种写法我们写函数式我们一般简写时删掉function,删掉冒号......
  • 茴香豆的茴有四种写法,那二分有几种写法?
    《编程珠玑》一书的作者JonBentley曾经说过:“90%的程序员无法正确实现二分查找算法...”,今天,本文将带领你会写二分。经典写法现在我们来求解这样一个通用的二分查找问题:有一个不下降序列$a$,我们要从其中所有找到大于等于$k$的数的最小的下标。boolcheck(intindex)......