All Downloads are FREE. Search and download functionalities are using the official Maven repository.

android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat Maven / Gradle / Ivy

There is a newer version: 19.0.1
Show newest version
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.support.v4.accessibilityservice;

import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.pm.ResolveInfo;
import android.os.Build;

/**
 * Helper for accessing features in {@link android.accessibilityservice.AccessibilityService}
 * introduced after API level 4 in a backwards compatible fashion.
 */
public class AccessibilityServiceInfoCompat {

    static interface AccessibilityServiceInfoVersionImpl {
        public String getId(AccessibilityServiceInfo info);
        public ResolveInfo getResolveInfo(AccessibilityServiceInfo info);
        public boolean getCanRetrieveWindowContent(AccessibilityServiceInfo info);
        public String getDescription(AccessibilityServiceInfo info);
        public String getSettingsActivityName(AccessibilityServiceInfo info);
    }

    static class AccessibilityServiceInfoStubImpl implements AccessibilityServiceInfoVersionImpl {

        public boolean getCanRetrieveWindowContent(AccessibilityServiceInfo info) {
            return false;
        }

        public String getDescription(AccessibilityServiceInfo info) {
            return null;
        }

        public String getId(AccessibilityServiceInfo info) {
            return null;
        }

        public ResolveInfo getResolveInfo(AccessibilityServiceInfo info) {
            return null;
        }

        public String getSettingsActivityName(AccessibilityServiceInfo info) {
            return null;
        }
    }

    static class AccessibilityServiceInfoIcsImpl extends AccessibilityServiceInfoStubImpl {

        @Override
        public boolean getCanRetrieveWindowContent(AccessibilityServiceInfo info) {
            return AccessibilityServiceInfoCompatIcs.getCanRetrieveWindowContent(info);
        }

        @Override
        public String getDescription(AccessibilityServiceInfo info) {
            return AccessibilityServiceInfoCompatIcs.getDescription(info);
        }

        @Override
        public String getId(AccessibilityServiceInfo info) {
            return AccessibilityServiceInfoCompatIcs.getId(info);
        }

        @Override
        public ResolveInfo getResolveInfo(AccessibilityServiceInfo info) {
            return AccessibilityServiceInfoCompatIcs.getResolveInfo(info);
        }

        @Override
        public String getSettingsActivityName(AccessibilityServiceInfo info) {
            return AccessibilityServiceInfoCompatIcs.getSettingsActivityName(info);
        }
    }

    static {
        if (Build.VERSION.SDK_INT >= 14) { // ICS
            IMPL = new AccessibilityServiceInfoIcsImpl();
        } else {
            IMPL = new AccessibilityServiceInfoStubImpl();
        }
    }

    private static final AccessibilityServiceInfoVersionImpl IMPL;

    /**
     * Mask for all feedback types.
     *
     * @see AccessibilityServiceInfo#FEEDBACK_SPOKEN
     * @see AccessibilityServiceInfo#FEEDBACK_HAPTIC
     * @see AccessibilityServiceInfo#FEEDBACK_AUDIBLE
     * @see AccessibilityServiceInfo#FEEDBACK_VISUAL
     * @see AccessibilityServiceInfo#FEEDBACK_GENERIC
     */
    public static final int FEEDBACK_ALL_MASK = 0xFFFFFFFF;

    /*
     * Hide constructor
     */
    private AccessibilityServiceInfoCompat() {

    }

    /**
     * The accessibility service id.
     * 

* Generated by the system. *

* * @return The id. */ public static String getId(AccessibilityServiceInfo info) { return IMPL.getId(info); } /** * The service {@link ResolveInfo}. *

* Generated by the system. *

* * @return The info. */ public static ResolveInfo getResolveInfo(AccessibilityServiceInfo info) { return IMPL.getResolveInfo(info); } /** * The settings activity name. *

* Statically set from {@link AccessibilityService#SERVICE_META_DATA * meta-data}. *

* * @return The settings activity name. */ public static String getSettingsActivityName(AccessibilityServiceInfo info) { return IMPL.getSettingsActivityName(info); } /** * Whether this service can retrieve the current window's content. *

* Statically set from {@link AccessibilityService#SERVICE_META_DATA * meta-data}. *

* * @return True window content can be retrieved. */ public static boolean getCanRetrieveWindowContent(AccessibilityServiceInfo info) { return IMPL.getCanRetrieveWindowContent(info); } /** * Description of the accessibility service. *

* Statically set from {@link AccessibilityService#SERVICE_META_DATA * meta-data}. *

* * @return The description. */ public static String getDescription(AccessibilityServiceInfo info) { return IMPL.getDescription(info); } /** * Returns the string representation of a feedback type. For example, * {@link AccessibilityServiceInfo#FEEDBACK_SPOKEN} is represented by the * string FEEDBACK_SPOKEN. * * @param feedbackType The feedback type. * @return The string representation. */ public static String feedbackTypeToString(int feedbackType) { StringBuilder builder = new StringBuilder(); builder.append("["); while (feedbackType > 0) { final int feedbackTypeFlag = 1 << Integer.numberOfTrailingZeros(feedbackType); feedbackType &= ~feedbackTypeFlag; if (builder.length() > 1) { builder.append(", "); } switch (feedbackTypeFlag) { case AccessibilityServiceInfo.FEEDBACK_AUDIBLE: builder.append("FEEDBACK_AUDIBLE"); break; case AccessibilityServiceInfo.FEEDBACK_HAPTIC: builder.append("FEEDBACK_HAPTIC"); break; case AccessibilityServiceInfo.FEEDBACK_GENERIC: builder.append("FEEDBACK_GENERIC"); break; case AccessibilityServiceInfo.FEEDBACK_SPOKEN: builder.append("FEEDBACK_SPOKEN"); break; case AccessibilityServiceInfo.FEEDBACK_VISUAL: builder.append("FEEDBACK_VISUAL"); break; } } builder.append("]"); return builder.toString(); } /** * Returns the string representation of a flag. For example, * {@link AccessibilityServiceInfo#DEFAULT} is represented by the * string DEFAULT. * * @param flag The flag. * @return The string representation. */ public static String flagToString(int flag) { switch (flag) { case AccessibilityServiceInfo.DEFAULT: return "DEFAULT"; default: return null; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy