輔助功能定義
對於那些由於視力、聽力或其它身體原因導致不能方便使用Android智能手機的用戶,Android提供了Accessibility功能和服務幫助這些用戶更加簡單地操作設備,包括文字轉語音(不支持中文)、觸覺反饋、手勢操作、軌跡球和手柄操作。開發者可以搭建自己的Accessibility服務,這可以加強可用性,例如聲音提示,物理反饋,和其他可選的操作模式。
隨着Android版本的不斷升級,AndroidAccessibility功能也越來越強大,Android 4.0版本以前,系統輔助服務功能比較單一,僅僅能過單向獲取窗口元素信息,比如獲取輸入框用戶輸入內容。到Android 4.1版本以後,系統輔助服務增加了與窗口元素的雙向交互,此時可以通過輔助功能服務操作窗口元素,比如點擊按鈕等
繼承AccessibilityService類
可選
@Override
protected void onServiceConnected() {
super.onServiceConnected();
// 系統會在成功連接上你的服務的時候調用這個方法,在這個方法裏你可以做一下初始化工作,例如設備的聲音震動管理,也可以調用setServiceInfo()進行配置工作。
}
必需
@Override
public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
// onAccessibilityEvent() - 必須。通過這個函數可以接收系統發送來的AccessibilityEvent,接收來的AccessibilityEvent是經過過濾的,過濾是在配置工作時設置的。
//
}
必須
@Override
public void onInterrupt() {
Log.i("json", "onInterrupt");
// onInterrupt() - 必須。這個在系統想要中斷AccessibilityService返給的響應時會調用。在整個生命週期裏會被調用多次。
}
可選
@Override
public boolean onUnbind(Intent intent) {
return super.onUnbind(intent);
// onUnbind() - 可選。在系統將要關閉這個AccessibilityService會被調用。在這個方法中進行一些釋放資源的工作。
}
在AndroidMainfest.xml配置
<service
android:name=".AutomaticInstallationService"
android:enabled="true"
android:exported="true"
android:label="@string/automatic_installation"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/accessibility_service_config" />
</service>
<?xml version="1.0" encoding="utf-8"?> <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:accessibilityEventTypes="typeNotificationStateChanged|typeWindowStateChanged|typeWindowContentChanged|typeWindowsChanged" android:accessibilityFeedbackType="feedbackGeneric" android:accessibilityFlags="flagDefault" android:canRetrieveWindowContent="true" android:description="@string/description" android:notificationTimeout="100" android:packageNames="com.tencent.mm" />