Repository navigation
MoonClicker v0.3.0
0.3 的主角是 OCR:腳本可以讀取與等待畫面上的文字,補足模板比對處理不了的動態文字(數值、倒數、會變的標籤)。新使用者也不必再碰電腦或 UserService,裝好 App 就能跑起內建的範例腳本。
從安裝到跑起範例、寫第一支腳本的步驟見 Wiki。
新功能
- OCR:ONNX Runtime+PP-OCRv6 small,全部在裝置上執行。元件約 39 MB,到「設定 → 文字辨識(OCR)」下載;第一次使用時自動選擇執行緒數,也可以手動調整、重新測試速度。
- 內建範例腳本:「腳本」頁右下角 + →「範例腳本」。YouTube Rickroll 在虛擬顯示器上搜尋並播放影片、略過廣告、拖曳進度條,再用 OCR 讀時間確認。
- UserService 自動啟停:需要時自動啟動,沒有腳本執行、也沒有虛擬顯示器時自動停止,設定頁只剩 Shizuku 授權。
- VS Code 腳本工作台(vscode-v0.3.0):
- 連線時與本機資料夾雙向同步整個腳本資料夾,連線期間即時同步。
- 側邊欄直接列出腳本,狀態列顯示執行中的腳本,可以直接停止。
- Workbench 面板新增 OCR 測試:框選範圍即時顯示辨識出的文字、位置與信心度。
.moonclickerignore排除不推上裝置的檔案。
Lua API
vision的請求新增text(與image擇一),find、wait、find_any、wait_any都能找文字。vision.read(roi)、vision.read_lines([roi]):讀出範圍內的文字與位置。vision.find_any(requests):與wait_any對稱,只比對一次。vision.wait、vision.wait_any新增選填的step_ms,降低比對頻率。input.text(text):輸入 ASCII 文字。app.list():列出各顯示器上執行中的 app。app.mute(package_name, muted):讓單一 app 不出聲、不搶音訊焦點。script.json的display.keyboard:設成false時,顯示器上的 app 不綁定輸入法,input.text不會被注音之類的輸入法組字。
完整說明見 docs/lua-api.md。
行為變更
- Lua API 的失敗分成兩種:操作本身沒成功(例如 app 未安裝、按鍵被系統拒絕)照舊回
false;服務斷線、裝置不支援等基礎設施失敗改為拋出 Lua error。以前把這類失敗當成false處理的腳本,現在會在那一行停下並顯示原因。 - 第一次呼叫
vision.*時會等到第一張影格才比對,腳本開頭不必再自己sleep。
修正
- 部分裝置的 H.264 encoder 無法設定,鏡像串流開不起來。
- 裝置不支援次要顯示器時,
app.launch改為拋錯,全螢幕選單顯示提示,不再沒有反應。 - 畫面靜止時不再重複分發相同的影格,降低鏡像與比對的負擔。
- 全螢幕預覽、H.264 串流、
vision的 surface 改由各自的 client 擁有,client 結束時一定釋放。
已知問題
- Android 17 上虛擬顯示器會跟主螢幕一起休眠,主螢幕關閉時
vision.*拿不到畫面。
下載
一般手機選 arm64-v8a。x86、x86_64 給模擬器使用。
Full Changelog: v0.2.2...v0.3.0