17953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet/*
27953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * Copyright (C) 2009 The Android Open Source Project
37953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet *
47953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * Licensed under the Apache License, Version 2.0 (the "License");
57953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * you may not use this file except in compliance with the License.
67953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * You may obtain a copy of the License at
77953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet *
87953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet *      http://www.apache.org/licenses/LICENSE-2.0
97953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet *
107953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * Unless required by applicable law or agreed to in writing, software
117953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * distributed under the License is distributed on an "AS IS" BASIS,
127953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * See the License for the specific language governing permissions and
147953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * limitations under the License.
157953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet */
167953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet
177953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohetpackage android.view.accessibility;
187953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet
197953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohetimport android.content.Context;
207953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohetimport android.content.pm.ServiceInfo;
217953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet
227953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohetimport java.util.Collections;
237953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohetimport java.util.List;
247953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet
257953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet/**
267953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * System level service that serves as an event dispatch for {@link AccessibilityEvent}s.
277953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * Such events are generated when something notable happens in the user interface,
287953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * for example an {@link android.app.Activity} starts, the focus or selection of a
297953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * {@link android.view.View} changes etc. Parties interested in handling accessibility
307953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * events implement and register an accessibility service which extends
317953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * {@link android.accessibilityservice.AccessibilityService}.
327953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet *
337953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * @see AccessibilityEvent
347953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * @see android.accessibilityservice.AccessibilityService
357953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet * @see android.content.Context#getSystemService
367953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet */
377953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohetpublic final class AccessibilityManager {
387953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    private static AccessibilityManager sInstance = new AccessibilityManager();
397953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet
407953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    /**
417953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     * Get an AccessibilityManager instance (create one if necessary).
427953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     *
437953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     * @hide
447953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     */
457953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    public static AccessibilityManager getInstance(Context context) {
467953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet        return sInstance;
477953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    }
487953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet
497953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    /**
507953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     * Create an instance.
517953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     *
527953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     * @param context A {@link Context}.
537953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     */
547953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    private AccessibilityManager() {
557953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    }
567953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet
577953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    /**
587953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     * Returns if the {@link AccessibilityManager} is enabled.
597953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     *
607953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     * @return True if this {@link AccessibilityManager} is enabled, false otherwise.
617953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     */
627953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    public boolean isEnabled() {
637953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet        return false;
647953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    }
657953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet
667953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    /**
677953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     * Sends an {@link AccessibilityEvent}. If this {@link AccessibilityManager} is not
687953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     * enabled the call is a NOOP.
697953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     *
707953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     * @param event The {@link AccessibilityEvent}.
717953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     *
727953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     * @throws IllegalStateException if a client tries to send an {@link AccessibilityEvent}
737953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     *         while accessibility is not enabled.
747953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     */
757953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    public void sendAccessibilityEvent(AccessibilityEvent event) {
767953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    }
777953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet
787953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    /**
797953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     * Requests interruption of the accessibility feedback from all accessibility services.
807953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     */
817953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    public void interrupt() {
827953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    }
837953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet
847953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    /**
857953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     * Returns the {@link ServiceInfo}s of the installed accessibility services.
867953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     *
877953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     * @return An unmodifiable list with {@link ServiceInfo}s.
887953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet     */
897953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    public List<ServiceInfo> getAccessibilityServiceList() {
9008e2a4b56f23ce02f17300438f76ccc1f663f183Xavier Ducrohet        // normal implementation does this in some case, so let's do the same
9108e2a4b56f23ce02f17300438f76ccc1f663f183Xavier Ducrohet        // (unmodifiableList wrapped around null).
927953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet        List<ServiceInfo> services = null;
937953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet        return Collections.unmodifiableList(services);
947953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet    }
957953e7d89b1d4d7297176fbb6aeea882577df8e6Xavier Ducrohet}
96