Skip to content

AccessibilityService

谁与争辉hui edited this page Feb 13, 2015 · 3 revisions

##最近同事写了一个关于: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配置:

在AndroidMainifest的Service中添加
 <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:指定服务事件的类型

Clone this wiki locally