什么是安卓無障礙服務
無障礙服務( Accessibility Service)是一個應用程序,它給有殘疾的用戶或暫時無法與設備完全交互的用戶提供了更好的無障礙用戶交互功能。
比如駕駛、照顧小孩或者在吵鬧的派對上可能需要額外或者替代的交互反饋。
Android提供了標準的無障礙服務,包括TalkBack,開發(fā)人員可以創(chuàng)建和發(fā)布自己的無障礙服務幌缝。 Android從1.6(API 4)開始引入了構建和部署無障礙服務的能力,并在Android 4.0(API 14)進行了重大改進诫欠。Android Support Library在Android 4.0版本上增加了支持增強無障礙服務功能涵卵,這樣就能夠兼容到Android 1.6。Android鼓勵開發(fā)者使用Support Library來廣泛兼容無障礙服務荒叼,并針對Android 4.0中引入的更高級的無障礙服務功能進行開發(fā)轿偎。
Accessibility Service是Android官方給出的一個無障礙輔助的API,可以實現(xiàn)一系列Android自動化行為被廓,諸如自動化測試坏晦、自動搶紅包、自動安裝應用嫁乘、清理系統(tǒng)運存昆婿、劫持瀏覽器等等。
Auto.js Pro基于控件的操作依賴于無障礙服務蜓斧,因此最好在腳本運行開始時仓蛆,確保無障礙服務已經(jīng)啟用。如果運行到某個需要權限的語句無障礙服務并沒啟動挎春,則會拋出異常并跳轉(zhuǎn)到無障礙服務界面看疙。這樣的用戶體驗并不友好。出現(xiàn)這種情況搂蜓,需要重新運行腳本狼荞。
本節(jié)課提供一種完美的Auto.js Pro無障礙服務解決方案辽装。
開發(fā)文檔
課程內(nèi)容
- 檢測與開啟無障礙服務
UI界面無障礙服務開關
·
<card w="*" h="auto" margin="10 5" cardCornerRadius="2dp" cardElevation="1dp" gravity="center_vertical">
<vertical padding="18 8" h="auto">
<linear>
<Switch id="autoService" text="無障礙服務:" checked="{{auto.service != null}}" w="auto" textStyle="bold" />
</linear>
</vertical>
<View bg="#E51400" h="*" w="5" />
</card>
點擊無障礙服務開關的事件監(jiān)聽:
ui.autoService.on("check", function(checked) {
// 用戶勾選無障礙服務的選項時帮碰,跳轉(zhuǎn)到頁面讓用戶去開啟
if(checked && auto.service == null) {
app.startActivity({
action: "android.settings.ACCESSIBILITY_SETTINGS"
});
}
if(!checked && auto.service != null){
auto.service.disableSelf();
}
});
// 當用戶回到本界面時,resume事件會被觸發(fā)
ui.emitter.on("resume", function() {
// 此時根據(jù)無障礙服務的開啟情況拾积,同步開關的狀態(tài)
ui.autoService.checked = auto.service != null;
});
判斷與提示開啟無障礙服務:
//程序開始運行之前判斷無障礙服務
if (auto.service == null) {
toastLog("請先開啟無障礙服務殉挽!");
// return;
};
按音量上鍵停止腳本:
// 屏蔽音量鍵調(diào)節(jié)聲音
events.setKeyInterceptionEnabled("volume_up", true);
//啟用按鍵監(jiān)聽
events.observeKey();
//監(jiān)聽音量鍵按下
events.onKeyDown("volume_up", () => {
toastLog('按音量鍵停止');
exit();
});