IWindowManager.aidl revision 38e29a61d0c87fe3e391d24e2eb11dd1800d107d
1/*
2** Copyright 2006, 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
17package android.view;
18
19import com.android.internal.view.IInputContext;
20import com.android.internal.view.IInputMethodClient;
21
22import android.content.res.CompatibilityInfo;
23import android.content.res.Configuration;
24import android.graphics.Bitmap;
25import android.graphics.Point;
26import android.os.IRemoteCallback;
27import android.view.IApplicationToken;
28import android.view.IOnKeyguardExitResult;
29import android.view.IRotationWatcher;
30import android.view.IWindowSession;
31import android.view.KeyEvent;
32import android.view.InputEvent;
33import android.view.MotionEvent;
34import android.view.InputChannel;
35import android.view.InputDevice;
36
37/**
38 * System private interface to the window manager.
39 *
40 * {@hide}
41 */
42interface IWindowManager
43{
44    /**
45     * ===== NOTICE =====
46     * The first three methods must remain the first three methods. Scripts
47     * and tools rely on their transaction number to work properly.
48     */
49    // This is used for debugging
50    boolean startViewServer(int port);   // Transaction #1
51    boolean stopViewServer();            // Transaction #2
52    boolean isViewServerRunning();       // Transaction #3
53
54    IWindowSession openSession(in IInputMethodClient client,
55            in IInputContext inputContext);
56    boolean inputMethodClientHasFocus(IInputMethodClient client);
57
58    void getDisplaySize(out Point size);
59    void getRealDisplaySize(out Point size);
60    int getMaximumSizeDimension();
61
62    void setForcedDisplaySize(int longDimen, int shortDimen);
63    void clearForcedDisplaySize();
64
65    // Is device configured with a hideable status bar or a tablet system bar?
66    boolean canStatusBarHide();
67
68    // These can only be called when injecting events to your own window,
69    // or by holding the INJECT_EVENTS permission.  These methods may block
70    // until pending input events are finished being dispatched even when 'sync' is false.
71    // Avoid calling these methods on your UI thread or use the 'NoWait' version instead.
72    boolean injectKeyEvent(in KeyEvent ev, boolean sync);
73    boolean injectPointerEvent(in MotionEvent ev, boolean sync);
74    boolean injectTrackballEvent(in MotionEvent ev, boolean sync);
75    boolean injectInputEventNoWait(in InputEvent ev);
76
77    // These can only be called when holding the MANAGE_APP_TOKENS permission.
78    void pauseKeyDispatching(IBinder token);
79    void resumeKeyDispatching(IBinder token);
80    void setEventDispatching(boolean enabled);
81    void addWindowToken(IBinder token, int type);
82    void removeWindowToken(IBinder token);
83    void addAppToken(int addPos, IApplicationToken token,
84            int groupId, int requestedOrientation, boolean fullscreen);
85    void setAppGroupId(IBinder token, int groupId);
86    void setAppOrientation(IApplicationToken token, int requestedOrientation);
87    int getAppOrientation(IApplicationToken token);
88    void setFocusedApp(IBinder token, boolean moveFocusNow);
89    void prepareAppTransition(int transit, boolean alwaysKeepCurrent);
90    int getPendingAppTransition();
91    void overridePendingAppTransition(String packageName, int enterAnim, int exitAnim);
92    void executeAppTransition();
93    void setAppStartingWindow(IBinder token, String pkg, int theme,
94            in CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes,
95            int icon, int windowFlags, IBinder transferFrom, boolean createIfNeeded);
96    void setAppWillBeHidden(IBinder token);
97    void setAppVisibility(IBinder token, boolean visible);
98    void startAppFreezingScreen(IBinder token, int configChanges);
99    void stopAppFreezingScreen(IBinder token, boolean force);
100    void removeAppToken(IBinder token);
101    void moveAppToken(int index, IBinder token);
102    void moveAppTokensToTop(in List<IBinder> tokens);
103    void moveAppTokensToBottom(in List<IBinder> tokens);
104
105    // Re-evaluate the current orientation from the caller's state.
106    // If there is a change, the new Configuration is returned and the
107    // caller must call setNewConfiguration() sometime later.
108    Configuration updateOrientationFromAppTokens(in Configuration currentConfig,
109            IBinder freezeThisOneIfNeeded);
110    void setNewConfiguration(in Configuration config);
111
112    // these require DISABLE_KEYGUARD permission
113    void disableKeyguard(IBinder token, String tag);
114    void reenableKeyguard(IBinder token);
115    void exitKeyguardSecurely(IOnKeyguardExitResult callback);
116    boolean isKeyguardLocked();
117    boolean isKeyguardSecure();
118    boolean inKeyguardRestrictedInputMode();
119
120    void closeSystemDialogs(String reason);
121
122    // These can only be called with the SET_ANIMATON_SCALE permission.
123    float getAnimationScale(int which);
124    float[] getAnimationScales();
125    void setAnimationScale(int which, float scale);
126    void setAnimationScales(in float[] scales);
127
128    // These require the READ_INPUT_STATE permission.
129    int getSwitchState(int sw);
130    int getSwitchStateForDevice(int devid, int sw);
131    int getScancodeState(int sw);
132    int getScancodeStateForDevice(int devid, int sw);
133    int getTrackballScancodeState(int sw);
134    int getDPadScancodeState(int sw);
135    int getKeycodeState(int sw);
136    int getKeycodeStateForDevice(int devid, int sw);
137    int getTrackballKeycodeState(int sw);
138    int getDPadKeycodeState(int sw);
139    InputChannel monitorInput(String inputChannelName);
140
141    // Report whether the hardware supports the given keys; returns true if successful
142    boolean hasKeys(in int[] keycodes, inout boolean[] keyExists);
143
144    // Get input device information.
145    InputDevice getInputDevice(int deviceId);
146    int[] getInputDeviceIds();
147
148    // For testing
149    void setInTouchMode(boolean showFocus);
150
151    // For StrictMode flashing a red border on violations from the UI
152    // thread.  The uid/pid is implicit from the Binder call, and the Window
153    // Manager uses that to determine whether or not the red border should
154    // actually be shown.  (it will be ignored that pid doesn't have windows
155    // on screen)
156    void showStrictModeViolation(boolean on);
157
158    // Proxy to set the system property for whether the flashing
159    // should be enabled.  The 'enabled' value is null or blank for
160    // the system default (differs per build variant) or any valid
161    // boolean string as parsed by SystemProperties.getBoolean().
162    void setStrictModeVisualIndicatorPreference(String enabled);
163
164    // These can only be called with the SET_ORIENTATION permission.
165    /**
166     * Change the current screen rotation, constants as per
167     * {@link android.view.Surface}.
168     * @param rotation the intended rotation.
169     * @param alwaysSendConfiguration Flag to force a new configuration to
170     * be evaluated.  This can be used when there are other parameters in
171     * configuration that are changing.
172     * @param animFlags Animation flags as per {@link android.view.Surface}.
173     */
174    void setRotation(int rotation, boolean alwaysSendConfiguration, int animFlags);
175
176    /**
177     * Retrieve the current screen orientation, constants as per
178     * {@link android.view.Surface}.
179     */
180    int getRotation();
181
182    /**
183     * Watch the rotation of the screen.  Returns the current rotation,
184     * calls back when it changes.
185     */
186    int watchRotation(IRotationWatcher watcher);
187
188    /**
189     * Determine the preferred edge of the screen to pin the compact options menu against.
190     * @return a Gravity value for the options menu panel
191     * @hide
192     */
193    int getPreferredOptionsPanelGravity();
194
195	/**
196	 * Lock the device orientation to the current rotation. Sensor input will
197	 * be ignored until thawRotation() is called.
198	 * @hide
199	 */
200	void freezeRotation();
201
202	/**
203	 * Release the orientation lock imposed by freezeRotation().
204	 * @hide
205	 */
206	void thawRotation();
207
208	/**
209	 * Create a screenshot of the applications currently displayed.
210	 */
211	Bitmap screenshotApplications(IBinder appToken, int maxWidth, int maxHeight);
212
213    /**
214     * Called by the status bar to notify Views of changes to System UI visiblity.
215     */
216    void statusBarVisibilityChanged(int visibility);
217
218    /**
219     * Called by the settings application to temporarily set the pointer speed.
220     */
221    void setPointerSpeed(int speed);
222
223    /**
224     * Block until the given window has been drawn to the screen.
225     */
226    void waitForWindowDrawn(IBinder token, in IRemoteCallback callback);
227}
228