IWindowManager.aidl revision b73617de462579f7c12c25a4c2747c576f00f6a2
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* //device/java/android/android/view/IWindowManager.aidl
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Copyright 2006, The Android Open Source Project
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** you may not use this file except in compliance with the License.
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** You may obtain a copy of the License at
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**     http://www.apache.org/licenses/LICENSE-2.0
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Unless required by applicable law or agreed to in writing, software
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS,
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** See the License for the specific language governing permissions and
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** limitations under the License.
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project*/
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.view;
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.view.IInputContext;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.view.IInputMethodClient;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.Configuration;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.IApplicationToken;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.IOnKeyguardExitResult;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.IRotationWatcher;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.IWindowSession;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.KeyEvent;
296ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brownimport android.view.InputEvent;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.MotionEvent;
31a41ca77fabe1c7ad12ebb9b69b9e786c07d49fa0Jeff Brownimport android.view.InputChannel;
328d60866e2100db70ecf0502c14768a384514d7e9Jeff Brownimport android.view.InputDevice;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * System private interface to the window manager.
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide}
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinterface IWindowManager
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ===== NOTICE =====
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The first three methods must remain the first three methods. Scripts
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and tools rely on their transaction number to work properly.
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // This is used for debugging
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean startViewServer(int port);   // Transaction #1
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean stopViewServer();            // Transaction #2
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isViewServerRunning();       // Transaction #3
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    IWindowSession openSession(in IInputMethodClient client,
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            in IInputContext inputContext);
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean inputMethodClientHasFocus(IInputMethodClient client);
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // These can only be called when injecting events to your own window,
566ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown    // or by holding the INJECT_EVENTS permission.  These methods may block
576ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown    // until pending input events are finished being dispatched even when 'sync' is false.
586ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown    // Avoid calling these methods on your UI thread or use the 'NoWait' version instead.
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean injectKeyEvent(in KeyEvent ev, boolean sync);
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean injectPointerEvent(in MotionEvent ev, boolean sync);
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean injectTrackballEvent(in MotionEvent ev, boolean sync);
626ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown    boolean injectInputEventNoWait(in InputEvent ev);
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // These can only be called when holding the MANAGE_APP_TOKENS permission.
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void pauseKeyDispatching(IBinder token);
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void resumeKeyDispatching(IBinder token);
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setEventDispatching(boolean enabled);
68e4fbd6235c8d1c5b0ed4883ec275dd3fc9c919fbDianne Hackborn    void addWindowToken(IBinder token, int type);
69e4fbd6235c8d1c5b0ed4883ec275dd3fc9c919fbDianne Hackborn    void removeWindowToken(IBinder token);
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void addAppToken(int addPos, IApplicationToken token,
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int groupId, int requestedOrientation, boolean fullscreen);
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppGroupId(IBinder token, int groupId);
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppOrientation(IApplicationToken token, int requestedOrientation);
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getAppOrientation(IApplicationToken token);
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setFocusedApp(IBinder token, boolean moveFocusNow);
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void prepareAppTransition(int transit);
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getPendingAppTransition();
783b3e145d3c41fd68974e08f799b1fd1f8f060cf0Dianne Hackborn    void overridePendingAppTransition(String packageName, int enterAnim, int exitAnim);
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void executeAppTransition();
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppStartingWindow(IBinder token, String pkg, int theme,
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            CharSequence nonLocalizedLabel, int labelRes,
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int icon, IBinder transferFrom, boolean createIfNeeded);
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppWillBeHidden(IBinder token);
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppVisibility(IBinder token, boolean visible);
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void startAppFreezingScreen(IBinder token, int configChanges);
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void stopAppFreezingScreen(IBinder token, boolean force);
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void removeAppToken(IBinder token);
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void moveAppToken(int index, IBinder token);
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void moveAppTokensToTop(in List<IBinder> tokens);
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void moveAppTokensToBottom(in List<IBinder> tokens);
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
92e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    // Re-evaluate the current orientation from the caller's state.
93e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    // If there is a change, the new Configuration is returned and the
94e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    // caller must call setNewConfiguration() sometime later.
95e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    Configuration updateOrientationFromAppTokens(in Configuration currentConfig,
96e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn            IBinder freezeThisOneIfNeeded);
97e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    void setNewConfiguration(in Configuration config);
98e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // these require DISABLE_KEYGUARD permission
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void disableKeyguard(IBinder token, String tag);
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void reenableKeyguard(IBinder token);
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void exitKeyguardSecurely(IOnKeyguardExitResult callback);
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean inKeyguardRestrictedInputMode();
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
105ffa424800d0338b8b894aef2ea1e3e3344cbda7aDianne Hackborn    void closeSystemDialogs(String reason);
106ffa424800d0338b8b894aef2ea1e3e3344cbda7aDianne Hackborn
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // These can only be called with the SET_ANIMATON_SCALE permission.
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float getAnimationScale(int which);
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float[] getAnimationScales();
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAnimationScale(int which, float scale);
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAnimationScales(in float[] scales);
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // These require the READ_INPUT_STATE permission.
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getSwitchState(int sw);
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getSwitchStateForDevice(int devid, int sw);
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getScancodeState(int sw);
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getScancodeStateForDevice(int devid, int sw);
1181d62ea9d8c2646d198b6967e2c6ae3dad5c18f9eDianne Hackborn    int getTrackballScancodeState(int sw);
1191d62ea9d8c2646d198b6967e2c6ae3dad5c18f9eDianne Hackborn    int getDPadScancodeState(int sw);
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getKeycodeState(int sw);
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getKeycodeStateForDevice(int devid, int sw);
1221d62ea9d8c2646d198b6967e2c6ae3dad5c18f9eDianne Hackborn    int getTrackballKeycodeState(int sw);
1231d62ea9d8c2646d198b6967e2c6ae3dad5c18f9eDianne Hackborn    int getDPadKeycodeState(int sw);
124a41ca77fabe1c7ad12ebb9b69b9e786c07d49fa0Jeff Brown    InputChannel monitorInput(String inputChannelName);
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // Report whether the hardware supports the given keys; returns true if successful
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean hasKeys(in int[] keycodes, inout boolean[] keyExists);
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1298d60866e2100db70ecf0502c14768a384514d7e9Jeff Brown    // Get input device information.
1308d60866e2100db70ecf0502c14768a384514d7e9Jeff Brown    InputDevice getInputDevice(int deviceId);
1318d60866e2100db70ecf0502c14768a384514d7e9Jeff Brown    int[] getInputDeviceIds();
1328d60866e2100db70ecf0502c14768a384514d7e9Jeff Brown
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // For testing
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setInTouchMode(boolean showFocus);
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // These can only be called with the SET_ORIENTATION permission.
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Change the current screen rotation, constants as per
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.Surface}.
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param rotation the intended rotation.
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param alwaysSendConfiguration Flag to force a new configuration to
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be evaluated.  This can be used when there are other parameters in
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * configuration that are changing.
144e4fbd6235c8d1c5b0ed4883ec275dd3fc9c919fbDianne Hackborn     * @param animFlags Animation flags as per {@link android.view.Surface}.
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
146e4fbd6235c8d1c5b0ed4883ec275dd3fc9c919fbDianne Hackborn    void setRotation(int rotation, boolean alwaysSendConfiguration, int animFlags);
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve the current screen orientation, constants as per
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.Surface}.
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getRotation();
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Watch the rotation of the screen.  Returns the current rotation,
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * calls back when it changes.
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int watchRotation(IRotationWatcher watcher);
159b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler
160b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	/**
161b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	 * Lock the device orientation to the current rotation. Sensor input will
162b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	 * be ignored until thawRotation() is called.
163b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	 * @hide
164b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	 */
165b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	void freezeRotation();
166b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler
167b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	/**
168b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	 * Release the orientation lock imposed by freezeRotation().
169b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	 * @hide
170b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	 */
171b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler	void thawRotation();
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
173