diff options
author | Joe Onorato <joeo@google.com> | 2011-01-23 17:53:23 -0800 |
---|---|---|
committer | Joe Onorato <joeo@google.com> | 2011-01-23 19:22:52 -0800 |
commit | 664644d9e012aa2a28ac96f305b1ce6499ec8806 (patch) | |
tree | d8db43b09de516fefd82adf4fc4ec22417dda648 /services | |
parent | fac86056b285bf59c1c3e774f1cb9f6de0be59ba (diff) | |
download | frameworks_base-664644d9e012aa2a28ac96f305b1ce6499ec8806.zip frameworks_base-664644d9e012aa2a28ac96f305b1ce6499ec8806.tar.gz frameworks_base-664644d9e012aa2a28ac96f305b1ce6499ec8806.tar.bz2 |
visibility ("lights out") API.
1. Views may setSystemUiVisibility() to recommend that
the system chrome (status bar or other UI) show or hide
itself. (This functionality was previously available only
via the FLAG_FULLSCREEN window flag for some SystemUI
implementations.)
2. Views may register a OnSystemUiVisibilityChangedListener
on a view, and find out when the system UI actually
appears or disappears, allowing apps to coordinate the
appearance of their own UI if desired.
Bug: 3241144
Change-Id: Ia1758d94099182d49a1e3688ea2738ae4995b829
Diffstat (limited to 'services')
-rw-r--r-- | services/java/com/android/server/StatusBarManagerService.java | 4 | ||||
-rw-r--r-- | services/java/com/android/server/WindowManagerService.java | 19 |
2 files changed, 22 insertions, 1 deletions
diff --git a/services/java/com/android/server/StatusBarManagerService.java b/services/java/com/android/server/StatusBarManagerService.java index cbfa4ee..50ea3fa 100644 --- a/services/java/com/android/server/StatusBarManagerService.java +++ b/services/java/com/android/server/StatusBarManagerService.java @@ -32,6 +32,7 @@ import android.os.Binder; import android.os.Handler; import android.os.SystemClock; import android.util.Slog; +import android.view.View; import com.android.internal.statusbar.IStatusBar; import com.android.internal.statusbar.IStatusBarService; @@ -308,10 +309,11 @@ public class StatusBarManagerService extends IStatusBarService.Stub * app keeps trying to turn it on. For now they can just fight it out. Having * these two separte inputs will allow us to keep that change local to here. --joeo */ - public void setLightsOn(boolean lightsOn) { + public void setSystemUiVisibility(int vis) { enforceStatusBarService(); synchronized (mLock) { + final boolean lightsOn = (vis & View.STATUS_BAR_HIDDEN) == 0; updateLightsOnLocked(lightsOn); } } diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index ac3b96b..8a353ce 100644 --- a/services/java/com/android/server/WindowManagerService.java +++ b/services/java/com/android/server/WindowManagerService.java @@ -8891,6 +8891,8 @@ public class WindowManagerService extends IWindowManager.Stub // Ignore if process has died. } } + + mPolicy.focusChanged(lastFocus, newFocus); } } break; @@ -11434,6 +11436,23 @@ public class WindowManagerService extends IWindowManager.Stub } @Override + public void statusBarVisibilityChanged(int visibility) { + synchronized (mWindowMap) { + final int N = mWindows.size(); + for (int i = 0; i < N; i++) { + WindowState ws = mWindows.get(i); + try { + if (ws.getAttrs().hasSystemUiListeners) { + ws.mClient.dispatchSystemUiVisibilityChanged(visibility); + } + } catch (RemoteException e) { + // so sorry + } + } + } + } + + @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (mContext.checkCallingOrSelfPermission("android.permission.DUMP") != PackageManager.PERMISSION_GRANTED) { |