1 /*
2  * Copyright (C) 2009 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.accessibilityservice;
18 
19 import android.accessibilityservice.AccessibilityServiceInfo;
20 import android.accessibilityservice.IBrailleDisplayController;
21 import android.accessibilityservice.MagnificationConfig;
22 import android.content.pm.ParceledListSlice;
23 import android.graphics.Bitmap;
24 import android.graphics.Region;
25 import android.hardware.usb.UsbDevice;
26 import android.os.Bundle;
27 import android.os.RemoteCallback;
28 import android.view.MagnificationSpec;
29 import android.view.SurfaceControl;
30 import android.view.MotionEvent;
31 import android.view.SurfaceControl;
32 import android.view.accessibility.AccessibilityNodeInfo;
33 import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
34 import android.view.accessibility.IAccessibilityInteractionConnectionCallback;
35 import android.view.accessibility.AccessibilityWindowInfo;
36 import java.util.List;
37 import android.window.ScreenCapture;
38 
39 /**
40  * Interface given to an AccessibilitySerivce to talk to the AccessibilityManagerService.
41  *
42  * @hide
43  */
44 interface IAccessibilityServiceConnection {
45 
46     @RequiresNoPermission
setServiceInfo(in AccessibilityServiceInfo info)47     void setServiceInfo(in AccessibilityServiceInfo info);
48 
49     @RequiresNoPermission
setAttributionTag(in String attributionTag)50     void setAttributionTag(in String attributionTag);
51 
52     @RequiresNoPermission
findAccessibilityNodeInfoByAccessibilityId(int accessibilityWindowId, long accessibilityNodeId, int interactionId, IAccessibilityInteractionConnectionCallback callback, int flags, long threadId, in Bundle arguments)53     String[] findAccessibilityNodeInfoByAccessibilityId(int accessibilityWindowId,
54         long accessibilityNodeId, int interactionId,
55         IAccessibilityInteractionConnectionCallback callback, int flags, long threadId,
56         in Bundle arguments);
57 
58     @RequiresNoPermission
findAccessibilityNodeInfosByText(int accessibilityWindowId, long accessibilityNodeId, String text, int interactionId, IAccessibilityInteractionConnectionCallback callback, long threadId)59     String[] findAccessibilityNodeInfosByText(int accessibilityWindowId, long accessibilityNodeId,
60         String text, int interactionId, IAccessibilityInteractionConnectionCallback callback,
61         long threadId);
62 
63     @RequiresNoPermission
findAccessibilityNodeInfosByViewId(int accessibilityWindowId, long accessibilityNodeId, String viewId, int interactionId, IAccessibilityInteractionConnectionCallback callback, long threadId)64     String[] findAccessibilityNodeInfosByViewId(int accessibilityWindowId,
65         long accessibilityNodeId, String viewId, int interactionId,
66         IAccessibilityInteractionConnectionCallback callback, long threadId);
67 
68     @RequiresNoPermission
findFocus(int accessibilityWindowId, long accessibilityNodeId, int focusType, int interactionId, IAccessibilityInteractionConnectionCallback callback, long threadId)69     String[] findFocus(int accessibilityWindowId, long accessibilityNodeId, int focusType,
70         int interactionId, IAccessibilityInteractionConnectionCallback callback, long threadId);
71 
72     @RequiresNoPermission
focusSearch(int accessibilityWindowId, long accessibilityNodeId, int direction, int interactionId, IAccessibilityInteractionConnectionCallback callback, long threadId)73     String[] focusSearch(int accessibilityWindowId, long accessibilityNodeId, int direction,
74         int interactionId, IAccessibilityInteractionConnectionCallback callback, long threadId);
75 
76     @RequiresNoPermission
performAccessibilityAction(int accessibilityWindowId, long accessibilityNodeId, int action, in Bundle arguments, int interactionId, IAccessibilityInteractionConnectionCallback callback, long threadId)77     boolean performAccessibilityAction(int accessibilityWindowId, long accessibilityNodeId,
78         int action, in Bundle arguments, int interactionId,
79         IAccessibilityInteractionConnectionCallback callback, long threadId);
80 
81     @RequiresNoPermission
getWindow(int windowId)82     AccessibilityWindowInfo getWindow(int windowId);
83 
84     @RequiresNoPermission
getWindows()85     AccessibilityWindowInfo.WindowListSparseArray getWindows();
86 
87     @RequiresNoPermission
getServiceInfo()88     AccessibilityServiceInfo getServiceInfo();
89 
90     @RequiresNoPermission
performGlobalAction(int action)91     boolean performGlobalAction(int action);
92 
93     @RequiresNoPermission
getSystemActions()94     List<AccessibilityNodeInfo.AccessibilityAction> getSystemActions();
95 
96     @RequiresNoPermission
disableSelf()97     void disableSelf();
98 
99     @RequiresNoPermission
setOnKeyEventResult(boolean handled, int sequence)100     oneway void setOnKeyEventResult(boolean handled, int sequence);
101 
102     @RequiresNoPermission
getMagnificationConfig(int displayId)103     MagnificationConfig getMagnificationConfig(int displayId);
104 
105     @RequiresNoPermission
getMagnificationScale(int displayId)106     float getMagnificationScale(int displayId);
107 
108     @RequiresNoPermission
getMagnificationCenterX(int displayId)109     float getMagnificationCenterX(int displayId);
110 
111     @RequiresNoPermission
getMagnificationCenterY(int displayId)112     float getMagnificationCenterY(int displayId);
113 
114     @RequiresNoPermission
getMagnificationRegion(int displayId)115     Region getMagnificationRegion(int displayId);
116 
117     @RequiresNoPermission
getCurrentMagnificationRegion(int displayId)118     Region getCurrentMagnificationRegion(int displayId);
119 
120     @RequiresNoPermission
resetMagnification(int displayId, boolean animate)121     boolean resetMagnification(int displayId, boolean animate);
122 
123     @RequiresNoPermission
resetCurrentMagnification(int displayId, boolean animate)124     boolean resetCurrentMagnification(int displayId, boolean animate);
125 
126     @RequiresNoPermission
setMagnificationConfig(int displayId, in MagnificationConfig config, boolean animate)127     boolean setMagnificationConfig(int displayId, in MagnificationConfig config, boolean animate);
128 
129     @RequiresNoPermission
setMagnificationCallbackEnabled(int displayId, boolean enabled)130     void setMagnificationCallbackEnabled(int displayId, boolean enabled);
131 
132     @RequiresNoPermission
setSoftKeyboardShowMode(int showMode)133     boolean setSoftKeyboardShowMode(int showMode);
134 
135     @RequiresNoPermission
getSoftKeyboardShowMode()136     int getSoftKeyboardShowMode();
137 
138     @RequiresNoPermission
setSoftKeyboardCallbackEnabled(boolean enabled)139     void setSoftKeyboardCallbackEnabled(boolean enabled);
140 
141     @RequiresNoPermission
switchToInputMethod(String imeId)142         boolean switchToInputMethod(String imeId);
143 
144     @RequiresNoPermission
setInputMethodEnabled(String imeId, boolean enabled)145         int setInputMethodEnabled(String imeId, boolean enabled);
146 
147     @RequiresNoPermission
isAccessibilityButtonAvailable()148     boolean isAccessibilityButtonAvailable();
149 
150     @RequiresNoPermission
sendGesture(int sequence, in ParceledListSlice gestureSteps)151     void sendGesture(int sequence, in ParceledListSlice gestureSteps);
152 
153     @RequiresNoPermission
dispatchGesture(int sequence, in ParceledListSlice gestureSteps, int displayId)154     void dispatchGesture(int sequence, in ParceledListSlice gestureSteps, int displayId);
155 
156     @RequiresNoPermission
isFingerprintGestureDetectionAvailable()157     boolean isFingerprintGestureDetectionAvailable();
158 
159     @RequiresNoPermission
getOverlayWindowToken(int displayid)160     IBinder getOverlayWindowToken(int displayid);
161 
162     @RequiresNoPermission
getWindowIdForLeashToken(IBinder token)163     int getWindowIdForLeashToken(IBinder token);
164 
165     @RequiresNoPermission
takeScreenshot(int displayId, in RemoteCallback callback)166     void takeScreenshot(int displayId, in RemoteCallback callback);
167 
168     @RequiresNoPermission
takeScreenshotOfWindow(int accessibilityWindowId, int interactionId, in ScreenCapture.ScreenCaptureListener listener, IAccessibilityInteractionConnectionCallback callback)169     void takeScreenshotOfWindow(int accessibilityWindowId, int interactionId,
170         in ScreenCapture.ScreenCaptureListener listener,
171         IAccessibilityInteractionConnectionCallback callback);
172 
173     @RequiresNoPermission
setGestureDetectionPassthroughRegion(int displayId, in Region region)174     void setGestureDetectionPassthroughRegion(int displayId, in Region region);
175 
176     @RequiresNoPermission
setTouchExplorationPassthroughRegion(int displayId, in Region region)177     void setTouchExplorationPassthroughRegion(int displayId, in Region region);
178 
179     @RequiresNoPermission
setFocusAppearance(int strokeWidth, int color)180     void setFocusAppearance(int strokeWidth, int color);
181 
182     @RequiresNoPermission
setCacheEnabled(boolean enabled)183     void setCacheEnabled(boolean enabled);
184 
185     @RequiresNoPermission
logTrace(long timestamp, String where, long loggingTypes, String callingParams, int processId, long threadId, int callingUid, in Bundle serializedCallingStackInBundle)186     oneway void logTrace(long timestamp, String where, long loggingTypes, String callingParams,
187         int processId, long threadId, int callingUid, in Bundle serializedCallingStackInBundle);
188 
189     @RequiresNoPermission
setServiceDetectsGesturesEnabled(int displayId, boolean mode)190     void setServiceDetectsGesturesEnabled(int displayId, boolean mode);
191 
192     @RequiresNoPermission
requestTouchExploration(int displayId)193     void requestTouchExploration(int displayId);
194 
195     @RequiresNoPermission
requestDragging(int displayId, int pointerId)196     void requestDragging(int displayId, int pointerId);
197 
198     @RequiresNoPermission
requestDelegating(int displayId)199     void requestDelegating(int displayId);
200 
201     @RequiresNoPermission
onDoubleTap(int displayId)202     void onDoubleTap(int displayId);
203 
204     @RequiresNoPermission
onDoubleTapAndHold(int displayId)205     void onDoubleTapAndHold(int displayId);
206 
207     @RequiresNoPermission
setAnimationScale(float scale)208     void setAnimationScale(float scale);
209 
210     @RequiresNoPermission
setInstalledAndEnabledServices(in List<AccessibilityServiceInfo> infos)211     void setInstalledAndEnabledServices(in List<AccessibilityServiceInfo> infos);
212 
213     @RequiresNoPermission
getInstalledAndEnabledServices()214         List<AccessibilityServiceInfo> getInstalledAndEnabledServices();
215 
216     @RequiresNoPermission
attachAccessibilityOverlayToDisplay(int interactionId, int displayId, in SurfaceControl sc, IAccessibilityInteractionConnectionCallback callback)217     void attachAccessibilityOverlayToDisplay(int interactionId, int displayId, in SurfaceControl sc, IAccessibilityInteractionConnectionCallback callback);
218 
219     @RequiresNoPermission
attachAccessibilityOverlayToWindow(int interactionId, int accessibilityWindowId, in SurfaceControl sc, IAccessibilityInteractionConnectionCallback callback)220     void attachAccessibilityOverlayToWindow(int interactionId, int accessibilityWindowId, in SurfaceControl sc, IAccessibilityInteractionConnectionCallback callback);
221 
222     @EnforcePermission("BLUETOOTH_CONNECT")
connectBluetoothBrailleDisplay(in String bluetoothAddress, in IBrailleDisplayController controller)223     void connectBluetoothBrailleDisplay(in String bluetoothAddress, in IBrailleDisplayController controller);
224 
225 
226     @RequiresNoPermission
connectUsbBrailleDisplay(in UsbDevice usbDevice, in IBrailleDisplayController controller)227     void connectUsbBrailleDisplay(in UsbDevice usbDevice, in IBrailleDisplayController controller);
228 
229     @EnforcePermission("MANAGE_ACCESSIBILITY")
setTestBrailleDisplayData(in List<Bundle> brailleDisplays)230     void setTestBrailleDisplayData(in List<Bundle> brailleDisplays);
231 }