1. 程式人生 > >AccessibilityService新增gesturedescription使用詳解,7.0模擬手勢搶紅包核心程式碼分析

AccessibilityService新增gesturedescription使用詳解,7.0模擬手勢搶紅包核心程式碼分析

目前市面上大部分搶微信搶紅包外掛的都失效了,最關鍵的原因就是在7.0我們再通過findAccessibilityNodeInfosByText或者findAccessibilityNodeInfosByViewId來拿View已經不行了,主要是系統已經換了新的方式實現,這就是本次要分享的內容,雖然我們拿不到View,但是我們可以通過模擬手勢,一樣可以實現點選拆紅包
下邊就開始一步一步解析
首先是dispatchGesture方法的解釋

boolean dispatchGesture (GestureDescription gesture, 
                AccessibilityService
.GestureResultCallback callback, Handler handler)

這個就是我們要實現模擬手勢需要呼叫的方法
這個方法有三個引數:

  1. 引數GestureDescription:翻譯過來就是手勢的描述,如果要實現模擬,首先要描述你的腰模擬的手勢嘛
  2. 引數GestureResultCallback:翻譯過來就是手勢的回撥,手勢模擬執行以後回撥結果
  3. 引數handler:大部分情況我們不用的話傳空就可以了
    一般我們關注GestureDescription這個引數就夠了,下邊就重點介紹一下這個引數

GestureDescription官網描述:

Accessibility services with the AccessibilityService_canPerformGestures property can dispatch gestures. This class describes those gestures. Gestures are made up of one or more strokes. Gestures are immutable once built. 
Spatial dimensions throughout are in screen pixels. Time is measured in milliseconds
.

翻譯過來大概意思:

輔助功能服務,其具有AccessibilityService_canPerformGestures屬性,可傳送手勢。此類描述手勢。手勢由一個或多個筆劃組成。一旦生成, 手勢是不可改變的。
整個空間尺寸都以螢幕畫素為單位。時間以毫秒為單位。

構建一個手勢描述的關鍵程式碼:

GestureDescription.StrokeDescription(Path path, long startTime, long duration)

例如:

val builder = GestureDescription.Builder()
val gestureDescription = builder
                    .addStroke(GestureDescription.StrokeDescription(path, 100, 50))
                    .build()

引數介紹如下:

  • 引數path:筆畫路徑
  • 引數startTime:時間 (以毫秒為單位),從手勢開始到開始筆劃的時間,非負數
  • 引數duration:筆劃經過路徑的持續時間(以毫秒為單位),非負數

這裡重點介紹path,官網描述:

ath: The path to follow. Must have exactly one contour. The bounds of the path must not be negative. The path must not be empty. If the path has zero length (for example, a single moveTo()), the stroke is a touch that doesn't move.
This value must never be null.

翻譯過來大概意思就是:

Path: 要跟隨的路徑。必須有正好一個輪廓。路徑的邊界不得為負數。路徑不得為空。如果路徑的長度為零 (例如, 單個moveTo()), 則筆劃是一個沒有移動的點選

那就很清晰了,如果要模擬單機事件,直接像這樣就好:

val path = Path()
path.moveTo(x, y)

注意:其中x和y表示要點選的按鈕座標相對於螢幕左上角的座標
那如果要模擬滾動手勢就可以像這樣:

val path = Path()
path.moveTo(x1, y1)
path.lineTo(x2, y2)

表示模擬從第一個點滾動到第二個點,其他更復雜的手勢都可以通過path模擬
至此關於模擬手勢問題介紹完畢,如有疑問可留言

相關推薦

AccessibilityService新增gesturedescription使用7.0模擬手勢紅包核心程式碼分析

目前市面上大部分搶微信搶紅包外掛的都失效了,最關鍵的原因就是在7.0我們再通過findAccessibilityNodeInfosByText或者findAccessibilityNodeInfosByViewId來拿View已經不行了,主要是系統已經換了新的方

C#7.0新特性

numeric base rdquo 字母 and throw cal odin png 1. out 變量(out variables) 以前我們使用out變量必須在使用前進行聲明,C# 7.0 給我們提供了一種更簡潔的語法 “使用時進行內聯聲明&r

【轉】SignalR新手系列教程(七)- SignalR 瀏覽器聊天室示例程式碼分析

SignalR 瀏覽器聊天室示例程式碼分析 在上一篇教程中的程式碼我們主要實現SignalR開發中的兩個基本任務:建立服務端的 hub 類作為伺服器的協調,然後就是使用 SignalR jQuery 庫來收發資訊。 SignalR Hubs 在前面的示例的Cha

MongoDB 數據庫以及 MongoDB4.0版本的安裝

primary 所在 高可用 使用 進行 remove 存儲空間 標記 詳解 MongoDB 簡介 MongDB 是一款跨平臺,面向文檔的數據庫,可以實現高性能,高可用性,並且能夠輕松擴展,是一個基於分布式文件存儲的開源數據庫系統。在高負載的情況下,添加更多的節點,可以保

TCP-IP筆記7: DNS域名系統

概念 DNS 是一種用於TCP/IP應用程式的__分散式資料庫__,提供了主機名字和IP地址之間的轉換和有關電子郵件的選路資訊。 DNS基礎 層次結構, 每個節點有一個至多63個字元長的標識, 不區分大

Retrofit 2.0使用配合OkHttp、GsonAndroid最強網路請求框架

1.使用retrofit,需要下載一些jar包 2.介紹這些jar包的作用 在1.x版本的retrofit框架: 只需要Retrofit包和gson-2.4.jar包就行了,那時的Retrofit預設是使用okhttp jar包來網路請

Linux系統指定目錄下安裝配置Mysql 5.7.15步驟圖文只需5分鐘搞定

mysql安裝有兩種:原始碼自編譯安裝和編譯過的二進位制檔案進行安裝。後一種方法相比原始碼安裝,節省了半個小時的編譯時間,只需要合理配置即可。至於其他的優劣,歡迎大家討論。網上有很多教程,但是對於想要把mysql安裝到指定路徑的博文卻很少,而且還有很多漏洞。為了

微信公眾號選單新增小程式miniprogrampagepath引數php開發公眾號

隨著微信小程式功能的開發, 已經可以跟公眾號打通了, 主要有兩種方式: 1) 在公眾號文章中插入小程式 2) 在公眾號選單中新增小程式 第一種方式, 子恆老師在前面的課程已經詳細介紹過, 今天來講第二種方法, 怎麼通過開發的方式實現。 一、 公眾

本地Mysql5.7主從(Master/Slave)安裝my.ini檔案配置

找到Master mysql的位置 C:\Program Files\MySQL\MySQL Server 5.7 複製資料夾到你所需要的目錄,我是在D:\Mysql separation\MySQL

讓你知道教程的actionscript 3.0程式語言

首先網際網路上有很多actionscript 3.0的教程,這些actionscript 3.0教程中有些是免費的,有些是收費的,作為一個初學者,你需要做的是actionscript 3.0的基礎知識的瞭解。很多act

Android 6.0 許可權申請以及許可權申請框架MPermissions的簡單使用

1.首先先來個框架地址:https://github.com/hongyangAndroid/MPermissions/2.真的很好用:1.in Activity:public class MainActivity extends AppCompatActivity {

win764位系統下iis6.0的安裝與配置解決“未發現數據源名稱並且未指定預設驅動程式”解決辦法

以下文章參考: 一、百度文庫  http://jingyan.baidu.com/article/219f4bf723bcb2de442d38ed.html 二、http://wsj781222.blog.163.com/blog/static/2684261201351

POI操作Excel讀取xls和xlsx格式的文件

shee xss split 類型 後綴 .sh lan xls lin package org.ian.webutil; import java.io.File; import java.io.FileInputStream; import java.io.FileN

Nginx主配置參數Nginx配置網站

lis javascrip ref 錯誤日誌 127.0.0.1 服務器配置 設置 代理服務器 減少 1.Niginx主配置文件參數詳解   a.Linux中安裝nginx。博文地址為:http://www.cnblogs.com/cindy-cindy/p/68474

[轉載]AMOLED結構BOE專家給你分析驅動補償

晶體 即使 長時間 http 如何 電容 環境 抽取 分享 關鍵詞: AMOLED, 驅動補償 有機發光顯示二極管(OLED)作為一種電流型發光器件已越來越多地被應用於高性能顯示中。由於它自發光的特性,與LCD相比,AMOLED具有高對比度、超輕薄

#21 在Linux裏進程管理與pstree、ps、pgrep、pkill、pidof、top命令的應用

在linux裏進程管理詳解 與pstree、ps、pgrep、pkill、pidof、top命令的應用 進程管理: 所謂進程:process,一個活動的程序的實體的副本; 生命周期; 可能包含一個或多個執行流; 創建進程: 每個進程的組織結構是一致的: 內核在正常啟動並且全

對稱加密以及JAVA簡單實現

turn bsp 十進制 stat mage 需要 對稱密鑰 else ges (原) 常用的加密有3種 1、正向加密,如MD5,加密後密文固定,目前還沒辦法破解,但是可以能過數據庫撞庫有一定概率找到,不過現在一般用這種方式加密都會加上鹽值。 2、對稱加密,通過一個固定

最完整的Mybatis Generator(簡稱MBG)的最完整配置文件再也不用去看EN的User Guide了;

tor 開始 設置 gen false dsc user ren led <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//myba

ThreadLocal處理成員變量線程不安全的情況

div sql jdk new 在操作 urn 詳解 get方法 如何 ThreadLocal翻譯成中文比較準確的叫法應該是:線程局部變量。   這個玩意有什麽用處,或者說為什麽要有這麽一個東東?先解釋一下,在並發編程的時候,成員變量如果不做任何處理其實是線程不安全的,各個

meta html5 meta 標簽日常設置(轉)

user 針對 html keywords desc obi 360瀏覽器 initial friendly <!DOCTYPE html> <!-- 使用 HTML5 doctype,不區分大小寫 --> <html lang="zh-cm