---
# System prepended metadata

title: AccessibilityService

---

# AccessibilityService
[輔助功能AccessibilityService筆記](https://www.jianshu.com/p/ef01ce654302)
[深入介紹搶紅包功能](https://www.jianshu.com/p/4cd8c109cdfb)
[AccessibilityService+OpenCV实现微信7.0.0抢红包插件](https://www.jianshu.com/p/c269a1a1866b)


1. meta-data配置
2. 靜態配置setServiceInfo(AccessibilityServiceInfo info)
only for 
```eventTypes,feedbackType,flags,notificaionTimeout 及 packageNames```

## config

* packageNames
若要在所有應用程式都可使用下拉功能，應使用"null"來監控所有應用程式(不用設置，Default為null)
* accessibilityEventTypes
表示該服務對界面中的哪些變化感興趣,即哪些事件通知,比如窗口打開,滑動,焦點變化,長按等.具體的值可以在AccessibilityEvent類中查到,如typeAllMask表示接受所有的事件通知.
* accessibilityFeedbackType
表示反饋方式,比如是語音播放,還是震動
* canRetrieveWindowContent
表示該服務能否訪問活動窗口中的內容.也就是如果你希望在服務中獲取窗體內容的化,則需要設置其值為true.
* notificationTimeout
接受事件的時間間隔,通常將其設置為100即可.


## 幾個概念

* AccessibilityNodeInfo
界面中所有的view元素都會作為這麼一個類出現
* AccessibilityEvent
Event事件，當app進出前後台或者有點擊滑動等事件的時候，都會發出這麼一個event
* onAccessibilityEvent()
接收 event的回調方法

## Notice

* getFingerprintGestureController()取得手勢函數，Call requires API level 26
* 偵測手勢events available only in touch exploration mode
XML加上
```xml=
android:canRequestTouchExplorationMode="true"
android:accessibilityFlags="flagRequestTouchExplorationMode"
```

# AccessibilityEvent
View scrolled - represents the event of scrolling a view. 


---------
做一个下拉通知栏的操作
    this.performGlobalAction(AccessibilityService.GLOBAL_ACTION_NOTIFICATIONS)