diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index eddd04ebd3144..7cb4671b4ae26 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -611,6 +611,19 @@ public interface WindowManager extends ViewManager { * {@hide} */ public static final int FLAG_SPLIT_TOUCH = 0x00800000; + /** + * Flag for a window belonging to an activity that responds to {@link KeyEvent#KEYCODE_MENU} + * and therefore needs a Menu key. For devices where Menu is a physical button this flag is + * ignored, but on devices where the Menu key is drawn in software it may be hidden unless + * this flag is set. + * + * (Note that Action Bars, when available, are the preferred way to offer additional + * functions otherwise accessed via an options menu.) + * + * {@hide} + */ + public static final int FLAG_NEEDS_MENU_KEY = 0x01000000; + /** Window flag: *sigh* The lock screen wants to continue running its * animation while it is fading. A kind-of hack to allow this. Maybe * in the future we just make this the default behavior. diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl index e884af824eb29..34a5b118626ed 100644 --- a/core/java/com/android/internal/statusbar/IStatusBar.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl @@ -31,5 +31,6 @@ oneway interface IStatusBar void animateExpand(); void animateCollapse(); void setLightsOn(boolean on); + void setMenuKeyVisible(boolean visible); } diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl index 0763f5e6938ac..90f4d480ff2ee 100644 --- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl @@ -31,12 +31,13 @@ interface IStatusBarService void setIconVisibility(String slot, boolean visible); void removeIcon(String slot); void setActiveWindowIsFullscreen(boolean fullscreen); + void setMenuKeyVisible(boolean visible); // ---- Methods below are for use by the status bar policy services ---- // You need the STATUS_BAR_SERVICE permission void registerStatusBar(IStatusBar callbacks, out StatusBarIconList iconList, out List notificationKeys, out List notifications, - out boolean[] lightsOn); + out boolean[] switches); void onPanelRevealed(); void onNotificationClick(String pkg, String tag, int id); void onNotificationError(String pkg, String tag, int id, diff --git a/packages/SystemUI/res/layout-xlarge/status_bar.xml b/packages/SystemUI/res/layout-xlarge/status_bar.xml index 494dfa88b727b..295c79b72a5d9 100644 --- a/packages/SystemUI/res/layout-xlarge/status_bar.xml +++ b/packages/SystemUI/res/layout-xlarge/status_bar.xml @@ -144,6 +144,7 @@ android:paddingLeft="4dip" android:paddingRight="4dip" systemui:keyCode="82" + android:visibility="invisible" /> notificationKeys, List notifications, - boolean lightsOn[]) { + boolean switches[]) { enforceStatusBarService(); Slog.i(TAG, "registerStatusBar bar=" + bar); @@ -332,7 +360,8 @@ public class StatusBarManagerService extends IStatusBarService.Stub } } synchronized (mLock) { - lightsOn[0] = mLightsOn; + switches[0] = mLightsOn; + switches[1] = mMenuVisible; } }