1/* //device/java/android/android/view/IWindowManager.aidl 2** 3** Copyright 2006, The Android Open Source Project 4** 5** Licensed under the Apache License, Version 2.0 (the "License"); 6** you may not use this file except in compliance with the License. 7** You may obtain a copy of the License at 8** 9** http://www.apache.org/licenses/LICENSE-2.0 10** 11** Unless required by applicable law or agreed to in writing, software 12** distributed under the License is distributed on an "AS IS" BASIS, 13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14** See the License for the specific language governing permissions and 15** limitations under the License. 16*/ 17 18package android.view; 19 20import com.android.internal.view.IInputContext; 21import com.android.internal.view.IInputMethodClient; 22 23import android.content.res.Configuration; 24import android.view.IApplicationToken; 25import android.view.IOnKeyguardExitResult; 26import android.view.IRotationWatcher; 27import android.view.IWindowSession; 28import android.view.KeyEvent; 29import android.view.MotionEvent; 30 31/** 32 * System private interface to the window manager. 33 * 34 * {@hide} 35 */ 36interface IWindowManager 37{ 38 /** 39 * ===== NOTICE ===== 40 * The first three methods must remain the first three methods. Scripts 41 * and tools rely on their transaction number to work properly. 42 */ 43 // This is used for debugging 44 boolean startViewServer(int port); // Transaction #1 45 boolean stopViewServer(); // Transaction #2 46 boolean isViewServerRunning(); // Transaction #3 47 48 IWindowSession openSession(in IInputMethodClient client, 49 in IInputContext inputContext); 50 boolean inputMethodClientHasFocus(IInputMethodClient client); 51 52 // These can only be called when injecting events to your own window, 53 // or by holding the INJECT_EVENTS permission. 54 boolean injectKeyEvent(in KeyEvent ev, boolean sync); 55 boolean injectPointerEvent(in MotionEvent ev, boolean sync); 56 boolean injectTrackballEvent(in MotionEvent ev, boolean sync); 57 58 // These can only be called when holding the MANAGE_APP_TOKENS permission. 59 void pauseKeyDispatching(IBinder token); 60 void resumeKeyDispatching(IBinder token); 61 void setEventDispatching(boolean enabled); 62 void addWindowToken(IBinder token, int type); 63 void removeWindowToken(IBinder token); 64 void addAppToken(int addPos, IApplicationToken token, 65 int groupId, int requestedOrientation, boolean fullscreen); 66 void setAppGroupId(IBinder token, int groupId); 67 void setAppOrientation(IApplicationToken token, int requestedOrientation); 68 int getAppOrientation(IApplicationToken token); 69 void setFocusedApp(IBinder token, boolean moveFocusNow); 70 void prepareAppTransition(int transit); 71 int getPendingAppTransition(); 72 void overridePendingAppTransition(String packageName, int enterAnim, int exitAnim); 73 void executeAppTransition(); 74 void setAppStartingWindow(IBinder token, String pkg, int theme, 75 CharSequence nonLocalizedLabel, int labelRes, 76 int icon, IBinder transferFrom, boolean createIfNeeded); 77 void setAppWillBeHidden(IBinder token); 78 void setAppVisibility(IBinder token, boolean visible); 79 void startAppFreezingScreen(IBinder token, int configChanges); 80 void stopAppFreezingScreen(IBinder token, boolean force); 81 void removeAppToken(IBinder token); 82 void moveAppToken(int index, IBinder token); 83 void moveAppTokensToTop(in List<IBinder> tokens); 84 void moveAppTokensToBottom(in List<IBinder> tokens); 85 86 // Re-evaluate the current orientation from the caller's state. 87 // If there is a change, the new Configuration is returned and the 88 // caller must call setNewConfiguration() sometime later. 89 Configuration updateOrientationFromAppTokens(in Configuration currentConfig, 90 IBinder freezeThisOneIfNeeded); 91 void setNewConfiguration(in Configuration config); 92 93 // these require DISABLE_KEYGUARD permission 94 void disableKeyguard(IBinder token, String tag); 95 void reenableKeyguard(IBinder token); 96 void exitKeyguardSecurely(IOnKeyguardExitResult callback); 97 boolean inKeyguardRestrictedInputMode(); 98 99 void closeSystemDialogs(String reason); 100 101 // These can only be called with the SET_ANIMATON_SCALE permission. 102 float getAnimationScale(int which); 103 float[] getAnimationScales(); 104 void setAnimationScale(int which, float scale); 105 void setAnimationScales(in float[] scales); 106 107 // These require the READ_INPUT_STATE permission. 108 int getSwitchState(int sw); 109 int getSwitchStateForDevice(int devid, int sw); 110 int getScancodeState(int sw); 111 int getScancodeStateForDevice(int devid, int sw); 112 int getTrackballScancodeState(int sw); 113 int getDPadScancodeState(int sw); 114 int getKeycodeState(int sw); 115 int getKeycodeStateForDevice(int devid, int sw); 116 int getTrackballKeycodeState(int sw); 117 int getDPadKeycodeState(int sw); 118 119 // Report whether the hardware supports the given keys; returns true if successful 120 boolean hasKeys(in int[] keycodes, inout boolean[] keyExists); 121 122 // For testing 123 void setInTouchMode(boolean showFocus); 124 125 // These can only be called with the SET_ORIENTATION permission. 126 /** 127 * Change the current screen rotation, constants as per 128 * {@link android.view.Surface}. 129 * @param rotation the intended rotation. 130 * @param alwaysSendConfiguration Flag to force a new configuration to 131 * be evaluated. This can be used when there are other parameters in 132 * configuration that are changing. 133 * @param animFlags Animation flags as per {@link android.view.Surface}. 134 */ 135 void setRotation(int rotation, boolean alwaysSendConfiguration, int animFlags); 136 137 /** 138 * Retrieve the current screen orientation, constants as per 139 * {@link android.view.Surface}. 140 */ 141 int getRotation(); 142 143 /** 144 * Watch the rotation of the screen. Returns the current rotation, 145 * calls back when it changes. 146 */ 147 int watchRotation(IRotationWatcher watcher); 148} 149