-
Notifications
You must be signed in to change notification settings - Fork 1
AccessibilityService
##最近同事写了一个关于:point_right:红包软件,真心不错,:+1:其中用到了AccessibilityService,何为AccessibilityService 那:question:
####Accessibility 功能和服务帮助用户更加简单地操作设备,包括文字转语音,触觉反馈,手势操作,轨迹球和手柄操作。 ###使用方法: #####1,新建自己类,继续AccessibilityService,并在AndroidManifest 文件中注册: #####2,需要重载的方法: ######1),public void onAccessibilityEvent(AccessibilityEvent event),必选,通过这个函数可以接收系统发送来的AccessibilityEvent,通过过滤选择需要配置的工作: final int eventType = event.getEventType();
if (eventType == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
Notification notification = (Notification) event.getParcelableData();
List<String> textList = getText(notification);
if (null != textList && textList.size() > 0) {
for (String text : textList) {
if (!TextUtils.isEmpty(text) && text.contains("[****]")) {
}
}
}
}
######2),public void onInterrupt(),必选,系统想要中断AccessibilityService返回给的相应时会调用,整个生命周期里会被调用多次 #####3,xml配置:
<meta-data android:name="android.accessibilityservice" android:resource="@xml/accessible_service_config"/>
accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:description="@string/app_name" android:accessibilityEventTypes="typeWindowStateChanged|typeNotificationStateChanged" android:accessibilityFeedbackType="feedbackGeneric" android:packageNames="com.tencent.mm" android:notificationTimeout="100" android:accessibilityFlags="flagIncludeNotImportantViews" android:canRetrieveWindowContent="true"
######解释:
android:accessibilityEventTypes(指定时间服务类型,在设置被改变是调用)
android:accessibilityFeedbackType()
android:notificationTimeout(两个相同类型访问服务事件之间间隔)
#####4,两个重要的信息:
######1,Package Names ➡️ android:packageNames="com.tencent.mm",指明用服务处理应用程序的事件
######2,Event Types:指定服务事件的类型