畢業(yè)設(shè)計(jì)做網(wǎng)站有什么好的創(chuàng)意百度瀏覽器下載安裝2023版本
你是不是和我一樣,在開(kāi)發(fā)無(wú)障礙應(yīng)用的時(shí)候,翻邊了Android的AccessibilityService源碼
但是就是發(fā)現(xiàn)不了onGesture不執(zhí)行的原因?
你是不是和我一樣,在好多測(cè)試手機(jī)之間徘徊,發(fā)現(xiàn)還是不執(zhí)行?
你是不是和我一樣開(kāi)始懷疑自己當(dāng)前Android api版本?
你是不是翻閱Android官方文檔好幾遍?
你是不是百度了好久都沒(méi)找到合適的答案?
如果以上你都遇到了,就證明你的語(yǔ)文閱讀能力不達(dá)標(biāo)。請(qǐng)你仔細(xì)閱讀android的官方文檔。
?
監(jiān)聽(tīng)手勢(shì)
無(wú)障礙服務(wù)可以監(jiān)聽(tīng)特定手勢(shì),并通過(guò)代表用戶(hù)執(zhí)行操作進(jìn)行響應(yīng)。此功能是在 Android 4.1(API 級(jí)別 16)中添加的,它要求無(wú)障礙服務(wù)請(qǐng)求激活“觸摸瀏覽”功能。服務(wù)請(qǐng)求激活該功能的方法是將其 AccessibilityServiceInfo 實(shí)例的 flags 成員設(shè)為 FLAG_REQUEST_TOUCH_EXPLORATION_MODE,如以下示例所示。
public class MyAccessibilityService extends AccessibilityService {
@Override
public void onCreate() {
getServiceInfo().flags = AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE;
}
…
}
服務(wù)請(qǐng)求激活“觸摸瀏覽”之后,用戶(hù)必須允許開(kāi)啟該功能(如果尚未激活)。激活此功能后,服務(wù)可通過(guò)其 onGesture() 回調(diào)方法接收無(wú)障礙手勢(shì)的通知,并且可以通過(guò)為用戶(hù)執(zhí)行操作進(jìn)行響應(yīng)。
————————————————from("世紀(jì)")原文鏈接:https://blog.csdn.net/qq_39469700/article/details/123831250
仔細(xì)閱讀“觸摸瀏覽”是什么。我最開(kāi)始就有這個(gè)疑問(wèn),因?yàn)闆](méi)有接觸過(guò)所以一直碰壁。
觸摸瀏覽我個(gè)人認(rèn)為就是:
類(lèi)似于talkback讀屏下選中屏幕控件焦點(diǎn)的一種無(wú)障礙瀏覽方式,它支持滑動(dòng)選中,雙擊執(zhí)行,
三指滑動(dòng)屏幕。
所以說(shuō)我們需要把“觸摸瀏覽”的相關(guān)配置,配置ok就OK了。點(diǎn)擊flags的成員配置靜態(tài)變量,官方文檔會(huì)看到如下:
?
標(biāo)記_請(qǐng)求_觸摸_探索_模式在API 級(jí)別 16中添加
public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE此標(biāo)志請(qǐng)求系統(tǒng)進(jìn)入觸摸探索模式。
在這種模式下,在屏幕上移動(dòng)的單個(gè)手指就像鼠標(biāo)指針懸停在用戶(hù)界面上一樣。系統(tǒng)還將檢測(cè)在觸摸屏上執(zhí)行的某些手勢(shì)并通知此服務(wù)。如果至少有一個(gè)無(wú)障礙服務(wù)設(shè)置了此標(biāo)志,系統(tǒng)將啟用觸摸探索模式。因此,清除此標(biāo)志并不能保證設(shè)備不會(huì)處于觸摸探索模式,因?yàn)榭赡苡辛硪粋€(gè)啟用的服務(wù)請(qǐng)求它。
對(duì)于面向 Android 4.3(API 級(jí)別 18)或更高版本的無(wú)障礙服務(wù),
想要設(shè)置此標(biāo)志,必須通過(guò)將屬性設(shè)置 canRequestTouchExplorationMode為 true 在其元數(shù)據(jù)中聲明此功能
否則,該標(biāo)志將被忽略。
針對(duì) Android 4.2.2(API 級(jí)別 17)或更低版本的服務(wù)將正常運(yùn)行。換句話(huà)說(shuō),第一次運(yùn)行時(shí),如果指定了此標(biāo)志,則會(huì)向用戶(hù)顯示一個(gè)對(duì)話(huà)框,以確認(rèn)啟用觸摸瀏覽。
仔細(xì)查看我加黑的地方,在我百度了好久之后,發(fā)現(xiàn)好多小伙伴和我一樣,一直執(zhí)著為什么不執(zhí)行。但就是不仔細(xì)查看官方文檔。并且有些結(jié)果很雞肋也很沒(méi)用。
?
<?xml version="1.0" encoding="utf-8"?>
<accessibility-servicexmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:description="@string/accessibility_desc"android:accessibilityEventTypes="typeAllMask"android:accessibilityFeedbackType="feedbackGeneric"android:accessibilityFlags="flagReportViewIds|flagIncludeNotImportantViews|flagRequestTouchExplorationMode|flagRequestFingerprintGestures"android:canRetrieveWindowContent="true"android:canRequestFilterKeyEvents="true"android:canPerformGestures="true"android:notificationTimeout="0"android:canRequestFingerprintGestures="true"tools:targetApi="o"/>
并且您的配置文件也要添加其他的type這里我就不多說(shuō)了 ,官方文檔很清晰。需要什么添加什么。
最后就完美的解決了 ,您的手勢(shì)就可以識(shí)別到了,并且是全局的,這時(shí)你會(huì)發(fā)現(xiàn)手機(jī)卡了,這里說(shuō)明一下是因?yàn)檫@個(gè)手勢(shì)監(jiān)聽(tīng),本就是為了有障人群瀏覽屏幕信息和一些快捷操作而定的。并不是讓你搞黑產(chǎn)弄的,如過(guò)想不卡可以去了解一下
?
如果想做成全局的,你可以做成x什么pode的面具插件。
最后我在說(shuō)一句,別人寫(xiě)的你用到就看看,心情好就給個(gè)贊,好多樂(lè)色抄襲別人的博客,導(dǎo)致現(xiàn)在優(yōu)質(zhì)博客全部需要金額,而且你抄襲就抄襲,你的markdown語(yǔ)法能不能也抄上,你的一篇文章都是代碼,而且是左對(duì)齊,你很牛你知道嗎!