17da6ac33a9de82be52e22846d5f22d502452854cDianne Hackborn/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Copyright 2006, The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
44eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller** Licensed under the Apache License, Version 2.0 (the "License");
54eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller** you may not use this file except in compliance with the License.
64eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller** You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
84eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller**     http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project**
104eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller** Unless required by applicable law or agreed to in writing, software
114eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller** distributed under the License is distributed on an "AS IS" BASIS,
124eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller** See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project*/
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.view;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.view.IInputContext;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.view.IInputMethodClient;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
222f0b17573d4324832f7a20402a3d2b5920bc4866Dianne Hackbornimport android.content.res.CompatibilityInfo;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.Configuration;
240aae2d4e0075fd699cf40b26dca0eb2c3b3e37d2Dianne Hackbornimport android.graphics.Bitmap;
25ac8dea12c17aa047e03a358110aeb60401d36aa2Dianne Hackbornimport android.graphics.Point;
26c9c9a48e7bafae63cb35a9aa69255e80aba83988Svetoslav Ganovimport android.graphics.Rect;
27f752202bee88e31ce765483ba2efa6999ae9c9adAdam Cohenimport android.os.Bundle;
2838e29a61d0c87fe3e391d24e2eb11dd1800d107dDianne Hackbornimport android.os.IRemoteCallback;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.IApplicationToken;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.IOnKeyguardExitResult;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.IRotationWatcher;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.IWindowSession;
33eb94fa7975b1e8742f3b00cec6bd4f9d6b329e3aDianne Hackbornimport android.view.IWindowSessionCallback;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.KeyEvent;
356ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brownimport android.view.InputEvent;
36152e9bb81aa5b2ab4637f4b2dae04b3ce89fa891Svetoslav Ganovimport android.view.MagnificationSpec;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.MotionEvent;
38a41ca77fabe1c7ad12ebb9b69b9e786c07d49fa0Jeff Brownimport android.view.InputChannel;
398d60866e2100db70ecf0502c14768a384514d7e9Jeff Brownimport android.view.InputDevice;
401cf70bbf96930662cab0e699d70b62865766ff52Svetoslav Ganovimport android.view.IInputFilter;
411376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslavimport android.view.WindowContentFrameStats;
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * System private interface to the window manager.
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide}
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinterface IWindowManager
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ===== NOTICE =====
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The first three methods must remain the first three methods. Scripts
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and tools rely on their transaction number to work properly.
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // This is used for debugging
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean startViewServer(int port);   // Transaction #1
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean stopViewServer();            // Transaction #2
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isViewServerRunning();       // Transaction #3
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
60eb94fa7975b1e8742f3b00cec6bd4f9d6b329e3aDianne Hackborn    IWindowSession openSession(in IWindowSessionCallback callback, in IInputMethodClient client,
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            in IInputContext inputContext);
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean inputMethodClientHasFocus(IInputMethodClient client);
63ac8dea12c17aa047e03a358110aeb60401d36aa2Dianne Hackborn
64672cf45de7aa5ad6fd1f75512ee5a451a16c0b39Dianne Hackborn    void getInitialDisplaySize(int displayId, out Point size);
65672cf45de7aa5ad6fd1f75512ee5a451a16c0b39Dianne Hackborn    void getBaseDisplaySize(int displayId, out Point size);
6643aa15912891930833edfc101615a9c881de54a1Jeff Brown    void setForcedDisplaySize(int displayId, int width, int height);
6759c009776dae5ccbdfb93d7151ff2065ca049dc3Craig Mautner    void clearForcedDisplaySize(int displayId);
68672cf45de7aa5ad6fd1f75512ee5a451a16c0b39Dianne Hackborn    int getInitialDisplayDensity(int displayId);
69672cf45de7aa5ad6fd1f75512ee5a451a16c0b39Dianne Hackborn    int getBaseDisplayDensity(int displayId);
70dde331cebd87982faded6818ad5f9927ff994c96Dianne Hackborn    void setForcedDisplayDensity(int displayId, int density);
71dde331cebd87982faded6818ad5f9927ff994c96Dianne Hackborn    void clearForcedDisplayDensity(int displayId);
727916ac65dc492e4e1431879875c77d7121fbf82eDianne Hackborn
73c652de8141f5b8e3c6bcf8916842b6e106413b1aDianne Hackborn    void setOverscan(int displayId, int left, int top, int right, int bottom);
74c652de8141f5b8e3c6bcf8916842b6e106413b1aDianne Hackborn
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // These can only be called when holding the MANAGE_APP_TOKENS permission.
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void pauseKeyDispatching(IBinder token);
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void resumeKeyDispatching(IBinder token);
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setEventDispatching(boolean enabled);
79e4fbd6235c8d1c5b0ed4883ec275dd3fc9c919fbDianne Hackborn    void addWindowToken(IBinder token, int type);
80e4fbd6235c8d1c5b0ed4883ec275dd3fc9c919fbDianne Hackborn    void removeWindowToken(IBinder token);
81c00204b4d14d49a0417b44ca21aee4f0d4c466e0Craig Mautner    void addAppToken(int addPos, IApplicationToken token, int groupId, int stackId,
825d9f547720e07a2715d34320a9e11004654cede6Craig Mautner            int requestedOrientation, boolean fullscreen, boolean showWhenLocked, int userId,
83bb742462781a73bb25516067c8fe6311c1c8a93eCraig Mautner            int configChanges, boolean voiceInteraction, boolean launchTaskBehind);
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppGroupId(IBinder token, int groupId);
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppOrientation(IApplicationToken token, int requestedOrientation);
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getAppOrientation(IApplicationToken token);
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setFocusedApp(IBinder token, boolean moveFocusNow);
887da6ac33a9de82be52e22846d5f22d502452854cDianne Hackborn    void prepareAppTransition(int transit, boolean alwaysKeepCurrent);
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getPendingAppTransition();
9084375876fcef73c5fa9c3de205c7db908ee14e15Dianne Hackborn    void overridePendingAppTransition(String packageName, int enterAnim, int exitAnim,
9184375876fcef73c5fa9c3de205c7db908ee14e15Dianne Hackborn            IRemoteCallback startedCallback);
92eabfb3a36e9469c5e219f92b39b7200104319185Dianne Hackborn    void overridePendingAppTransitionScaleUp(int startX, int startY, int startWidth,
93eabfb3a36e9469c5e219f92b39b7200104319185Dianne Hackborn            int startHeight);
948078d8c8a282ca81344febe7256f63b1e805e3aaDianne Hackborn    void overridePendingAppTransitionThumb(in Bitmap srcThumb, int startX, int startY,
95832cb229cd748505c90f74ae8154fc3557d61a73Michael Jurka            IRemoteCallback startedCallback, boolean scaleUp);
96a4ccb86ddc8f9f486aee25fb836f4aff97bf7679Winson Chung    void overridePendingAppTransitionAspectScaledThumb(in Bitmap srcThumb, int startX,
972e7f3bdcc9ec0b3e95b565b943ecee2210f4b937Winson Chung            int startY, int targetWidth, int targetHeight, IRemoteCallback startedCallback,
982e7f3bdcc9ec0b3e95b565b943ecee2210f4b937Winson Chung            boolean scaleUp);
99044d52934e57a337665f707aa4be1d423ee3fb29Winson Chung    void overridePendingAppTransitionInPlace(String packageName, int anim);
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void executeAppTransition();
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppStartingWindow(IBinder token, String pkg, int theme,
1022f0b17573d4324832f7a20402a3d2b5920bc4866Dianne Hackborn            in CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes,
10304fe6ebb9f919f196ec06a19bebc09b8e943f95bAdam Powell            int icon, int logo, int windowFlags, IBinder transferFrom, boolean createIfNeeded);
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppWillBeHidden(IBinder token);
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAppVisibility(IBinder token, boolean visible);
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void startAppFreezingScreen(IBinder token, int configChanges);
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void stopAppFreezingScreen(IBinder token, boolean force);
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void removeAppToken(IBinder token);
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
110e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    // Re-evaluate the current orientation from the caller's state.
111e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    // If there is a change, the new Configuration is returned and the
112e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    // caller must call setNewConfiguration() sometime later.
113e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    Configuration updateOrientationFromAppTokens(in Configuration currentConfig,
114e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn            IBinder freezeThisOneIfNeeded);
115e36d6e277e49475076b7872d36ea6a5c5b996e9dDianne Hackborn    void setNewConfiguration(in Configuration config);
1164eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller
1179d9ece3c1e16001b63244459cdf4b428f4272d2eDianne Hackborn    void startFreezingScreen(int exitAnim, int enterAnim);
1189d9ece3c1e16001b63244459cdf4b428f4272d2eDianne Hackborn    void stopFreezingScreen();
1199d9ece3c1e16001b63244459cdf4b428f4272d2eDianne Hackborn
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // these require DISABLE_KEYGUARD permission
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void disableKeyguard(IBinder token, String tag);
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void reenableKeyguard(IBinder token);
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void exitKeyguardSecurely(IOnKeyguardExitResult callback);
124520d8bc1d840966b5519195aaa514597a662c053Mike Lockwood    boolean isKeyguardLocked();
125520d8bc1d840966b5519195aaa514597a662c053Mike Lockwood    boolean isKeyguardSecure();
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean inKeyguardRestrictedInputMode();
12790c52de28691ca0bbbf7c039ef20f85ce46882ccDianne Hackborn    void dismissKeyguard();
12884a3e7aacf6dbeccf4afb36a29f2f069dca7d486Jorim Jaggi    void keyguardGoingAway(boolean disableWindowAnimations,
12984a3e7aacf6dbeccf4afb36a29f2f069dca7d486Jorim Jaggi            boolean keyguardGoingToNotificationShade);
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
131ffa424800d0338b8b894aef2ea1e3e3344cbda7aDianne Hackborn    void closeSystemDialogs(String reason);
1324eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // These can only be called with the SET_ANIMATON_SCALE permission.
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float getAnimationScale(int which);
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    float[] getAnimationScales();
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAnimationScale(int which, float scale);
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setAnimationScales(in float[] scales);
1384eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller
139eb94fa7975b1e8742f3b00cec6bd4f9d6b329e3aDianne Hackborn    float getCurrentAnimatorScale();
140eb94fa7975b1e8742f3b00cec6bd4f9d6b329e3aDianne Hackborn
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // For testing
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setInTouchMode(boolean showFocus);
1436804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick
1446804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick    // For StrictMode flashing a red border on violations from the UI
1456804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick    // thread.  The uid/pid is implicit from the Binder call, and the Window
1466804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick    // Manager uses that to determine whether or not the red border should
1476804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick    // actually be shown.  (it will be ignored that pid doesn't have windows
1486804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick    // on screen)
1496804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick    void showStrictModeViolation(boolean on);
1506804433b0af50f33a338307ae8ddb50bc49e886bBrad Fitzpatrick
151c1a968a8ed45181312f7d4bcdbba0cc8ddc201baBrad Fitzpatrick    // Proxy to set the system property for whether the flashing
152c1a968a8ed45181312f7d4bcdbba0cc8ddc201baBrad Fitzpatrick    // should be enabled.  The 'enabled' value is null or blank for
153c1a968a8ed45181312f7d4bcdbba0cc8ddc201baBrad Fitzpatrick    // the system default (differs per build variant) or any valid
154c1a968a8ed45181312f7d4bcdbba0cc8ddc201baBrad Fitzpatrick    // boolean string as parsed by SystemProperties.getBoolean().
155c1a968a8ed45181312f7d4bcdbba0cc8ddc201baBrad Fitzpatrick    void setStrictModeVisualIndicatorPreference(String enabled);
156c1a968a8ed45181312f7d4bcdbba0cc8ddc201baBrad Fitzpatrick
157d2a1eec400128f39e1b223a720a88dbd395f3e6eSander Alewijnse    /**
158a87863a8bddb033ca9ace11e7d78932d70d08ce3Sander Alewijnse     * Set whether screen capture is disabled for all windows of a specific user
159d2a1eec400128f39e1b223a720a88dbd395f3e6eSander Alewijnse     */
160a87863a8bddb033ca9ace11e7d78932d70d08ce3Sander Alewijnse    void setScreenCaptureDisabled(int userId, boolean disabled);
161d2a1eec400128f39e1b223a720a88dbd395f3e6eSander Alewijnse
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // These can only be called with the SET_ORIENTATION permission.
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
16401a98ddbdfbaf1f0d2bc602537e6e314364902a3Jeff Brown     * Update the current screen rotation based on the current state of
16501a98ddbdfbaf1f0d2bc602537e6e314364902a3Jeff Brown     * the world.
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param alwaysSendConfiguration Flag to force a new configuration to
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be evaluated.  This can be used when there are other parameters in
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * configuration that are changing.
169f87d19621dc2a30232bba1f51862a0b671eb9729Dianne Hackborn     * @param forceRelayout If true, the window manager will always do a relayout
170f87d19621dc2a30232bba1f51862a0b671eb9729Dianne Hackborn     * of its windows even if the rotation hasn't changed.
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
172f87d19621dc2a30232bba1f51862a0b671eb9729Dianne Hackborn    void updateRotation(boolean alwaysSendConfiguration, boolean forceRelayout);
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieve the current screen orientation, constants as per
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.view.Surface}.
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getRotation();
1794eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Watch the rotation of the screen.  Returns the current rotation,
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * calls back when it changes.
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int watchRotation(IRotationWatcher watcher);
185b1b9a8ac07ea7d438eda613f4c798dd8b10a66ceBrian Colonna
186b1b9a8ac07ea7d438eda613f4c798dd8b10a66ceBrian Colonna    /**
187b1b9a8ac07ea7d438eda613f4c798dd8b10a66ceBrian Colonna     * Remove a rotation watcher set using watchRotation.
188b1b9a8ac07ea7d438eda613f4c798dd8b10a66ceBrian Colonna     * @hide
189b1b9a8ac07ea7d438eda613f4c798dd8b10a66ceBrian Colonna     */
190b1b9a8ac07ea7d438eda613f4c798dd8b10a66ceBrian Colonna    void removeRotationWatcher(IRotationWatcher watcher);
191b73617de462579f7c12c25a4c2747c576f00f6a2Daniel Sandler
192dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell    /**
193dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell     * Determine the preferred edge of the screen to pin the compact options menu against.
194dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell     * @return a Gravity value for the options menu panel
195dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell     * @hide
196dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell     */
197dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell    int getPreferredOptionsPanelGravity();
198dfee59afb3e4cdcde38f6338f9360655de76da92Adam Powell
1994eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller    /**
2004eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller     * Lock the device orientation to the specified rotation, or to the
2014eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller     * current rotation if -1.  Sensor input will be ignored until
2024eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller     * thawRotation() is called.
2034eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller     * @hide
2044eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller     */
2054eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller    void freezeRotation(int rotation);
2064eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller
2074eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller    /**
2084eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller     * Release the orientation lock imposed by freezeRotation().
2094eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller     * @hide
2104eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller     */
2114eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller    void thawRotation();
2124eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller
2134eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller    /**
2148e3feb15c5aec2c72b0ef120a1da325e1e8f0ddaSvetoslav     * Gets whether the rotation is frozen.
21580943d8daa6ab31ab5c486d57aea406aa0730d58Svetoslav Ganov     *
21680943d8daa6ab31ab5c486d57aea406aa0730d58Svetoslav Ganov     * @return Whether the rotation is frozen.
21780943d8daa6ab31ab5c486d57aea406aa0730d58Svetoslav Ganov     */
21880943d8daa6ab31ab5c486d57aea406aa0730d58Svetoslav Ganov    boolean isRotationFrozen();
21980943d8daa6ab31ab5c486d57aea406aa0730d58Svetoslav Ganov
22080943d8daa6ab31ab5c486d57aea406aa0730d58Svetoslav Ganov    /**
2214eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller     * Create a screenshot of the applications currently displayed.
2224eeb4f664ac6b5901a8e874dcf70c0382295f792Jim Miller     */
223172e87ce5113d75afbf894aef83bd30b43c98f5eJohn Reck    Bitmap screenshotApplications(IBinder appToken, int displayId, int maxWidth,
224172e87ce5113d75afbf894aef83bd30b43c98f5eJohn Reck            int maxHeight, boolean force565);
225664644d9e012aa2a28ac96f305b1ce6499ec8806Joe Onorato
226664644d9e012aa2a28ac96f305b1ce6499ec8806Joe Onorato    /**
227664644d9e012aa2a28ac96f305b1ce6499ec8806Joe Onorato     * Called by the status bar to notify Views of changes to System UI visiblity.
228664644d9e012aa2a28ac96f305b1ce6499ec8806Joe Onorato     */
229e7c285725d1b6af76e7655a79a3e71f3809fdd9fJohn Spurlock    oneway void statusBarVisibilityChanged(int visibility);
2301a84fd1fb7a51f3fe4f8865e1cdd09f3490f696cJeff Brown
2311a84fd1fb7a51f3fe4f8865e1cdd09f3490f696cJeff Brown    /**
2320c4ccff36930ff4f0292b94ad51e164c9fa060a3Daniel Sandler     * Device has a software navigation bar (separate from the status bar).
2330c4ccff36930ff4f0292b94ad51e164c9fa060a3Daniel Sandler     */
2340c4ccff36930ff4f0292b94ad51e164c9fa060a3Daniel Sandler    boolean hasNavigationBar();
23593c518e4f8abd98f87cda1712b30a5a86cfa60ddJim Miller
23693c518e4f8abd98f87cda1712b30a5a86cfa60ddJim Miller    /**
237f752202bee88e31ce765483ba2efa6999ae9c9adAdam Cohen     * Lock the device immediately with the specified options (can be null).
23893c518e4f8abd98f87cda1712b30a5a86cfa60ddJim Miller     */
239f752202bee88e31ce765483ba2efa6999ae9c9adAdam Cohen    void lockNow(in Bundle options);
240c9c9a48e7bafae63cb35a9aa69255e80aba83988Svetoslav Ganov
241c9c9a48e7bafae63cb35a9aa69255e80aba83988Svetoslav Ganov    /**
242bfec0a8616bc197ee3b7b71be6fed1939d0c3c4dJim Miller     * Device is in safe mode.
243bfec0a8616bc197ee3b7b71be6fed1939d0c3c4dJim Miller     */
244bfec0a8616bc197ee3b7b71be6fed1939d0c3c4dJim Miller    boolean isSafeModeEnabled();
245cff0acb6b1eea23c3f44a078a0a5e81c11faea35Jorim Jaggi
246cff0acb6b1eea23c3f44a078a0a5e81c11faea35Jorim Jaggi    /**
247cff0acb6b1eea23c3f44a078a0a5e81c11faea35Jorim Jaggi     * Enables the screen if all conditions are met.
248cff0acb6b1eea23c3f44a078a0a5e81c11faea35Jorim Jaggi     */
249cff0acb6b1eea23c3f44a078a0a5e81c11faea35Jorim Jaggi    void enableScreenIfNeeded();
250dd137a85d3e0295989b5b9d1f67ff32027be867dSvetoslav
251dd137a85d3e0295989b5b9d1f67ff32027be867dSvetoslav    /**
2521376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav     * Clears the frame statistics for a given window.
2531376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav     *
2541376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav     * @param token The window token.
2551376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav     * @return Whether the frame statistics were cleared.
2561376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav     */
2571376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav    boolean clearWindowContentFrameStats(IBinder token);
2581376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav
2591376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav    /**
2601376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav     * Gets the content frame statistics for a given window.
2611376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav     *
2621376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav     * @param token The window token.
2631376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav     * @return The frame statistics or null if the window does not exist.
2641376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav     */
2651376d600d8e0eefdbc0aa11d398cf7517fc77129Svetoslav    WindowContentFrameStats getWindowContentFrameStats(IBinder token);
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
267