19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 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 17305c78cce649056643641c51f12f2b6d2eb839f3Jim Miller 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.app; 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franzimport android.annotation.IntDef; 21d86b8fea43ebb6e5c31691b44d8ceb0d8d3c9072Jeff Sharkeyimport android.annotation.SystemService; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Binder; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.RemoteException; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IBinder; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.ServiceManager; 279cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandlerimport android.util.Slog; 287bb8eeb90cf55f409a282c1f36ca08aa48c10543Joe Onoratoimport android.view.View; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 300cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onoratoimport com.android.internal.statusbar.IStatusBarService; 310cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 32cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franzimport java.lang.annotation.Retention; 33cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franzimport java.lang.annotation.RetentionPolicy; 34cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Allows an app to control the status bar. 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 40d86b8fea43ebb6e5c31691b44d8ceb0d8d3c9072Jeff Sharkey@SystemService(Context.STATUS_BAR_SERVICE) 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class StatusBarManager { 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 437bb8eeb90cf55f409a282c1f36ca08aa48c10543Joe Onorato public static final int DISABLE_EXPAND = View.STATUS_BAR_DISABLE_EXPAND; 447bb8eeb90cf55f409a282c1f36ca08aa48c10543Joe Onorato public static final int DISABLE_NOTIFICATION_ICONS = View.STATUS_BAR_DISABLE_NOTIFICATION_ICONS; 457bb8eeb90cf55f409a282c1f36ca08aa48c10543Joe Onorato public static final int DISABLE_NOTIFICATION_ALERTS 467bb8eeb90cf55f409a282c1f36ca08aa48c10543Joe Onorato = View.STATUS_BAR_DISABLE_NOTIFICATION_ALERTS; 47a5e0f415d351ad1a9c0ffde8d93df91a2384591fDan Sandler @Deprecated 487bb8eeb90cf55f409a282c1f36ca08aa48c10543Joe Onorato public static final int DISABLE_NOTIFICATION_TICKER 497bb8eeb90cf55f409a282c1f36ca08aa48c10543Joe Onorato = View.STATUS_BAR_DISABLE_NOTIFICATION_TICKER; 507bb8eeb90cf55f409a282c1f36ca08aa48c10543Joe Onorato public static final int DISABLE_SYSTEM_INFO = View.STATUS_BAR_DISABLE_SYSTEM_INFO; 51dba935659024a9ca83cb6bd3f1a9970e277f7658Daniel Sandler public static final int DISABLE_HOME = View.STATUS_BAR_DISABLE_HOME; 52dba935659024a9ca83cb6bd3f1a9970e277f7658Daniel Sandler public static final int DISABLE_RECENT = View.STATUS_BAR_DISABLE_RECENT; 536478adc6b4c35f8c56176582bcde029998e7436fJoe Onorato public static final int DISABLE_BACK = View.STATUS_BAR_DISABLE_BACK; 547bb8eeb90cf55f409a282c1f36ca08aa48c10543Joe Onorato public static final int DISABLE_CLOCK = View.STATUS_BAR_DISABLE_CLOCK; 55d5483c3157a28e2ebc05a0c918df8a2be0a7fc89Daniel Sandler public static final int DISABLE_SEARCH = View.STATUS_BAR_DISABLE_SEARCH; 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 57dba935659024a9ca83cb6bd3f1a9970e277f7658Daniel Sandler @Deprecated 58dba935659024a9ca83cb6bd3f1a9970e277f7658Daniel Sandler public static final int DISABLE_NAVIGATION = 59dba935659024a9ca83cb6bd3f1a9970e277f7658Daniel Sandler View.STATUS_BAR_DISABLE_HOME | View.STATUS_BAR_DISABLE_RECENT; 60dba935659024a9ca83cb6bd3f1a9970e277f7658Daniel Sandler 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int DISABLE_NONE = 0x00000000; 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 637bb8eeb90cf55f409a282c1f36ca08aa48c10543Joe Onorato public static final int DISABLE_MASK = DISABLE_EXPAND | DISABLE_NOTIFICATION_ICONS 647bb8eeb90cf55f409a282c1f36ca08aa48c10543Joe Onorato | DISABLE_NOTIFICATION_ALERTS | DISABLE_NOTIFICATION_TICKER 65d5483c3157a28e2ebc05a0c918df8a2be0a7fc89Daniel Sandler | DISABLE_SYSTEM_INFO | DISABLE_RECENT | DISABLE_HOME | DISABLE_BACK | DISABLE_CLOCK 66d5483c3157a28e2ebc05a0c918df8a2be0a7fc89Daniel Sandler | DISABLE_SEARCH; 677bb8eeb90cf55f409a282c1f36ca08aa48c10543Joe Onorato 6827cf146361125d1233c487ec215d5d794f5dde17Benjamin Franz /** 6927cf146361125d1233c487ec215d5d794f5dde17Benjamin Franz * Flag to disable quick settings. 7027cf146361125d1233c487ec215d5d794f5dde17Benjamin Franz * 7127cf146361125d1233c487ec215d5d794f5dde17Benjamin Franz * Setting this flag disables quick settings completely, but does not disable expanding the 7227cf146361125d1233c487ec215d5d794f5dde17Benjamin Franz * notification shade. 7327cf146361125d1233c487ec215d5d794f5dde17Benjamin Franz */ 7427cf146361125d1233c487ec215d5d794f5dde17Benjamin Franz public static final int DISABLE2_QUICK_SETTINGS = 0x00000001; 7527cf146361125d1233c487ec215d5d794f5dde17Benjamin Franz 76cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz public static final int DISABLE2_NONE = 0x00000000; 77cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz 7827cf146361125d1233c487ec215d5d794f5dde17Benjamin Franz public static final int DISABLE2_MASK = DISABLE2_QUICK_SETTINGS; 79cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz 80cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz @IntDef(flag = true, 8127cf146361125d1233c487ec215d5d794f5dde17Benjamin Franz value = {DISABLE2_NONE, DISABLE2_MASK, DISABLE2_QUICK_SETTINGS}) 82cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz @Retention(RetentionPolicy.SOURCE) 83cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz public @interface Disable2Flags {} 84cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz 8556d007b99841f7f603e5d5bc5c23b94c010f1945John Spurlock public static final int NAVIGATION_HINT_BACK_ALT = 1 << 0; 86f1ff209523a2474cb0e7aab0e083596c4afbe37fJason Monk public static final int NAVIGATION_HINT_IME_SHOWN = 1 << 1; 87328310c6fac6066d338926bb43d359862cae36d2Daniel Sandler 889764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock public static final int WINDOW_STATUS_BAR = 1; 899764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock public static final int WINDOW_NAVIGATION_BAR = 2; 909764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock 915b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock public static final int WINDOW_STATE_SHOWING = 0; 929764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock public static final int WINDOW_STATE_HIDING = 1; 935b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock public static final int WINDOW_STATE_HIDDEN = 2; 949764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock 9540aa8811bc817293d7400c14fa60350d2350d29fJorim Jaggi public static final int CAMERA_LAUNCH_SOURCE_WIGGLE = 0; 9640aa8811bc817293d7400c14fa60350d2350d29fJorim Jaggi public static final int CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP = 1; 97a41381660c960844658b6d16f4b6539d7edf56c8Jonathan Solnit public static final int CAMERA_LAUNCH_SOURCE_LIFT_TRIGGER = 2; 9840aa8811bc817293d7400c14fa60350d2350d29fJorim Jaggi 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Context mContext; 10025f95f92005594f2ef094001c54cb4c39eec3adeJoe Onorato private IStatusBarService mService; 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private IBinder mToken = new Binder(); 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatusBarManager(Context context) { 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mContext = context; 1059cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler } 1069cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler 1079cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler private synchronized IStatusBarService getService() { 1089cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler if (mService == null) { 1099cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler mService = IStatusBarService.Stub.asInterface( 1109cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler ServiceManager.getService(Context.STATUS_BAR_SERVICE)); 1119cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler if (mService == null) { 1129cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler Slog.w("StatusBarManager", "warning: no STATUS_BAR_SERVICE"); 1139cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler } 1149cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler } 1159cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler return mService; 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Disable some features in the status bar. Pass the bitwise-or of the DISABLE_* flags. 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * To re-enable everything, pass {@link #DISABLE_NONE}. 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void disable(int what) { 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 1249cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler final IStatusBarService svc = getService(); 1259cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler if (svc != null) { 1269cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler svc.disable(what, mToken, mContext.getPackageName()); 127305c78cce649056643641c51f12f2b6d2eb839f3Jim Miller } 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException ex) { 129c53962d4ede82a03b62f0c8bb86bd0da090a15ebJeff Sharkey throw ex.rethrowFromSystemServer(); 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 132cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz 133cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz /** 134cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz * Disable additional status bar features. Pass the bitwise-or of the DISABLE2_* flags. 135cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz * To re-enable everything, pass {@link #DISABLE_NONE}. 136cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz * 137cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz * Warning: Only pass DISABLE2_* flags into this function, do not use DISABLE_* flags. 138cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz */ 139cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz public void disable2(@Disable2Flags int what) { 140cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz try { 141cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz final IStatusBarService svc = getService(); 142cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz if (svc != null) { 143cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz svc.disable2(what, mToken, mContext.getPackageName()); 144cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz } 145cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz } catch (RemoteException ex) { 146c53962d4ede82a03b62f0c8bb86bd0da090a15ebJeff Sharkey throw ex.rethrowFromSystemServer(); 147cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz } 148cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz } 149cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15111cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler * Expand the notifications panel. 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15311cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler public void expandNotificationsPanel() { 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 1559cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler final IStatusBarService svc = getService(); 1569cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler if (svc != null) { 15711cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler svc.expandNotificationsPanel(); 1589cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler } 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException ex) { 160c53962d4ede82a03b62f0c8bb86bd0da090a15ebJeff Sharkey throw ex.rethrowFromSystemServer(); 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16511cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler * Collapse the notifications and settings panels. 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16711cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler public void collapsePanels() { 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 1699cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler final IStatusBarService svc = getService(); 1709cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler if (svc != null) { 17111cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler svc.collapsePanels(); 172e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov } 173e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov } catch (RemoteException ex) { 174c53962d4ede82a03b62f0c8bb86bd0da090a15ebJeff Sharkey throw ex.rethrowFromSystemServer(); 175e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov } 176e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov } 177e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov 178e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov /** 17911cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler * Expand the settings panel. 180e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov */ 18111cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler public void expandSettingsPanel() { 182a9927325eda025504d59bb6594fee8e240d95b01Jason Monk expandSettingsPanel(null); 183a9927325eda025504d59bb6594fee8e240d95b01Jason Monk } 184a9927325eda025504d59bb6594fee8e240d95b01Jason Monk 185a9927325eda025504d59bb6594fee8e240d95b01Jason Monk /** 186a9927325eda025504d59bb6594fee8e240d95b01Jason Monk * Expand the settings panel and open a subPanel, pass null to just open the settings panel. 187a9927325eda025504d59bb6594fee8e240d95b01Jason Monk */ 188a9927325eda025504d59bb6594fee8e240d95b01Jason Monk public void expandSettingsPanel(String subPanel) { 189e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov try { 190e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov final IStatusBarService svc = getService(); 191e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov if (svc != null) { 192a9927325eda025504d59bb6594fee8e240d95b01Jason Monk svc.expandSettingsPanel(subPanel); 1939cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler } 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException ex) { 195c53962d4ede82a03b62f0c8bb86bd0da090a15ebJeff Sharkey throw ex.rethrowFromSystemServer(); 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1996179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov public void setIcon(String slot, int iconId, int iconLevel, String contentDescription) { 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2019cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler final IStatusBarService svc = getService(); 2029cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler if (svc != null) { 2039cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler svc.setIcon(slot, mContext.getPackageName(), iconId, iconLevel, 2046179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov contentDescription); 2059cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler } 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException ex) { 207c53962d4ede82a03b62f0c8bb86bd0da090a15ebJeff Sharkey throw ex.rethrowFromSystemServer(); 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2110cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato public void removeIcon(String slot) { 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2139cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler final IStatusBarService svc = getService(); 2149cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler if (svc != null) { 2159cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler svc.removeIcon(slot); 2169cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler } 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException ex) { 218c53962d4ede82a03b62f0c8bb86bd0da090a15ebJeff Sharkey throw ex.rethrowFromSystemServer(); 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 221798ac4c7d79534a8230623b737b5b1b6a415d105Joe Onorato 222798ac4c7d79534a8230623b737b5b1b6a415d105Joe Onorato public void setIconVisibility(String slot, boolean visible) { 223798ac4c7d79534a8230623b737b5b1b6a415d105Joe Onorato try { 2249cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler final IStatusBarService svc = getService(); 2259cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler if (svc != null) { 2269cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler svc.setIconVisibility(slot, visible); 2279cbd360a670ca6deb7f2e933f1b79361b84f80a2Daniel Sandler } 228798ac4c7d79534a8230623b737b5b1b6a415d105Joe Onorato } catch (RemoteException ex) { 229c53962d4ede82a03b62f0c8bb86bd0da090a15ebJeff Sharkey throw ex.rethrowFromSystemServer(); 230798ac4c7d79534a8230623b737b5b1b6a415d105Joe Onorato } 231798ac4c7d79534a8230623b737b5b1b6a415d105Joe Onorato } 2325b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock 2335b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock /** @hide */ 2345b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock public static String windowStateToString(int state) { 2355b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock if (state == WINDOW_STATE_HIDING) return "WINDOW_STATE_HIDING"; 2365b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock if (state == WINDOW_STATE_HIDDEN) return "WINDOW_STATE_HIDDEN"; 2375b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock if (state == WINDOW_STATE_SHOWING) return "WINDOW_STATE_SHOWING"; 2385b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock return "WINDOW_STATE_UNKNOWN"; 2395b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock } 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 241