前言
在Android
開發(fā)過程中,我們可能會(huì)涉及到無障礙
的功能。無障礙
是由AccessibilityService
服務(wù)來實(shí)現(xiàn)的。今天就讓我們來學(xué)習(xí)下這個(gè)特殊的服務(wù)。
今天涉及知識(shí)有:
- 無障礙服務(wù)AccessibilityService簡介
- AccessibilityService實(shí)現(xiàn)步驟
2.1 繼承AccessibilityService寫一個(gè)自定義無障礙服務(wù)TestService
2.2 聲明無障礙服務(wù) - AccessibilityService的一些方法
- AccessibilityService的開啟運(yùn)行
一. 無障礙服務(wù)AccessibilityService簡介
AccessibilityService
官網(wǎng)的介紹是這樣的: 無障礙服務(wù)應(yīng)該只用于幫助殘疾用戶使用Android設(shè)備和應(yīng)用程序陵究。它們?cè)诤笈_(tái)運(yùn)行,并在AccessibilityEvents被觸發(fā)時(shí)接收系統(tǒng)的回調(diào)奥帘。這類事件表示用戶界面中的某些狀態(tài)轉(zhuǎn)換铜邮,例如焦點(diǎn)發(fā)生了變化、按鈕被單擊等等翩概。這樣的服務(wù)可以請(qǐng)求查詢活動(dòng)窗口內(nèi)容的功能牲距。可訪問性服務(wù)的開發(fā)需要擴(kuò)展這個(gè)類并實(shí)現(xiàn)它的抽象方法钥庇。
描述一大堆牍鞠,只知道他是一個(gè)服務(wù),可以在后臺(tái)監(jiān)聽手機(jī)的各種狀態(tài),至于用來干啥的评姨,就一句話用于幫助殘疾用戶使用Android設(shè)備和應(yīng)用程序
难述,個(gè)人表示無法理解,這是毛的描述啊吐句。至于是怎么幫助的胁后,沒有描述。所以啊嗦枢,很悲催攀芯,不知道怎么用。后來研究了下文虏,發(fā)現(xiàn)其可以自動(dòng)控制其他app的各種事件侣诺,如:點(diǎn)擊,滑動(dòng)氧秘,輸入等年鸳。哦,原來是這樣...
二. AccessibilityService實(shí)現(xiàn)步驟
2.1 繼承AccessibilityService寫一個(gè)自定義無障礙服務(wù)TestService
AccessibilityService
歸根結(jié)底還是一個(gè)服務(wù)丸相,其繼承自Service
搔确,當(dāng)然也就具備的Service
的聲明周期和一些特性,但是,其與Service
又又很大的不同膳算。當(dāng)我們需要寫一個(gè)無障礙
服務(wù)時(shí)座硕,需要繼承AccessibilityService
,然后重寫AccessibilityService
的三個(gè)方法:onServiceConnected()
畦幢,onAccessibilityEvent(event: AccessibilityEvent?)
和onInterrupt()
坎吻。
- onServiceConnected():AccessibilityService 這個(gè)服務(wù)可以關(guān)聯(lián)很多屬性缆蝉,這些屬性 一般可以通過代碼在這個(gè)方法里進(jìn)行設(shè)置宇葱,我這里偷懶 把這些設(shè)置屬性的流程用xml 寫好 放在manifest里,如果你們要使用的時(shí)候需要區(qū)分版本號(hào)做兼容刊头,在老的版本里是無法通過xml進(jìn)行引用的 只能在這個(gè)方法里手寫那些屬性 一定要注意.同時(shí)你的業(yè)務(wù)如果很復(fù)雜比如需要初始化廣播啊之類的工作 都可以在這個(gè)方法里寫黍瞧。
- onAccessibilityEvent(event: AccessibilityEvent?):一旦無障礙服務(wù)開啟,此方法會(huì)不斷的重復(fù)執(zhí)行原杂,我們要做的一些操作及業(yè)務(wù)邏輯主要在此方法中執(zhí)行
- onInterrupt():
無障礙
服務(wù)退出時(shí)會(huì)調(diào)用此方法印颤,我們可以在此方法中做些銷毀和釋放資源的操作
下面以繼承AccessibilityService
寫一個(gè)簡單的自定義無障礙服務(wù)的示例(假設(shè)該服務(wù)命名為TestService
):