基于AutoJS軟件實現(xiàn)螞蟻森林自動收集能量

簡介

可以每天定時收集能量,不用再起早貪黑的收能量偷能量了巩那。==> GitHub項目地址https://github.com/TonyJiangWJ/Ant-Forest

基于 Autojs 的螞蟻森林自動收能量腳本,采用 4.1.1 Alpha2 版本開發(fā)此蜈。解鎖模塊參考自:https://github.com/e1399579/autojs

  • 腳本執(zhí)行依賴于:AutoJs 4.1.1 alpha2 or AutoJS Modify 若無法訪問請百度搜索一下

  • 設(shè)備系統(tǒng)要求

    • 具有 ROOT 權(quán)限的安卓 5.0 及以上版本
    • 沒有 ROOT 權(quán)限的安卓 7.0 及以上版本
  • 覺得本項目好用的話請給個star吧~

其他腳本

使用

  • 下載安裝 AutoJs 4.1.1 alpha2 or AutoJS Modify 之后把整個腳本項目放進 "/sdcard/腳本/" 文件夾下面。打開軟件后下拉刷新裆赵,然后運行項目或者 main 即可东囚。
  • 給與軟件必要權(quán)限 后臺彈出界面顯示懸浮窗战授、自啟動页藻、電量無限制,并將軟件保持后臺運行
  • 定時啟動腳本植兰,點擊 main.js 的菜單份帐,選擇 更多 定時任務(wù) 即可配置定時啟動
  • 如果運行提示有任務(wù)正在隊列中,請運行配置 可視化配置.js 然后進到 進階配置 中勾選 單腳本運行钉跷,該功能是用于多個腳本同時運行時的任務(wù)隊列 相當(dāng)于一個調(diào)度程序弥鹦,避免多個腳本搶占前臺導(dǎo)致出錯
  • 默認配置下已開啟基于圖像識別的方式來執(zhí)行,當(dāng)前因為森林更新基于控件方式基本不再可用爷辙,后續(xù)會直接移除相關(guān)代碼彬坏。更多配置信息見配置小節(jié)
  • 運行有問題請查看#常見問題小節(jié)
  • 不同手機的解鎖方法不同可能不適配,需要自行編寫解鎖方法膝晾,具體見#添加解鎖設(shè)備小節(jié)

配置

運行 可視化配置.js 后可以看到如下配置:

  • 常用配置都在基本配置中栓始,可以設(shè)置懸浮窗顏色 位置等

  • 運行配置后右上角菜單可以重置所有配置信息為默認值

  • 配置導(dǎo)出導(dǎo)入功能,點擊右上角菜單即可導(dǎo)出當(dāng)前配置到local_config.cfg中血当,默認已加密加密密碼為device.getAndriodId() 如果需要在免費版和付費版AutoJS之間同步 需要自行輸入密碼

  • 運行時數(shù)據(jù)導(dǎo)出導(dǎo)入功能同上所述

  • 重要 基于圖像分析模式必須按如下配置幻赚,否則腳本無法正常執(zhí)行

  • 偶爾會出現(xiàn)好友首頁的能量球無法通過控件識別(大概率是以后的常態(tài)了)禀忆,請進行如下配置:

  • 直接進入排行榜后運行 test/MockDetect.js 得到具體像素點個數(shù),分析倒計時和小手的個數(shù)差異落恼,設(shè)置為他們的一個區(qū)分點箩退,比如大多數(shù)倒計時像素點個數(shù)大于1900,而小手像素點個數(shù)小于1900佳谦,則設(shè)置 小手像素點個數(shù) 為1900即可戴涝。 新版本不再需要配置,如果自動識別失敗钻蔑,請手動開啟 基于像素點個數(shù)判斷小手 并配置像素點閾值

  • 在運行可視化配置.js之后進入 進階配置 直接點擊 實時查看可視化配置信息 按鈕來刷新配置并顯示當(dāng)前的框選區(qū)域啥刻。也可以在配置完之后可以運行test/全局懸浮窗顯示-配置信息.js 查看配置生效狀況,可在 resources 目錄下截圖保存 region_check.jpg 咪笑,然后可以懸浮窗顯示半透明信息可帽,方便在運行 可視化配置.js 時拖動進度條快速調(diào)整具體區(qū)域

  • 勾選 拖動輸入?yún)^(qū)域 可以顯示可拖動進度條

  • 請確保框選區(qū)域符合如下樣例

  • 排行榜區(qū)域框選如下所示 排行榜識別區(qū)域現(xiàn)在可以運行時自動設(shè)置窗怒,該配置為自定義優(yōu)化保留
    [圖片上傳失敗...(image-b6ce75-1616084744663)]

  • 底部區(qū)域框選住 的上半部分映跟;或者選擇其他區(qū)域,并配置相應(yīng)的顏色值兜粘,比如 邀請 按鈕 當(dāng)前可以在運行時自動設(shè)置申窘,該配置為自定義優(yōu)化保留
    [圖片上傳失敗...(image-c80af4-1616084744663)]

  • 其他配置信息請運行 可視化配置.js

功能

  • 自動匹配不同系統(tǒng)下自動化的方式,安卓 7 及以上可以通過無障礙服務(wù)模擬操作孔轴,7以下版本需要通過 root 權(quán)限模擬操作剃法;

  • 自動識別屏幕鎖定方式并根據(jù)配置的密碼解鎖,支持圖形解鎖路鹰,PIN 解鎖贷洲,混合密碼解鎖;特殊設(shè)備需要自行擴展晋柱,具體見#添加解鎖設(shè)備小節(jié)

  • 同時支持支付寶手勢解鎖

  • 識別自己能量球的倒計時优构,和好友列表中的倒計時做對比,取最小值作為下次收取的等待時間雁竞;

  • 識別好友能量罩钦椭,下一次收取時跳過開啟能量罩的好友;

  • 默認使用倒計時收取碑诉,可通過配置打開循環(huán)收缺肭弧;

  • 可選擇永不停止模式进栽,無倒計時或超過激活時間(激活時間可以設(shè)置為隨機范圍)則在激活時間之后繼續(xù)執(zhí)行德挣,否則按倒計時時間等待,實現(xiàn)全天不間斷收集快毛;

  • 根據(jù)設(shè)置選擇是否幫助好友收取能量格嗅;

  • 根據(jù)白名單實現(xiàn)不收取特定好友能量番挺;

  • 可以設(shè)定收取達到一定閾值后自動澆水回饋 默認閾值當(dāng)日收集超過40克即澆水一次,同時可配置不澆水回饋的黑名單

  • 澆水回饋數(shù)量可配置屯掖,可選:10 18 33 66

  • 腳本運行時可以顯示懸浮窗展示當(dāng)前狀態(tài)

  • 開始收集的時候按 音量減 可以延遲五分鐘再執(zhí)行玄柏,適合需要使用手機的時候使用,按 音量加 則關(guān)閉腳本終止執(zhí)行

  • 收取完畢后懸浮框顯示收取的能量數(shù)量

  • 可以自動打開無障礙贴铜,需要配合adb賦權(quán)禁荸,不同的軟件請自行替換包名: Pro版為 org.autojs.autojspro 可以通過 context.getPackageName() 獲取

      adb shell pm grant org.autojs.autojs android.permission.WRITE_SECURE_SETTINGS
    
  • 通過ADB授權(quán)腳本自動獲取無障礙權(quán)限

  • 提供了在線OCR識別服務(wù),用于識別倒計時數(shù)字阀湿,如果覺得準確率欠佳可以選擇申請百度OCR接口權(quán)限

  • ROOT設(shè)備可以實現(xiàn)自動鎖屏,非ROOT設(shè)備需要擴展鎖屏方法瑰妄,具體見#添加自定義鎖屏代碼陷嘴,默認實現(xiàn)的是下拉狀態(tài)欄中指定位置放了個鎖屏按鍵

  • 腳本更新 可以執(zhí)行update/檢測更新.js

  • 相對完善的基于圖像分析的收取,倒計時無法直接獲取间坐,請申請百度識圖API或者通過永不停止模式來定時輪詢灾挨。另外注意永不停止模式不要全天運行,1-6點執(zhí)行無意義且可能封號竹宋。

  • 加入開關(guān)劳澄,可以自動識別基于圖像分析還是控件分析,好友數(shù)較多的建議直接使用圖像分析

  • 個人首頁蜈七、好友首頁等等都是基于控件信息識別的秒拔,如使用英文版的請運行配置,修改 控件文本配置 中的控件文本信息飒硅,中文版識別失敗的也需要自行配置

  • 可以將配置數(shù)據(jù)以及運行時數(shù)據(jù)進行導(dǎo)入和導(dǎo)出砂缩,內(nèi)容通過AES加密,默認密碼是 device.getAndroidId()三娩,因此僅本機可用庵芭。如果需要跨設(shè)備或者免費版和Pro版之間備份,自行獲取 device.getAndroidId() 然后根據(jù)提示輸入即可

  • 通話狀態(tài)監(jiān)聽雀监,當(dāng)通話中或者來電時自動延遲五分鐘執(zhí)行双吆,需要授予AutoJS軟件獲取通話狀態(tài)的權(quán)限[該功能暫不可靠,且Pro版無法使用]

  • 可以配置在鎖屏狀態(tài)下判斷設(shè)備姿勢会前,防止在褲兜內(nèi)誤觸(基于重力加速度傳感器)

  • 加入了基于百度文字識別的接口 來識別倒計時數(shù)據(jù)

    • 通用文字識別
    • 經(jīng)過測試通用文字識別沒法識別好乐,但是網(wǎng)絡(luò)圖片識別接口可用,但是可惜的是每天只有500次的免費調(diào)用機會
    • 因此設(shè)置中加入了對倒計時綠色像素點的判斷回官,像素點越多則代表倒計時的數(shù)值越小曹宴,這個時候可以進一步通過百度的接口判斷實際的時間
    • 具體運行可視化配置.js 勾選百度OCR識別然后填寫你申請的APIKey和SecretKey即可,上面的閾值隨你設(shè)置歉提,反正記住每天只有500次就對了
    • 注意APIKey和SecretKey一定要自己進入AI平臺申請笛坦,不填寫是無效的
  • unit 下提供了多個自定義模式的切換腳本区转,執(zhí)行后會自動打斷當(dāng)前運行中的腳本然后按新的設(shè)置啟動。

    • 自定義1永不停止.js 25-35分鐘的隨機范圍輪詢一次版扩,有倒計時按倒計時時間執(zhí)行废离,適合9-23點〗嘎可以對它設(shè)置每天9點的定時任務(wù)
    • 自定義2計時停止.js 按倒計時時間執(zhí)行蜻韭,最長等待時間60分鐘,適合早上執(zhí)行和晚上23點執(zhí)行柿扣,避免0點后繼續(xù)無意義的永不停止肖方。可以對它設(shè)置7點未状、23點以及0點的定時任務(wù)
    • 自定義3循環(huán)千次只收自己.js 循環(huán)收集自己的俯画,適合自己能量快要生成的時候執(zhí)行,因為每天步行能量生成時間是固定的司草,因此在生成前一分鐘設(shè)置定時任務(wù)即可艰垂,然后再設(shè)置2分鐘后的定時任務(wù)自定義2計時停止.js
    • 其他自定義方式請自行創(chuàng)建,內(nèi)容參考以上文件和config.js中的字段

循環(huán)/計時模式埋虹、永不停止模式等詳細說明

  • 循環(huán)模式:腳本會根據(jù)設(shè)置的次數(shù)不間斷的循環(huán)執(zhí)行直到當(dāng)前執(zhí)行了指定次數(shù)之后便會停止猜憎。
  • 計時模式:當(dāng)關(guān)閉循環(huán)模式,且不開啟永不停止模式時搔课,啟用計時模式胰柑。計時模式需要設(shè)置最大等待時間,默認為60分鐘辣辫,腳本執(zhí)行時會通過OCR識別排行榜中的倒計時時間旦事,如果得到的最小倒計時時間小于最大等待時間,那么腳本將會按識別到的最小倒計時計時啟動急灭,否則腳本將退出執(zhí)行姐浮。
  • 永不停止模式:關(guān)閉循環(huán)模式并開啟永不停止,此時需要設(shè)置重新激活時間葬馋,當(dāng)識別到的倒計時時間小于這個重新激活時間時卖鲤,腳本會按實際倒計時計時啟動,當(dāng)識別到的倒計時時間大于重新激活時間時畴嘶,則按重新激活時間來計時啟動蛋逾。以此循環(huán)實現(xiàn)全天不間斷的執(zhí)行。這個重新激活時間可以設(shè)置為一個隨機范圍窗悯,每次判斷都會在指定范圍內(nèi)生成一個隨機的時間区匣。
  • 以上計時模式和永不停止模式依賴于OCR的正常運行,如果設(shè)備分辨率為1080P的建議直接將自建OCR識別和百度OCR識別關(guān)閉蒋院,此時會啟用模擬的識別亏钩,準確率和速度都相較OCR來說更理想莲绰。其他分辨率設(shè)備則沒怎么測試過,自行斟酌姑丑。

常見問題

  • 可視化配置.js 執(zhí)行異常蛤签,運行 unit/功能測試-重置默認配置.js 依舊有問題,嘗試重啟AutoJS栅哀,并檢查AutoJS的版本是否為 4.1.1 Alpah2 或者 較新版本的AutoJS Pro
  • 如果報錯 Function importClass must be called with a class;... 直接強制關(guān)閉AutoJS軟件震肮,然后再打開即可。一般只在跨版本更新后才會出現(xiàn)這個問題留拾,最新版腳本已解決這個問題
  • 另外如果不斷的運行異常戳晌,強制關(guān)閉AutoJS軟件后重新執(zhí)行腳本。同時建議定期強制關(guān)閉AutoJS軟件痴柔,避免內(nèi)存不斷增長導(dǎo)致卡頓
  • 圖像分析模式 如果識別有遺漏躬厌,嘗試將 顏色相似度 調(diào)低 當(dāng)前默認值已改為20
  • 軟件的定時任務(wù),點擊main.js的 三個點菜單->更多->定時任務(wù) 然后設(shè)置相應(yīng)的時間即可
  • 排行榜卡住不動竞帽,修改模擬滑動參數(shù) 滑動速度模擬滑動距離底部的高度,當(dāng)前支付寶去除了排行榜中的控件鸿捧,必須使用模擬滑動才能正常使用屹篓。滑動速度請不要過低匙奴,一般200以上即可堆巧,否則無法滑動
  • 排行榜列表底部卡住,默認情況下會自動識別底部區(qū)域泼菌,但是需要一定時間來完成請不要手動關(guān)閉腳本谍肤,識別完成后如果需要修改請見 配置部分』┎或者關(guān)閉 基于圖像判斷列表底部荒揣,修改 排行榜下拉次數(shù) 次數(shù)為總好友數(shù)除以8左右,具體自行調(diào)試
  • 排行榜識別區(qū)域會自動設(shè)置焊刹,如果異常請手動修改配置中的 校驗排行榜分析范圍
  • 報錯 獲取截圖失敗多次 請修改 獲取截圖等待時間 默認為500毫秒系任,自行調(diào)試選擇適合自己的,或者直接取消勾選 是否異步等待截圖
  • 其他問題可以提ISSUE虐块,但是請勾選保存日志到文件俩滥,并將日志文件大小調(diào)整為1024,打開開發(fā)模式并提供出錯位置的日志信息贺奠,日志文件保存在 logs/log-verboses.log
  • 如果已經(jīng)按說明配置后開啟 是否直接基于圖像分析收取和幫助好友 運行不正常霜旧,請先取消勾選,然后勾選 區(qū)域點擊來收取能量, 同時自己擴展區(qū)域點擊的方法儡率,見下方的 #添加自定義區(qū)域點擊代碼

添加解鎖設(shè)備

  • 具體開發(fā)需要獲取到鎖屏界面的控件信息挂据,可以運行 /unit/獲取鎖屏界面控件信息.js 根據(jù)提示進行操作以清,然后得到相應(yīng)的布局信息進行開發(fā),或者在執(zhí)行完之后發(fā)起ISSUE并提供 logs/info.log 文件讓開發(fā)者幫忙棱貌。
  • 腳本根目錄下新建extends文件夾玖媚,然后創(chuàng)建ExternalUnlockDevice.js文件,內(nèi)容格式如下自定義
  • 更多擴展可以參考extends/ExternalUnlockDevice-demo.js
module.exports = function (obj) {
  this.__proto__ = obj

  this.unlock = function(password) {
    // 此處為自行編寫的解鎖代碼

    // 在結(jié)尾返回此語句用于判斷是否解鎖成功
    return this.check_unlock()
  }

}

添加自定義鎖屏代碼

  • 同解鎖設(shè)備婚脱,在extends文件夾下創(chuàng)建LockScreen.js今魔,內(nèi)容可以參考LockScreen-demo.js 實現(xiàn)自定義鎖屏
  • 擴展代碼之后可以執(zhí)行 test/TestLockScreen.js 來調(diào)試是否生效
  let { config: _config } = require('../config.js')(runtime, this)

  module.exports = function () {
    // MIUI 12 偏右上角下拉新控制中心
    swipe(800, 10, 800, 1000, 500)
    // 等待動畫執(zhí)行完畢
    sleep(500)
    // 點擊鎖屏按鈕
    click(parseInt(_config.lock_x), parseInt(_config.lock_y))
  }

分享你的配置

  • 如果你想分享你的自定義擴展代碼,可以提交到 這個分支下障贸,比如解鎖代碼 可以命名為 ExternalUnlockDevice-手機型號.js 并提交到 extends 目錄下错森,方便其他用戶下載使用
  • 想獲取其他網(wǎng)友分享的代碼可以前往這個分支下載,或者等我集成發(fā)布

更新記錄

目前存在的問題

  • 可能存在收集完一個好友后篮洁,因為沒有獲取到該好友剩余能量球的倒計時導(dǎo)致漏收
  • 部分系統(tǒng)涩维,如我使用的MIUI12因為省電策略的問題(即便設(shè)置了白名單無限制自啟動),導(dǎo)致AutoJS軟件的定時任務(wù)無法準時運行袁波。非腳本自身問題
  • 新發(fā)現(xiàn)問題請?zhí)峤籌SSUE瓦阐,我會盡快跟進解決
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市篷牌,隨后出現(xiàn)的幾起案子睡蟋,更是在濱河造成了極大的恐慌,老刑警劉巖枷颊,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戳杀,死亡現(xiàn)場離奇詭異,居然都是意外死亡夭苗,警方通過查閱死者的電腦和手機信卡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來题造,“玉大人傍菇,你說我怎么就攤上這事〗缗猓” “怎么了桥嗤?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長仔蝌。 經(jīng)常有香客問我泛领,道長,這世上最難降的妖魔是什么敛惊? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任渊鞋,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锡宋。我一直安慰自己儡湾,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布执俩。 她就那樣靜靜地躺著徐钠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪役首。 梳的紋絲不亂的頭發(fā)上尝丐,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音衡奥,去河邊找鬼爹袁。 笑死,一個胖子當(dāng)著我的面吹牛矮固,可吹牛的內(nèi)容都是我干的失息。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼档址,長吁一口氣:“原來是場噩夢啊……” “哼盹兢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起守伸,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蛤迎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后含友,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡校辩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年窘问,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宜咒。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡惠赫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出故黑,到底是詐尸還是另有隱情儿咱,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布场晶,位于F島的核電站混埠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏诗轻。R本人自食惡果不足惜钳宪,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吏颖,春花似錦搔体、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缩多,卻和暖如春呆奕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瞧壮。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工登馒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人咆槽。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓陈轿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親秦忿。 傳聞我的和親對象是個殘疾皇子麦射,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容