1. 程式人生 > >微信跳一跳純安卓端實現方法

微信跳一跳純安卓端實現方法

  微信跳一跳出來好長了,有點時間就沉迷ow,最近有點時間開始看看跳一跳,無奈手殘黨,沒超過100分過,看到朋友圈動不動五六百,也確實佩服那些流弊的人,手殘怎麼辦,於是看到有大神用Python實現自動刷分,確實厲害,無奈Python一點不懂,博主是個Java黨,作為跨平臺的Java語言,做這個輔助應該還是綽綽有餘的。用Java有的基於pc端,用adb模擬點選實現全自動,博主用的是純安卓客戶端,當然有個root許可權的手機,要不然都是白談,不贅述了,正文開始。

  跳一跳實現原理很簡單,計算出棋子的中心點和目標的中心點,然後進行彈跳係數運算,模擬點選螢幕時間,這些只要計算準確,再內心毫無波瀾的程式面前,不會出現手抖哈哈。

 安卓端實現原理---------------------------主要通過opencv這個開源庫識別棋子,網上演算法各種各樣,總的來說就兩種,一種使用opencv的模板識別演算法,一種就是計算畫素點,棋子的顏色是固定的,可以通過演算法得到位置,但是手機效能就那個樣子,複雜點演算法手機算也要好長,直接第一種,簡單快捷。通過opencv識別棋子座標,使用者手動點選目標座標,通過計算距離得到點選時間,然後模擬點選時間,然後搞定。

1 匯入opencv開源庫到Androidstudio,到opencv官網(https://opencv.org/releases.html),轉到release頁面,點選Androidpack,下載下來,然後import module,直接把專案作為module匯入專案中,然後配置opencv。我直接在Mainactivity進行配置,配置介面在下面。


2申請su,即root許可權,必須手機有root許可權,申請也比較簡單,直接貼程式碼。


2 通過opencv的模板匹配演算法,matchTemplate 方法匹配模板棋子,方法很簡單,程式碼貼出來。


3得到棋子座標,開始考慮得到目標點座標,目標點座標我的辦法是使用者手動點選,要想得到座標,可以在跳一跳上面建一個透明懸浮窗,攔截點選事件,然後通過手勢直接得到點選事件在懸浮窗本身的view裡面的座標,但是要記住,你的懸浮窗不是全屏,要在y軸上面加上狀態列的高度,這樣就可以得到目標點的真正座標。實現方法就是安卓懸浮窗,申請下懸浮窗許可權,alertwindow,並且要引導使用者開啟這個許可權,部分國產rom對懸浮窗看的比較嚴格,預設申請也不會給的,因為都懂的,鎖機軟體相當一部分就是靠懸浮窗作用的。程式碼貼上。

由於app執行時候大部分都在微信跳一跳介面。所以肯定在service建立懸浮窗,由於service單獨執行,跟activity也沒啥交流,也不綁定了,要注意一點就是最好綁個通知欄,省的系統記憶體不夠先把你service殺瞭然後留你看著螢幕發呆哈哈。

4跳的時候係數運算可以根據實際結果微調,安卓螢幕一大堆,dpi也一大堆,也只能這樣了,博主測試手機1920*1080,演算法如下。

5做到這基本差不多了,就剩下一些小東西了,用root許可權實現隨意截圖,模擬點選啊,實際上執行su裡面的adb shell命令。沒啥好說的,直接貼。

6處理下細節,比如啥時候取消懸浮窗,防止懸浮窗攔截點選事件之類的,其實做起來還是比較簡單的,只是把思路說下,也沒啥技術含量,也就看個無聊。最後放上一些注意的事情。

opencv開源庫不做處理你要使用就要安裝一個叫opencvmanager的app,還要二次安裝app,使用者體驗不好,可以百度大神們的辦法,實現免安裝執行。還有一個就是要等到庫載入完成再執行模板匹配方法,不然會報錯,我是在庫載入成果功跑service。就那麼多,也挺簡單的。微信挑一挑就是吸引使用者注意的,告訴微信使用者我出了微信小遊戲了,快來充錢玩。微信小程式跟小遊戲就是基於微信龐大使用者才風生水起的,沒做過小程式,還是專心原生Android開發,各有各的優點,像我這種網頁手殘無解了GG。結尾了,該申請許可權的趕緊申請,不想申請sdk不要適配23,適配了不要忘記動態申請許可權END。