Fields Summary |
---|
static final String | TAG |
public static final boolean | DEBUG |
public static final boolean | SPEW |
public static final boolean | DUMPTRUCK |
public static final boolean | DEBUG_GESTURES |
public static final boolean | DEBUG_MEDIA |
public static final boolean | DEBUG_MEDIA_FAKE_ARTWORK |
public static final boolean | DEBUG_WINDOW_STATE |
public static final boolean | CHATTY |
public static final String | ACTION_STATUSBAR_START |
public static final boolean | SHOW_LOCKSCREEN_MEDIA_ARTWORK |
private static final int | MSG_OPEN_NOTIFICATION_PANEL |
private static final int | MSG_CLOSE_PANELS |
private static final int | MSG_OPEN_SETTINGS_PANEL |
private static final int | MSG_LAUNCH_TRANSITION_TIMEOUT |
private static final long | LAUNCH_TRANSITION_TIMEOUT_MS |
private static final boolean | CLOSE_PANEL_WHEN_EMPTIED |
private static final int | NOTIFICATION_PRIORITY_MULTIPLIER |
private static final int | HIDE_ICONS_BELOW_SCORE |
private static final int | STATUS_OR_NAV_TRANSIENT |
private static final long | AUTOHIDE_TIMEOUT_MS |
private static final int | VISIBILITY_REPORT_MIN_DELAY_MSThe minimum delay in ms between reports of notification visibility. |
private static final int | HINT_RESET_DELAY_MSThe delay to reset the hint text when the hint animation is finished running. |
private static final android.media.AudioAttributes | VIBRATION_ATTRIBUTES |
public static final int | FADE_KEYGUARD_START_DELAY |
public static final int | FADE_KEYGUARD_DURATION |
private static final int | LOCK_TO_APP_GESTURE_TOLERENCEAllow some time inbetween the long press for back and recents. |
PhoneStatusBarPolicy | mIconPolicy |
com.android.systemui.statusbar.policy.BluetoothControllerImpl | mBluetoothController |
com.android.systemui.statusbar.policy.SecurityControllerImpl | mSecurityController |
com.android.systemui.statusbar.policy.BatteryController | mBatteryController |
com.android.systemui.statusbar.policy.LocationControllerImpl | mLocationController |
com.android.systemui.statusbar.policy.NetworkControllerImpl | mNetworkController |
com.android.systemui.statusbar.policy.HotspotControllerImpl | mHotspotController |
com.android.systemui.statusbar.policy.RotationLockControllerImpl | mRotationLockController |
com.android.systemui.statusbar.policy.UserInfoController | mUserInfoController |
com.android.systemui.statusbar.policy.ZenModeController | mZenModeController |
com.android.systemui.statusbar.policy.CastControllerImpl | mCastController |
com.android.systemui.volume.VolumeComponent | mVolumeComponent |
com.android.systemui.statusbar.policy.KeyguardUserSwitcher | mKeyguardUserSwitcher |
com.android.systemui.statusbar.policy.FlashlightController | mFlashlightController |
com.android.systemui.statusbar.policy.UserSwitcherController | mUserSwitcherController |
com.android.systemui.statusbar.policy.NextAlarmController | mNextAlarmController |
com.android.systemui.statusbar.policy.KeyguardMonitor | mKeyguardMonitor |
com.android.systemui.statusbar.policy.BrightnessMirrorController | mBrightnessMirrorController |
com.android.systemui.statusbar.policy.AccessibilityController | mAccessibilityController |
int | mNaturalBarHeight |
int | mIconSize |
int | mIconHPadding |
android.view.Display | mDisplay |
android.graphics.Point | mCurrentDisplaySize |
StatusBarWindowView | mStatusBarWindow |
PhoneStatusBarView | mStatusBarView |
private int | mStatusBarWindowState |
private StatusBarWindowManager | mStatusBarWindowManager |
private UnlockMethodCache | mUnlockMethodCache |
private DozeServiceHost | mDozeServiceHost |
private boolean | mScreenOnComingFromTouch |
private android.graphics.PointF | mScreenOnTouchLocation |
int | mPixelFormat |
Object | mQueueLock |
android.widget.LinearLayout | mStatusBarContents |
android.widget.LinearLayout | mSystemIconArea |
android.widget.LinearLayout | mSystemIcons |
android.widget.LinearLayout | mStatusIcons |
android.widget.LinearLayout | mStatusIconsKeyguard |
IconMerger | mNotificationIcons |
android.view.View | mNotificationIconArea |
android.view.View | mMoreIcon |
NotificationPanelView | mNotificationPanel |
android.view.View | mExpandedContents |
int | mNotificationPanelGravity |
int | mNotificationPanelMarginBottomPx |
float | mNotificationPanelMinHeightFrac |
android.widget.TextView | mNotificationPanelDebugText |
android.view.View | mFlipSettingsView |
private com.android.systemui.qs.QSPanel | mQSPanel |
StatusBarHeaderView | mHeader |
KeyguardStatusBarView | mKeyguardStatusBar |
android.view.View | mKeyguardStatusView |
KeyguardBottomAreaView | mKeyguardBottomArea |
boolean | mLeaveOpenOnKeyguardHide |
com.android.systemui.statusbar.KeyguardIndicationController | mKeyguardIndicationController |
private boolean | mKeyguardFadingAway |
private long | mKeyguardFadingAwayDelay |
private long | mKeyguardFadingAwayDuration |
int | mKeyguardMaxNotificationCount |
private android.widget.TextView | mCarrierLabel |
private boolean | mCarrierLabelVisible |
private int | mCarrierLabelHeight |
private int | mStatusBarHeaderHeight |
private boolean | mShowCarrierInPanel |
int[] | mPositionTmp |
boolean | mExpandedVisible |
private int | mNavigationBarWindowState |
int | mTrackingPosition |
private boolean | mTickerEnabled |
private Ticker | mTicker |
private android.view.View | mTickerView |
private boolean | mTicking |
int | mEdgeBorder |
boolean | mTracking |
android.view.VelocityTracker | mVelocityTracker |
int[] | mAbsPos |
ArrayList | mPostCollapseRunnables |
int | mDisabled |
int | mSystemUiVisibility |
android.util.DisplayMetrics | mDisplayMetrics |
private final com.android.systemui.statusbar.GestureRecorder | mGestureRec |
private com.android.systemui.recent.ScreenPinningRequest | mScreenPinningRequest |
private int | mNavigationIconHints |
private android.os.HandlerThread | mHandlerThread |
private boolean | mUserSetup |
private android.database.ContentObserver | mUserSetupObserver |
private final android.database.ContentObserver | mHeadsUpObserver |
private int | mInteractingWindows |
private boolean | mAutohideSuspended |
private int | mStatusBarMode |
private int | mNavigationBarMode |
private com.android.keyguard.ViewMediatorCallback | mKeyguardViewMediatorCallback |
private ScrimController | mScrimController |
private DozeScrimController | mDozeScrimController |
private final Runnable | mAutohide |
private boolean | mWaitingForKeyguardExit |
private boolean | mDozing |
private boolean | mScrimSrcModeEnabled |
private android.view.animation.Interpolator | mLinearOutSlowIn |
private android.view.animation.Interpolator | mLinearInterpolator |
private android.view.animation.Interpolator | mBackdropInterpolator |
public static final android.view.animation.Interpolator | ALPHA_IN |
public static final android.view.animation.Interpolator | ALPHA_OUT |
private com.android.systemui.statusbar.BackDropView | mBackdrop |
private android.widget.ImageView | mBackdropFront |
private android.widget.ImageView | mBackdropBack |
private android.graphics.PorterDuffXfermode | mSrcXferMode |
private android.graphics.PorterDuffXfermode | mSrcOverXferMode |
private android.media.session.MediaSessionManager | mMediaSessionManager |
private android.media.session.MediaController | mMediaController |
private String | mMediaNotificationKey |
private android.media.MediaMetadata | mMediaMetadata |
private MediaController.Callback | mMediaListener |
private final com.android.systemui.statusbar.stack.NotificationStackScrollLayout.OnChildLocationsChangedListener | mOnChildLocationsChangedListener |
private int | mDisabledUnmodified |
private final android.util.ArraySet | mCurrentlyVisibleNotificationsKeys of notifications currently visible to the user. |
private long | mLastVisibilityReportUptimeMs |
private final ShadeUpdates | mShadeUpdates |
private int | mDrawCount |
private Runnable | mLaunchTransitionEndRunnable |
private boolean | mLaunchTransitionFadingAway |
private com.android.systemui.statusbar.ExpandableNotificationRow | mDraggedDownRow |
private int | mLastLoggedStateFingerprint |
private static final int | VISIBLE_LOCATIONS |
private final com.android.systemui.statusbar.stack.NotificationStackScrollLayout.OnChildLocationsChangedListener | mNotificationLocationsChangedListener |
private final Runnable | mVisibilityReporter |
private final View.OnClickListener | mOverflowClickListener |
private View.OnClickListener | mRecentsClickListener |
private long | mLastLockToAppLongPress |
private View.OnLongClickListener | mLongPressBackRecentsListener |
private int | mShowSearchHoldoff |
private Runnable | mShowSearchPanel |
View.OnTouchListener | mHomeActionListener |
private Runnable | mHideBackdropFrontHide the album artwork that is fading out and release its bitmap. |
View.OnFocusChangeListener | mFocusChangeListener |
private final Runnable | mAnimateCollapsePanels |
final android.animation.TimeInterpolator | mAccelerateInterpolator |
final android.animation.TimeInterpolator | mDecelerateInterpolator |
final int | FLIP_DURATION_OUT |
final int | FLIP_DURATION_IN |
final int | FLIP_DURATION |
android.animation.Animator | mScrollViewAnim |
android.animation.Animator | mClearButtonAnim |
private final Runnable | mCheckBarModes |
Animation.AnimationListener | mTickingDoneListener |
private android.content.BroadcastReceiver | mBroadcastReceiver |
Runnable | mStartTracing |
Runnable | mStopTracing |
private boolean | mDemoModeAllowed |
private boolean | mDemoMode |
private DemoStatusIcons | mDemoStatusIcons |
Methods Summary |
---|
private void | addHeadsUpView()
int headsUpHeight = mContext.getResources()
.getDimensionPixelSize(R.dimen.heads_up_window_height);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
LayoutParams.MATCH_PARENT, headsUpHeight,
WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL, // above the status bar!
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
| WindowManager.LayoutParams.FLAG_SPLIT_TOUCH,
PixelFormat.TRANSLUCENT);
lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
lp.gravity = Gravity.TOP;
lp.setTitle("Heads Up");
lp.packageName = mContext.getPackageName();
lp.windowAnimations = R.style.Animation_StatusBar_HeadsUp;
mWindowManager.addView(mHeadsUpNotificationView, lp);
|
public void | addIcon(java.lang.String slot, int index, int viewIndex, com.android.internal.statusbar.StatusBarIcon icon)
if (SPEW) Log.d(TAG, "addIcon slot=" + slot + " index=" + index + " viewIndex=" + viewIndex
+ " icon=" + icon);
StatusBarIconView view = new StatusBarIconView(mContext, slot, null);
view.set(icon);
mStatusIcons.addView(view, viewIndex, new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, mIconSize));
view = new StatusBarIconView(mContext, slot, null);
view.set(icon);
mStatusIconsKeyguard.addView(view, viewIndex, new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, mIconSize));
|
private void | addNavigationBar()
if (DEBUG) Log.v(TAG, "addNavigationBar: about to add " + mNavigationBarView);
if (mNavigationBarView == null) return;
prepareNavigationBarView();
mWindowManager.addView(mNavigationBarView, getNavigationBarLayoutParams());
|
public void | addNotification(android.service.notification.StatusBarNotification notification, android.service.notification.NotificationListenerService.RankingMap ranking)
if (DEBUG) Log.d(TAG, "addNotification key=" + notification.getKey());
if (mUseHeadsUp && shouldInterrupt(notification)) {
if (DEBUG) Log.d(TAG, "launching notification in heads up mode");
Entry interruptionCandidate = new Entry(notification, null);
ViewGroup holder = mHeadsUpNotificationView.getHolder();
if (inflateViewsForHeadsUp(interruptionCandidate, holder)) {
// 1. Populate mHeadsUpNotificationView
mHeadsUpNotificationView.showNotification(interruptionCandidate);
// do not show the notification in the shade, yet.
return;
}
}
Entry shadeEntry = createNotificationViews(notification);
if (shadeEntry == null) {
return;
}
if (notification.getNotification().fullScreenIntent != null) {
// Stop screensaver if the notification has a full-screen intent.
// (like an incoming phone call)
awakenDreams();
// not immersive & a full-screen alert should be shown
if (DEBUG) Log.d(TAG, "Notification has fullScreenIntent; sending fullScreenIntent");
try {
EventLog.writeEvent(EventLogTags.SYSUI_FULLSCREEN_NOTIFICATION,
notification.getKey());
notification.getNotification().fullScreenIntent.send();
} catch (PendingIntent.CanceledException e) {
}
} else {
// usual case: status bar visible & not immersive
// show the ticker if there isn't already a heads up
if (mHeadsUpNotificationView.getEntry() == null) {
tick(notification, true);
}
}
addNotificationViews(shadeEntry, ranking);
// Recalculate the position of the sliding windows and the titles.
setAreThereNotifications();
updateExpandedViewPos(EXPANDED_LEAVE_ALONE);
|
public void | addPostCollapseAction(java.lang.Runnable r)
mPostCollapseRunnables.add(r);
|
private void | addStatusBarWindow()
makeStatusBarView();
mStatusBarWindowManager = new StatusBarWindowManager(mContext);
mStatusBarWindowManager.add(mStatusBarWindow, getStatusBarHeight());
|
private int | adjustDisableFlags(int state)
if (!mLaunchTransitionFadingAway
&& (mExpandedVisible || mBouncerShowing || mWaitingForKeyguardExit)) {
state |= StatusBarManager.DISABLE_NOTIFICATION_ICONS;
state |= StatusBarManager.DISABLE_SYSTEM_INFO;
}
return state;
|
public void | animateCollapsePanels()
animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
|
public void | animateCollapsePanels(int flags)
animateCollapsePanels(flags, false /* force */);
|
public void | animateCollapsePanels(int flags, boolean force)
if (!force &&
(mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED)) {
runPostCollapseRunnables();
return;
}
if (SPEW) {
Log.d(TAG, "animateCollapse():"
+ " mExpandedVisible=" + mExpandedVisible
+ " flags=" + flags);
}
if ((flags & CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL) == 0) {
if (!mHandler.hasMessages(MSG_HIDE_RECENT_APPS)) {
mHandler.removeMessages(MSG_HIDE_RECENT_APPS);
mHandler.sendEmptyMessage(MSG_HIDE_RECENT_APPS);
}
}
if ((flags & CommandQueue.FLAG_EXCLUDE_SEARCH_PANEL) == 0) {
mHandler.removeMessages(MSG_CLOSE_SEARCH_PANEL);
mHandler.sendEmptyMessage(MSG_CLOSE_SEARCH_PANEL);
}
if (mStatusBarWindow != null) {
// release focus immediately to kick off focus change transition
mStatusBarWindowManager.setStatusBarFocusable(false);
mStatusBarWindow.cancelExpandHelper();
mStatusBarView.collapseAllPanels(true);
}
|
public void | animateCollapseQuickSettings()
if (mState == StatusBarState.SHADE) {
mStatusBarView.collapseAllPanels(true);
}
|
public void | animateExpandNotificationsPanel()
if (SPEW) Log.d(TAG, "animateExpand: mExpandedVisible=" + mExpandedVisible);
if (!panelsEnabled()) {
return ;
}
mNotificationPanel.expand();
if (false) postStartTracing();
|
public void | animateExpandSettingsPanel()
if (SPEW) Log.d(TAG, "animateExpand: mExpandedVisible=" + mExpandedVisible);
if (!panelsEnabled()) {
return;
}
// Settings are not available in setup
if (!mUserSetup) return;
mNotificationPanel.expandWithQs();
if (false) postStartTracing();
|
private void | animateStatusBarHide(android.view.View v, boolean animate)Animates {@code v}, a view that is part of the status bar, out.
v.animate().cancel();
if (!animate) {
v.setAlpha(0f);
v.setVisibility(View.INVISIBLE);
return;
}
v.animate()
.alpha(0f)
.setDuration(160)
.setStartDelay(0)
.setInterpolator(ALPHA_OUT)
.withEndAction(new Runnable() {
@Override
public void run() {
v.setVisibility(View.INVISIBLE);
}
});
|
private void | animateStatusBarShow(android.view.View v, boolean animate)Animates {@code v}, a view that is part of the status bar, in.
v.animate().cancel();
v.setVisibility(View.VISIBLE);
if (!animate) {
v.setAlpha(1f);
return;
}
v.animate()
.alpha(1f)
.setDuration(320)
.setInterpolator(ALPHA_IN)
.setStartDelay(50)
// We need to clean up any pending end action from animateStatusBarHide if we call
// both hide and show in the same frame before the animation actually gets started.
// cancel() doesn't really remove the end action.
.withEndAction(null);
// Synchronize the motion with the Keyguard fading if necessary.
if (mKeyguardFadingAway) {
v.animate()
.setDuration(mKeyguardFadingAwayDuration)
.setInterpolator(mLinearOutSlowIn)
.setStartDelay(mKeyguardFadingAwayDelay)
.start();
}
|
private boolean | areLightsOn()
return 0 == (mSystemUiVisibility & View.SYSTEM_UI_FLAG_LOW_PROFILE);
|
private void | awakenDreams()
if (mDreamManager != null) {
try {
mDreamManager.awaken();
} catch (RemoteException e) {
// fine, stay asleep then
}
}
|
private int | barMode(int vis, int transientFlag, int translucentFlag)
int lightsOutTransparent = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_TRANSPARENT;
return (vis & transientFlag) != 0 ? MODE_SEMI_TRANSPARENT
: (vis & translucentFlag) != 0 ? MODE_TRANSLUCENT
: (vis & lightsOutTransparent) == lightsOutTransparent ? MODE_LIGHTS_OUT_TRANSPARENT
: (vis & View.SYSTEM_UI_TRANSPARENT) != 0 ? MODE_TRANSPARENT
: (vis & View.SYSTEM_UI_FLAG_LOW_PROFILE) != 0 ? MODE_LIGHTS_OUT
: MODE_OPAQUE;
|
public void | buzzBeepBlinked()
if (mDozeServiceHost != null) {
mDozeServiceHost.fireBuzzBeepBlinked();
}
|
public long | calculateGoingToFullShadeDelay()
return mKeyguardFadingAwayDelay + mKeyguardFadingAwayDuration;
|
private void | cancelAutohide()
mAutohideSuspended = false;
mHandler.removeCallbacks(mAutohide);
|
private void | checkBarMode(int mode, int windowState, BarTransitions transitions)
final boolean powerSave = mBatteryController.isPowerSave();
final boolean anim = (mScreenOn == null || mScreenOn) && windowState != WINDOW_STATE_HIDDEN
&& !powerSave;
if (powerSave && getBarState() == StatusBarState.SHADE) {
mode = MODE_WARNING;
}
transitions.transitionTo(mode, anim);
|
private void | checkBarModes()
if (mDemoMode) return;
checkBarMode(mStatusBarMode, mStatusBarWindowState, mStatusBarView.getBarTransitions());
if (mNavigationBarView != null) {
checkBarMode(mNavigationBarMode,
mNavigationBarWindowState, mNavigationBarView.getBarTransitions());
}
|
private void | checkUserAutohide(android.view.View v, android.view.MotionEvent event)
if ((mSystemUiVisibility & STATUS_OR_NAV_TRANSIENT) != 0 // a transient bar is revealed
&& event.getAction() == MotionEvent.ACTION_OUTSIDE // touch outside the source bar
&& event.getX() == 0 && event.getY() == 0 // a touch outside both bars
) {
userAutohide();
}
|
private void | clearAllNotifications()
// animate-swipe all dismissable notifications, then animate the shade closed
int numChildren = mStackScroller.getChildCount();
final ArrayList<View> viewsToHide = new ArrayList<View>(numChildren);
for (int i = 0; i < numChildren; i++) {
final View child = mStackScroller.getChildAt(i);
if (mStackScroller.canChildBeDismissed(child)) {
if (child.getVisibility() == View.VISIBLE) {
viewsToHide.add(child);
}
}
}
if (viewsToHide.isEmpty()) {
animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
return;
}
addPostCollapseAction(new Runnable() {
@Override
public void run() {
try {
mBarService.onClearAllNotifications(mCurrentUserId);
} catch (Exception ex) { }
}
});
performDismissAllAnimations(viewsToHide);
|
private int | computeBarMode(int oldVis, int newVis, BarTransitions transitions, int transientFlag, int translucentFlag)
final int oldMode = barMode(oldVis, transientFlag, translucentFlag);
final int newMode = barMode(newVis, transientFlag, translucentFlag);
if (oldMode == newMode) {
return -1; // no mode change
}
return newMode;
|
public void | createAndAddWindows()
addStatusBarWindow();
|
protected BaseStatusBar.H | createHandler()
return new PhoneStatusBar.H();
|
public void | destroy()
super.destroy();
if (mStatusBarWindow != null) {
mWindowManager.removeViewImmediate(mStatusBarWindow);
mStatusBarWindow = null;
}
if (mNavigationBarView != null) {
mWindowManager.removeViewImmediate(mNavigationBarView);
mNavigationBarView = null;
}
if (mHandlerThread != null) {
mHandlerThread.quitSafely();
mHandlerThread = null;
}
mContext.unregisterReceiver(mBroadcastReceiver);
|
public void | disable(int state, boolean animate)State is one or more of the DISABLE constants from StatusBarManager.
mDisabledUnmodified = state;
state = adjustDisableFlags(state);
final int old = mDisabled;
final int diff = state ^ old;
mDisabled = state;
if (DEBUG) {
Log.d(TAG, String.format("disable: 0x%08x -> 0x%08x (diff: 0x%08x)",
old, state, diff));
}
StringBuilder flagdbg = new StringBuilder();
flagdbg.append("disable: < ");
flagdbg.append(((state & StatusBarManager.DISABLE_EXPAND) != 0) ? "EXPAND" : "expand");
flagdbg.append(((diff & StatusBarManager.DISABLE_EXPAND) != 0) ? "* " : " ");
flagdbg.append(((state & StatusBarManager.DISABLE_NOTIFICATION_ICONS) != 0) ? "ICONS" : "icons");
flagdbg.append(((diff & StatusBarManager.DISABLE_NOTIFICATION_ICONS) != 0) ? "* " : " ");
flagdbg.append(((state & StatusBarManager.DISABLE_NOTIFICATION_ALERTS) != 0) ? "ALERTS" : "alerts");
flagdbg.append(((diff & StatusBarManager.DISABLE_NOTIFICATION_ALERTS) != 0) ? "* " : " ");
flagdbg.append(((state & StatusBarManager.DISABLE_SYSTEM_INFO) != 0) ? "SYSTEM_INFO" : "system_info");
flagdbg.append(((diff & StatusBarManager.DISABLE_SYSTEM_INFO) != 0) ? "* " : " ");
flagdbg.append(((state & StatusBarManager.DISABLE_BACK) != 0) ? "BACK" : "back");
flagdbg.append(((diff & StatusBarManager.DISABLE_BACK) != 0) ? "* " : " ");
flagdbg.append(((state & StatusBarManager.DISABLE_HOME) != 0) ? "HOME" : "home");
flagdbg.append(((diff & StatusBarManager.DISABLE_HOME) != 0) ? "* " : " ");
flagdbg.append(((state & StatusBarManager.DISABLE_RECENT) != 0) ? "RECENT" : "recent");
flagdbg.append(((diff & StatusBarManager.DISABLE_RECENT) != 0) ? "* " : " ");
flagdbg.append(((state & StatusBarManager.DISABLE_CLOCK) != 0) ? "CLOCK" : "clock");
flagdbg.append(((diff & StatusBarManager.DISABLE_CLOCK) != 0) ? "* " : " ");
flagdbg.append(((state & StatusBarManager.DISABLE_SEARCH) != 0) ? "SEARCH" : "search");
flagdbg.append(((diff & StatusBarManager.DISABLE_SEARCH) != 0) ? "* " : " ");
flagdbg.append(">");
Log.d(TAG, flagdbg.toString());
if ((diff & StatusBarManager.DISABLE_SYSTEM_INFO) != 0) {
mSystemIconArea.animate().cancel();
if ((state & StatusBarManager.DISABLE_SYSTEM_INFO) != 0) {
animateStatusBarHide(mSystemIconArea, animate);
} else {
animateStatusBarShow(mSystemIconArea, animate);
}
}
if ((diff & StatusBarManager.DISABLE_CLOCK) != 0) {
boolean show = (state & StatusBarManager.DISABLE_CLOCK) == 0;
showClock(show);
}
if ((diff & StatusBarManager.DISABLE_EXPAND) != 0) {
if ((state & StatusBarManager.DISABLE_EXPAND) != 0) {
animateCollapsePanels();
}
}
if ((diff & (StatusBarManager.DISABLE_HOME
| StatusBarManager.DISABLE_RECENT
| StatusBarManager.DISABLE_BACK
| StatusBarManager.DISABLE_SEARCH)) != 0) {
// the nav bar will take care of these
if (mNavigationBarView != null) mNavigationBarView.setDisabledFlags(state);
if ((state & StatusBarManager.DISABLE_RECENT) != 0) {
// close recents if it's visible
mHandler.removeMessages(MSG_HIDE_RECENT_APPS);
mHandler.sendEmptyMessage(MSG_HIDE_RECENT_APPS);
}
}
if ((diff & StatusBarManager.DISABLE_NOTIFICATION_ICONS) != 0) {
if ((state & StatusBarManager.DISABLE_NOTIFICATION_ICONS) != 0) {
if (mTicking) {
haltTicker();
}
animateStatusBarHide(mNotificationIconArea, animate);
} else {
animateStatusBarShow(mNotificationIconArea, animate);
}
}
if ((diff & StatusBarManager.DISABLE_NOTIFICATION_ALERTS) != 0) {
mDisableNotificationAlerts =
(state & StatusBarManager.DISABLE_NOTIFICATION_ALERTS) != 0;
mHeadsUpObserver.onChange(true);
}
|
protected void | dismissKeyguardThenExecute(com.android.keyguard.KeyguardHostView.OnDismissAction action, boolean afterKeyguardGone)
if (mStatusBarKeyguardViewManager.isShowing()) {
mStatusBarKeyguardViewManager.dismissWithAction(action, afterKeyguardGone);
} else {
action.onDismiss();
}
|
public void | dispatchDemoCommand(java.lang.String command, android.os.Bundle args)
if (!mDemoModeAllowed) {
mDemoModeAllowed = Settings.Global.getInt(mContext.getContentResolver(),
"sysui_demo_allowed", 0) != 0;
}
if (!mDemoModeAllowed) return;
if (command.equals(COMMAND_ENTER)) {
mDemoMode = true;
} else if (command.equals(COMMAND_EXIT)) {
mDemoMode = false;
checkBarModes();
} else if (!mDemoMode) {
// automatically enter demo mode on first demo command
dispatchDemoCommand(COMMAND_ENTER, new Bundle());
}
boolean modeChange = command.equals(COMMAND_ENTER) || command.equals(COMMAND_EXIT);
if ((modeChange || command.equals(COMMAND_VOLUME)) && mVolumeComponent != null) {
mVolumeComponent.dispatchDemoCommand(command, args);
}
if (modeChange || command.equals(COMMAND_CLOCK)) {
dispatchDemoCommandToView(command, args, R.id.clock);
}
if (modeChange || command.equals(COMMAND_BATTERY)) {
dispatchDemoCommandToView(command, args, R.id.battery);
}
if (modeChange || command.equals(COMMAND_STATUS)) {
if (mDemoStatusIcons == null) {
mDemoStatusIcons = new DemoStatusIcons(mStatusIcons, mIconSize);
}
mDemoStatusIcons.dispatchDemoCommand(command, args);
}
if (mNetworkController != null && (modeChange || command.equals(COMMAND_NETWORK))) {
mNetworkController.dispatchDemoCommand(command, args);
}
if (modeChange || command.equals(COMMAND_NOTIFICATIONS)) {
View notifications = mStatusBarView == null ? null
: mStatusBarView.findViewById(R.id.notification_icon_area);
if (notifications != null) {
String visible = args.getString("visible");
int vis = mDemoMode && "false".equals(visible) ? View.INVISIBLE : View.VISIBLE;
notifications.setVisibility(vis);
}
}
if (command.equals(COMMAND_BARS)) {
String mode = args.getString("mode");
int barMode = "opaque".equals(mode) ? MODE_OPAQUE :
"translucent".equals(mode) ? MODE_TRANSLUCENT :
"semi-transparent".equals(mode) ? MODE_SEMI_TRANSPARENT :
"transparent".equals(mode) ? MODE_TRANSPARENT :
"warning".equals(mode) ? MODE_WARNING :
-1;
if (barMode != -1) {
boolean animate = true;
if (mStatusBarView != null) {
mStatusBarView.getBarTransitions().transitionTo(barMode, animate);
}
if (mNavigationBarView != null) {
mNavigationBarView.getBarTransitions().transitionTo(barMode, animate);
}
}
}
|
private void | dispatchDemoCommandToView(java.lang.String command, android.os.Bundle args, int id)
if (mStatusBarView == null) return;
View v = mStatusBarView.findViewById(id);
if (v instanceof DemoMode) {
((DemoMode)v).dispatchDemoCommand(command, args);
}
|
public void | displayNotificationFromHeadsUp(android.service.notification.StatusBarNotification notification)
NotificationData.Entry shadeEntry = createNotificationViews(notification);
if (shadeEntry == null) {
return;
}
shadeEntry.setInterruption();
addNotificationViews(shadeEntry, null);
// Recalculate the position of the sliding windows and the titles.
setAreThereNotifications();
updateExpandedViewPos(EXPANDED_LEAVE_ALONE);
|
public void | dump(java.io.FileDescriptor fd, java.io.PrintWriter pw, java.lang.String[] args)
synchronized (mQueueLock) {
pw.println("Current Status Bar state:");
pw.println(" mExpandedVisible=" + mExpandedVisible
+ ", mTrackingPosition=" + mTrackingPosition);
pw.println(" mTickerEnabled=" + mTickerEnabled);
if (mTickerEnabled) {
pw.println(" mTicking=" + mTicking);
pw.println(" mTickerView: " + viewInfo(mTickerView));
}
pw.println(" mTracking=" + mTracking);
pw.println(" mDisplayMetrics=" + mDisplayMetrics);
pw.println(" mStackScroller: " + viewInfo(mStackScroller));
pw.println(" mStackScroller: " + viewInfo(mStackScroller)
+ " scroll " + mStackScroller.getScrollX()
+ "," + mStackScroller.getScrollY());
}
pw.print(" mInteractingWindows="); pw.println(mInteractingWindows);
pw.print(" mStatusBarWindowState=");
pw.println(windowStateToString(mStatusBarWindowState));
pw.print(" mStatusBarMode=");
pw.println(BarTransitions.modeToString(mStatusBarMode));
pw.print(" mDozing="); pw.println(mDozing);
pw.print(" mZenMode=");
pw.println(Settings.Global.zenModeToString(mZenMode));
pw.print(" mUseHeadsUp=");
pw.println(mUseHeadsUp);
pw.print(" interrupting package: ");
pw.println(hunStateToString(mHeadsUpNotificationView.getEntry()));
dumpBarTransitions(pw, "mStatusBarView", mStatusBarView.getBarTransitions());
if (mNavigationBarView != null) {
pw.print(" mNavigationBarWindowState=");
pw.println(windowStateToString(mNavigationBarWindowState));
pw.print(" mNavigationBarMode=");
pw.println(BarTransitions.modeToString(mNavigationBarMode));
dumpBarTransitions(pw, "mNavigationBarView", mNavigationBarView.getBarTransitions());
}
pw.print(" mNavigationBarView=");
if (mNavigationBarView == null) {
pw.println("null");
} else {
mNavigationBarView.dump(fd, pw, args);
}
pw.print(" mMediaSessionManager=");
pw.println(mMediaSessionManager);
pw.print(" mMediaNotificationKey=");
pw.println(mMediaNotificationKey);
pw.print(" mMediaController=");
pw.print(mMediaController);
if (mMediaController != null) {
pw.print(" state=" + mMediaController.getPlaybackState());
}
pw.println();
pw.print(" mMediaMetadata=");
pw.print(mMediaMetadata);
if (mMediaMetadata != null) {
pw.print(" title=" + mMediaMetadata.getText(MediaMetadata.METADATA_KEY_TITLE));
}
pw.println();
pw.println(" Panels: ");
if (mNotificationPanel != null) {
pw.println(" mNotificationPanel=" +
mNotificationPanel + " params=" + mNotificationPanel.getLayoutParams().debug(""));
pw.print (" ");
mNotificationPanel.dump(fd, pw, args);
}
DozeLog.dump(pw);
if (DUMPTRUCK) {
synchronized (mNotificationData) {
mNotificationData.dump(pw, " ");
}
int N = mStatusIcons.getChildCount();
pw.println(" system icons: " + N);
for (int i=0; i<N; i++) {
StatusBarIconView ic = (StatusBarIconView) mStatusIcons.getChildAt(i);
pw.println(" [" + i + "] icon=" + ic);
}
if (false) {
pw.println("see the logcat for a dump of the views we have created.");
// must happen on ui thread
mHandler.post(new Runnable() {
public void run() {
mStatusBarView.getLocationOnScreen(mAbsPos);
Log.d(TAG, "mStatusBarView: ----- (" + mAbsPos[0] + "," + mAbsPos[1]
+ ") " + mStatusBarView.getWidth() + "x"
+ getStatusBarHeight());
mStatusBarView.debug();
}
});
}
}
if (DEBUG_GESTURES) {
pw.print(" status bar gestures: ");
mGestureRec.dump(fd, pw, args);
}
if (mNetworkController != null) {
mNetworkController.dump(fd, pw, args);
}
if (mBluetoothController != null) {
mBluetoothController.dump(fd, pw, args);
}
if (mCastController != null) {
mCastController.dump(fd, pw, args);
}
if (mUserSwitcherController != null) {
mUserSwitcherController.dump(fd, pw, args);
}
if (mBatteryController != null) {
mBatteryController.dump(fd, pw, args);
}
if (mNextAlarmController != null) {
mNextAlarmController.dump(fd, pw, args);
}
if (mSecurityController != null) {
mSecurityController.dump(fd, pw, args);
}
pw.println("SharedPreferences:");
for (Map.Entry<String, ?> entry : mContext.getSharedPreferences(mContext.getPackageName(),
Context.MODE_PRIVATE).getAll().entrySet()) {
pw.print(" "); pw.print(entry.getKey()); pw.print("="); pw.println(entry.getValue());
}
|
private static void | dumpBarTransitions(java.io.PrintWriter pw, java.lang.String var, BarTransitions transitions)
pw.print(" "); pw.print(var); pw.print(".BarTransitions.mMode=");
pw.println(BarTransitions.modeToString(transitions.getMode()));
|
private void | escalateHeadsUp()if the interrupting notification had a fullscreen intent, fire it now.
if (mHeadsUpNotificationView.getEntry() != null) {
final StatusBarNotification sbn = mHeadsUpNotificationView.getEntry().notification;
mHeadsUpNotificationView.release();
final Notification notification = sbn.getNotification();
if (notification.fullScreenIntent != null) {
if (DEBUG)
Log.d(TAG, "converting a heads up to fullScreen");
try {
EventLog.writeEvent(EventLogTags.SYSUI_HEADS_UP_ESCALATION,
sbn.getKey());
notification.fullScreenIntent.send();
} catch (PendingIntent.CanceledException e) {
}
}
}
|
public void | fadeKeyguardAfterLaunchTransition(java.lang.Runnable beforeFading, java.lang.Runnable endRunnable)Fades the content of the keyguard away after the launch transition is done.
mHandler.removeMessages(MSG_LAUNCH_TRANSITION_TIMEOUT);
mLaunchTransitionEndRunnable = endRunnable;
Runnable hideRunnable = new Runnable() {
@Override
public void run() {
mLaunchTransitionFadingAway = true;
if (beforeFading != null) {
beforeFading.run();
}
mNotificationPanel.setAlpha(1);
mNotificationPanel.animate()
.alpha(0)
.setStartDelay(FADE_KEYGUARD_START_DELAY)
.setDuration(FADE_KEYGUARD_DURATION)
.withLayer()
.withEndAction(new Runnable() {
@Override
public void run() {
mNotificationPanel.setAlpha(1);
runLaunchTransitionEndRunnable();
mLaunchTransitionFadingAway = false;
}
});
}
};
if (mNotificationPanel.isLaunchTransitionRunning()) {
mNotificationPanel.setLaunchTransitionEndRunnable(hideRunnable);
} else {
hideRunnable.run();
}
|
public void | findAndUpdateMediaNotifications()
boolean metaDataChanged = false;
synchronized (mNotificationData) {
ArrayList<Entry> activeNotifications = mNotificationData.getActiveNotifications();
final int N = activeNotifications.size();
Entry mediaNotification = null;
MediaController controller = null;
for (int i = 0; i < N; i++) {
final Entry entry = activeNotifications.get(i);
if (isMediaNotification(entry)) {
final MediaSession.Token token = entry.notification.getNotification().extras
.getParcelable(Notification.EXTRA_MEDIA_SESSION);
if (token != null) {
controller = new MediaController(mContext, token);
if (controller != null) {
// we've got a live one, here
mediaNotification = entry;
}
}
}
}
if (mediaNotification == null) {
// Still nothing? OK, let's just look for live media sessions and see if they match
// one of our notifications. This will catch apps that aren't (yet!) using media
// notifications.
if (mMediaSessionManager != null) {
final List<MediaController> sessions
= mMediaSessionManager.getActiveSessionsForUser(
null,
UserHandle.USER_ALL);
for (MediaController aController : sessions) {
if (aController == null) continue;
final PlaybackState state = aController.getPlaybackState();
if (state == null) continue;
switch (state.getState()) {
case PlaybackState.STATE_STOPPED:
case PlaybackState.STATE_ERROR:
continue;
default:
// now to see if we have one like this
final String pkg = aController.getPackageName();
for (int i = 0; i < N; i++) {
final Entry entry = activeNotifications.get(i);
if (entry.notification.getPackageName().equals(pkg)) {
if (DEBUG_MEDIA) {
Log.v(TAG, "DEBUG_MEDIA: found controller matching "
+ entry.notification.getKey());
}
controller = aController;
mediaNotification = entry;
break;
}
}
}
}
}
}
if (!sameSessions(mMediaController, controller)) {
// We have a new media session
if (mMediaController != null) {
// something old was playing
Log.v(TAG, "DEBUG_MEDIA: Disconnecting from old controller: "
+ mMediaController);
mMediaController.unregisterCallback(mMediaListener);
}
mMediaController = controller;
if (mMediaController != null) {
mMediaController.registerCallback(mMediaListener);
mMediaMetadata = mMediaController.getMetadata();
if (DEBUG_MEDIA) {
Log.v(TAG, "DEBUG_MEDIA: insert listener, receive metadata: "
+ mMediaMetadata);
}
final String notificationKey = mediaNotification == null
? null
: mediaNotification.notification.getKey();
if (notificationKey == null || !notificationKey.equals(mMediaNotificationKey)) {
// we have a new notification!
if (DEBUG_MEDIA) {
Log.v(TAG, "DEBUG_MEDIA: Found new media notification: key="
+ notificationKey + " controller=" + controller);
}
mMediaNotificationKey = notificationKey;
}
} else {
mMediaMetadata = null;
mMediaNotificationKey = null;
}
metaDataChanged = true;
} else {
// Media session unchanged
if (DEBUG_MEDIA) {
Log.v(TAG, "DEBUG_MEDIA: Continuing media notification: key=" + mMediaNotificationKey);
}
}
}
updateMediaMetaData(metaDataChanged);
|
private void | finishBarAnimations()
mStatusBarView.getBarTransitions().finishAnimations();
if (mNavigationBarView != null) {
mNavigationBarView.getBarTransitions().finishAnimations();
}
|
public void | finishKeyguardFadingAway()Notifies that the Keyguard fading away animation is done.
mKeyguardFadingAway = false;
|
public int | getBarState()
return mState;
|
public java.lang.String | getCurrentMediaNotificationKey()
return mMediaNotificationKey;
|
public android.os.UserHandle | getCurrentUserHandle()
return new UserHandle(mCurrentUserId);
|
float | getDisplayDensity()
return mDisplayMetrics.density;
|
public com.android.systemui.statusbar.GestureRecorder | getGestureRecorder()
return mGestureRec;
|
public long | getKeyguardFadingAwayDelay()
return mKeyguardFadingAwayDelay;
|
public long | getKeyguardFadingAwayDuration()
return mKeyguardFadingAwayDuration;
|
private static int | getLoggingFingerprint(int statusBarState, boolean keyguardShowing, boolean keyguardOccluded, boolean bouncerShowing, boolean secure, boolean currentlyInsecure)Returns a fingerprint of fields logged to eventlog
// Reserve 8 bits for statusBarState. We'll never go higher than
// that, right? Riiiight.
return (statusBarState & 0xFF)
| ((keyguardShowing ? 1 : 0) << 8)
| ((keyguardOccluded ? 1 : 0) << 9)
| ((bouncerShowing ? 1 : 0) << 10)
| ((secure ? 1 : 0) << 11)
| ((currentlyInsecure ? 1 : 0) << 12);
|
protected int | getMaxKeyguardNotifications()
return mKeyguardMaxNotificationCount;
|
private WindowManager.LayoutParams | getNavigationBarLayoutParams()
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_NAVIGATION_BAR,
0
| WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
| WindowManager.LayoutParams.FLAG_SPLIT_TOUCH,
PixelFormat.TRANSLUCENT);
// this will allow the navbar to run in an overlay on devices that support this
if (ActivityManager.isHighEndGfx()) {
lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
}
lp.setTitle("NavigationBar");
lp.windowAnimations = 0;
return lp;
|
public NavigationBarView | getNavigationBarView()
return mNavigationBarView;
|
public android.view.ViewGroup | getQuickSettingsOverlayParent()
return mNotificationPanel;
|
public ScrimController | getScrimController()
return mScrimController;
|
protected WindowManager.LayoutParams | getSearchLayoutParams(android.view.ViewGroup.LayoutParams layoutParams)
boolean opaque = false;
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
| WindowManager.LayoutParams.FLAG_SPLIT_TOUCH,
(opaque ? PixelFormat.OPAQUE : PixelFormat.TRANSLUCENT));
if (ActivityManager.isHighEndGfx()) {
lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
}
lp.gravity = Gravity.BOTTOM | Gravity.START;
lp.setTitle("SearchPanel");
lp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED
| WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING;
return lp;
|
public int | getStatusBarHeight()
if (mNaturalBarHeight < 0) {
final Resources res = mContext.getResources();
mNaturalBarHeight =
res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height);
}
return mNaturalBarHeight;
|
protected android.view.View | getStatusBarView()
return mStatusBarView;
|
public StatusBarWindowView | getStatusBarWindow()
return mStatusBarWindow;
|
public android.widget.LinearLayout | getSystemIconArea()
return mSystemIconArea;
|
public android.widget.LinearLayout | getSystemIcons()
return mSystemIcons;
|
public void | goToKeyguard()Goes back to the keyguard after hanging around in {@link StatusBarState#SHADE_LOCKED}.
if (mState == StatusBarState.SHADE_LOCKED) {
mStackScroller.onGoToKeyguard();
setBarState(StatusBarState.KEYGUARD);
updateKeyguardState(false /* goingToFullShade */, true /* fromShadeLocked*/);
}
|
public void | goToLockedShade(android.view.View expandView)If secure with redaction: Show bouncer, go to unlocked shade.
If secure without redaction or no security: Go to {@link StatusBarState#SHADE_LOCKED}.
ExpandableNotificationRow row = null;
if (expandView instanceof ExpandableNotificationRow) {
row = (ExpandableNotificationRow) expandView;
row.setUserExpanded(true);
}
boolean fullShadeNeedsBouncer = !userAllowsPrivateNotificationsInPublic(mCurrentUserId)
|| !mShowLockscreenNotifications;
if (isLockscreenPublicMode() && fullShadeNeedsBouncer) {
mLeaveOpenOnKeyguardHide = true;
showBouncer();
mDraggedDownRow = row;
} else {
mNotificationPanel.animateToFullShade(0 /* delay */);
setBarState(StatusBarState.SHADE_LOCKED);
updateKeyguardState(false /* goingToFullShade */, false /* fromShadeLocked */);
if (row != null) {
row.setUserLocked(false);
}
}
|
protected void | haltTicker()
if (mTickerEnabled) {
mTicker.halt();
}
|
private void | handleLongPressBackRecents(android.view.View v)This handles long-press of both back and recents. They are
handled together to capture them both being long-pressed
at the same time to exit screen pinning (lock task).
When accessibility mode is on, only a long-press from recents
is required to exit.
In all other circumstances we try to pass through long-press events
for Back, so that apps can still use it. Which can be from two things.
1) Not currently in screen pinning (lock task).
2) Back is long-pressed without recents.
try {
boolean sendBackLongPress = false;
IActivityManager activityManager = ActivityManagerNative.getDefault();
boolean isAccessiblityEnabled = mAccessibilityManager.isEnabled();
if (activityManager.isInLockTaskMode() && !isAccessiblityEnabled) {
long time = System.currentTimeMillis();
// If we recently long-pressed the other button then they were
// long-pressed 'together'
if ((time - mLastLockToAppLongPress) < LOCK_TO_APP_GESTURE_TOLERENCE) {
activityManager.stopLockTaskModeOnCurrent();
// When exiting refresh disabled flags.
mNavigationBarView.setDisabledFlags(mDisabled, true);
} else if ((v.getId() == R.id.back)
&& !mNavigationBarView.getRecentsButton().isPressed()) {
// If we aren't pressing recents right now then they presses
// won't be together, so send the standard long-press action.
sendBackLongPress = true;
}
mLastLockToAppLongPress = time;
} else {
// If this is back still need to handle sending the long-press event.
if (v.getId() == R.id.back) {
sendBackLongPress = true;
} else if (isAccessiblityEnabled && activityManager.isInLockTaskMode()) {
// When in accessibility mode a long press that is recents (not back)
// should stop lock task.
activityManager.stopLockTaskModeOnCurrent();
// When exiting refresh disabled flags.
mNavigationBarView.setDisabledFlags(mDisabled, true);
}
}
if (sendBackLongPress) {
KeyButtonView keyButtonView = (KeyButtonView) v;
keyButtonView.sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.FLAG_LONG_PRESS);
keyButtonView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED);
}
} catch (RemoteException e) {
Log.d(TAG, "Unable to reach activity manager", e);
}
|
private void | handleStartSettingsActivity(android.content.Intent intent, boolean onlyProvisioned)
startActivityDismissingKeyguard(intent, onlyProvisioned, true /* dismissShade */);
|
protected void | handleVisibleToUserChanged(boolean visibleToUser)
if (visibleToUser) {
super.handleVisibleToUserChanged(visibleToUser);
startNotificationLogging();
} else {
stopNotificationLogging();
super.handleVisibleToUserChanged(visibleToUser);
}
|
public boolean | hasActiveNotifications()
return !mNotificationData.getActiveNotifications().isEmpty();
|
public boolean | hideKeyguard()
boolean staying = mLeaveOpenOnKeyguardHide;
setBarState(StatusBarState.SHADE);
if (mLeaveOpenOnKeyguardHide) {
mLeaveOpenOnKeyguardHide = false;
mNotificationPanel.animateToFullShade(calculateGoingToFullShadeDelay());
if (mDraggedDownRow != null) {
mDraggedDownRow.setUserLocked(false);
mDraggedDownRow = null;
}
} else {
instantCollapseNotificationPanel();
}
updateKeyguardState(staying, false /* fromShadeLocked */);
// Keyguard state has changed, but QS is not listening anymore. Make sure to update the tile
// visibilities so next time we open the panel we know the correct height already.
if (mQSPanel != null) {
mQSPanel.refreshAllTiles();
}
mHandler.removeMessages(MSG_LAUNCH_TRANSITION_TIMEOUT);
return staying;
|
protected void | hideRecents(boolean triggeredFromAltTab, boolean triggeredFromHomeKey)
// Unset the recents visibility flag
mSystemUiVisibility &= ~View.RECENT_APPS_VISIBLE;
notifyUiVisibilityChanged(mSystemUiVisibility);
super.hideRecents(triggeredFromAltTab, triggeredFromHomeKey);
|
public void | hideSearchPanel()
super.hideSearchPanel();
if (mNavigationBarView != null) {
WindowManager.LayoutParams lp =
(android.view.WindowManager.LayoutParams) mNavigationBarView.getLayoutParams();
lp.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
mWindowManager.updateViewLayout(mNavigationBarView, lp);
}
|
private java.lang.String | hunStateToString(com.android.systemui.statusbar.NotificationData.Entry entry)
if (entry == null) return "null";
if (entry.notification == null) return "corrupt";
return entry.notification.getPackageName();
|
private void | instantCollapseNotificationPanel()
mNotificationPanel.instantCollapse();
|
private void | instantExpandNotificationsPanel()
// Make our window larger and the panel expanded.
makeExpandedVisible(true);
mNotificationPanel.instantExpand();
|
public boolean | interceptMediaKey(android.view.KeyEvent event)
return mState == StatusBarState.KEYGUARD
&& mStatusBarKeyguardViewManager.interceptMediaKey(event);
|
public boolean | interceptTouchEvent(android.view.MotionEvent event)
if (DEBUG_GESTURES) {
if (event.getActionMasked() != MotionEvent.ACTION_MOVE) {
EventLog.writeEvent(EventLogTags.SYSUI_STATUSBAR_TOUCH,
event.getActionMasked(), (int) event.getX(), (int) event.getY(), mDisabled);
}
}
if (SPEW) {
Log.d(TAG, "Touch: rawY=" + event.getRawY() + " event=" + event + " mDisabled="
+ mDisabled + " mTracking=" + mTracking);
} else if (CHATTY) {
if (event.getAction() != MotionEvent.ACTION_MOVE) {
Log.d(TAG, String.format(
"panel: %s at (%f, %f) mDisabled=0x%08x",
MotionEvent.actionToString(event.getAction()),
event.getRawX(), event.getRawY(), mDisabled));
}
}
if (DEBUG_GESTURES) {
mGestureRec.add(event);
}
if (mStatusBarWindowState == WINDOW_STATE_SHOWING) {
final boolean upOrCancel =
event.getAction() == MotionEvent.ACTION_UP ||
event.getAction() == MotionEvent.ACTION_CANCEL;
if (upOrCancel && !mExpandedVisible) {
setInteracting(StatusBarManager.WINDOW_STATUS_BAR, false);
} else {
setInteracting(StatusBarManager.WINDOW_STATUS_BAR, true);
}
}
return false;
|
public android.animation.Animator | interpolator(android.animation.TimeInterpolator ti, android.animation.Animator a)
a.setInterpolator(ti);
return a;
|
public boolean | isCollapsing()
return mNotificationPanel.isCollapsing();
|
public boolean | isDozing()
return mDozing;
|
public boolean | isFalsingThresholdNeeded()
boolean onKeyguard = getBarState() == StatusBarState.KEYGUARD;
boolean isCurrentlyInsecure = mUnlockMethodCache.isCurrentlyInsecure();
return onKeyguard && (isCurrentlyInsecure || mDozing || mScreenOnComingFromTouch);
|
public boolean | isGoingToNotificationShade()
return mLeaveOpenOnKeyguardHide;
|
public boolean | isInLaunchTransition()
return mNotificationPanel.isLaunchTransitionRunning()
|| mNotificationPanel.isLaunchTransitionFinished();
|
public boolean | isKeyguardFadingAway()
return mKeyguardFadingAway;
|
public boolean | isQsExpanded()
return mNotificationPanel.isQsExpanded();
|
public boolean | isScreenOnComingFromTouch()
return mScreenOnComingFromTouch;
|
public boolean | isScrimSrcModeEnabled()
return mScrimSrcModeEnabled;
|
private android.view.animation.Animation | loadAnim(int id, Animation.AnimationListener listener)
Animation anim = AnimationUtils.loadAnimation(mContext, id);
if (listener != null) {
anim.setAnimationListener(listener);
}
return anim;
|
protected void | loadDimens()
final Resources res = mContext.getResources();
mNaturalBarHeight = res.getDimensionPixelSize(
com.android.internal.R.dimen.status_bar_height);
int newIconSize = res.getDimensionPixelSize(
com.android.internal.R.dimen.status_bar_icon_size);
int newIconHPadding = res.getDimensionPixelSize(
R.dimen.status_bar_icon_padding);
if (newIconHPadding != mIconHPadding || newIconSize != mIconSize) {
// Log.d(TAG, "size=" + newIconSize + " padding=" + newIconHPadding);
mIconHPadding = newIconHPadding;
mIconSize = newIconSize;
//reloadAllNotificationIcons(); // reload the tray
}
mEdgeBorder = res.getDimensionPixelSize(R.dimen.status_bar_edge_ignore);
mNotificationPanelGravity = res.getInteger(R.integer.notification_panel_layout_gravity);
if (mNotificationPanelGravity <= 0) {
mNotificationPanelGravity = Gravity.START | Gravity.TOP;
}
mCarrierLabelHeight = res.getDimensionPixelSize(R.dimen.carrier_label_height);
mStatusBarHeaderHeight = res.getDimensionPixelSize(R.dimen.status_bar_header_height);
mNotificationPanelMinHeightFrac = res.getFraction(R.dimen.notification_panel_min_height_frac, 1, 1);
if (mNotificationPanelMinHeightFrac < 0f || mNotificationPanelMinHeightFrac > 1f) {
mNotificationPanelMinHeightFrac = 0f;
}
mHeadsUpNotificationDecay = res.getInteger(R.integer.heads_up_notification_decay);
mRowMinHeight = res.getDimensionPixelSize(R.dimen.notification_min_height);
mRowMaxHeight = res.getDimensionPixelSize(R.dimen.notification_max_height);
mKeyguardMaxNotificationCount = res.getInteger(R.integer.keyguard_max_notification_count);
if (DEBUG) Log.v(TAG, "updateResources");
|
private void | logNotificationVisibilityChanges(java.util.Collection newlyVisible, java.util.Collection noLongerVisible)
if (newlyVisible.isEmpty() && noLongerVisible.isEmpty()) {
return;
}
String[] newlyVisibleAr = newlyVisible.toArray(new String[newlyVisible.size()]);
String[] noLongerVisibleAr = noLongerVisible.toArray(new String[noLongerVisible.size()]);
try {
mBarService.onNotificationVisibilityChanged(newlyVisibleAr, noLongerVisibleAr);
} catch (RemoteException e) {
// Ignore.
}
|
private void | logStateToEventlog()
boolean isShowing = mStatusBarKeyguardViewManager.isShowing();
boolean isOccluded = mStatusBarKeyguardViewManager.isOccluded();
boolean isBouncerShowing = mStatusBarKeyguardViewManager.isBouncerShowing();
boolean isSecure = mUnlockMethodCache.isMethodSecure();
boolean isCurrentlyInsecure = mUnlockMethodCache.isCurrentlyInsecure();
int stateFingerprint = getLoggingFingerprint(mState,
isShowing,
isOccluded,
isBouncerShowing,
isSecure,
isCurrentlyInsecure);
if (stateFingerprint != mLastLoggedStateFingerprint) {
EventLogTags.writeSysuiStatusBarState(mState,
isShowing ? 1 : 0,
isOccluded ? 1 : 0,
isBouncerShowing ? 1 : 0,
isSecure ? 1 : 0,
isCurrentlyInsecure ? 1 : 0);
mLastLoggedStateFingerprint = stateFingerprint;
}
|
void | makeExpandedInvisible()
if (SPEW) Log.d(TAG, "makeExpandedInvisible: mExpandedVisible=" + mExpandedVisible
+ " mExpandedVisible=" + mExpandedVisible);
if (!mExpandedVisible || mStatusBarWindow == null) {
return;
}
// Ensure the panel is fully collapsed (just in case; bug 6765842, 7260868)
mStatusBarView.collapseAllPanels(/*animate=*/ false);
// reset things to their proper state
if (mScrollViewAnim != null) mScrollViewAnim.cancel();
if (mClearButtonAnim != null) mClearButtonAnim.cancel();
mStackScroller.setVisibility(View.VISIBLE);
mNotificationPanel.setVisibility(View.GONE);
mNotificationPanel.closeQs();
mExpandedVisible = false;
if (mNavigationBarView != null)
mNavigationBarView.setSlippery(false);
visibilityChanged(false);
// Shrink the window to the size of the status bar only
mStatusBarWindowManager.setStatusBarExpanded(false);
mStatusBarView.setFocusable(true);
// Close any "App info" popups that might have snuck on-screen
dismissPopups();
runPostCollapseRunnables();
setInteracting(StatusBarManager.WINDOW_STATUS_BAR, false);
showBouncer();
disable(mDisabledUnmodified, true /* animate */);
// Trimming will happen later if Keyguard is showing - doing it here might cause a jank in
// the bouncer appear animation.
if (!mStatusBarKeyguardViewManager.isShowing()) {
WindowManagerGlobal.getInstance().trimMemory(ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN);
}
|
void | makeExpandedVisible(boolean force)
if (SPEW) Log.d(TAG, "Make expanded visible: expanded visible=" + mExpandedVisible);
if (!force && (mExpandedVisible || !panelsEnabled())) {
return;
}
mExpandedVisible = true;
if (mNavigationBarView != null)
mNavigationBarView.setSlippery(true);
updateCarrierLabelVisibility(true);
updateExpandedViewPos(EXPANDED_LEAVE_ALONE);
// Expand the window to encompass the full screen in anticipation of the drag.
// This is only possible to do atomically because the status bar is at the top of the screen!
mStatusBarWindowManager.setStatusBarExpanded(true);
mStatusBarView.setFocusable(false);
visibilityChanged(true);
mWaitingForKeyguardExit = false;
disable(mDisabledUnmodified, !force /* animate */);
setInteracting(StatusBarManager.WINDOW_STATUS_BAR, true);
|
protected PhoneStatusBarView | makeStatusBarView()
final Context context = mContext;
Resources res = context.getResources();
updateDisplaySize(); // populates mDisplayMetrics
updateResources();
mIconSize = res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_icon_size);
mStatusBarWindow = (StatusBarWindowView) View.inflate(context,
R.layout.super_status_bar, null);
mStatusBarWindow.mService = this;
mStatusBarWindow.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
checkUserAutohide(v, event);
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (mExpandedVisible) {
animateCollapsePanels();
}
}
return mStatusBarWindow.onTouchEvent(event);
}});
mStatusBarView = (PhoneStatusBarView) mStatusBarWindow.findViewById(R.id.status_bar);
mStatusBarView.setBar(this);
PanelHolder holder = (PanelHolder) mStatusBarWindow.findViewById(R.id.panel_holder);
mStatusBarView.setPanelHolder(holder);
mNotificationPanel = (NotificationPanelView) mStatusBarWindow.findViewById(
R.id.notification_panel);
mNotificationPanel.setStatusBar(this);
if (!ActivityManager.isHighEndGfx()) {
mStatusBarWindow.setBackground(null);
mNotificationPanel.setBackground(new FastColorDrawable(context.getResources().getColor(
R.color.notification_panel_solid_background)));
}
if (ENABLE_HEADS_UP) {
mHeadsUpNotificationView =
(HeadsUpNotificationView) View.inflate(context, R.layout.heads_up, null);
mHeadsUpNotificationView.setVisibility(View.GONE);
mHeadsUpNotificationView.setBar(this);
}
if (MULTIUSER_DEBUG) {
mNotificationPanelDebugText = (TextView) mNotificationPanel.findViewById(
R.id.header_debug_info);
mNotificationPanelDebugText.setVisibility(View.VISIBLE);
}
updateShowSearchHoldoff();
try {
boolean showNav = mWindowManagerService.hasNavigationBar();
if (DEBUG) Log.v(TAG, "hasNavigationBar=" + showNav);
if (showNav) {
mNavigationBarView =
(NavigationBarView) View.inflate(context, R.layout.navigation_bar, null);
mNavigationBarView.setDisabledFlags(mDisabled);
mNavigationBarView.setBar(this);
mNavigationBarView.setOnVerticalChangedListener(
new NavigationBarView.OnVerticalChangedListener() {
@Override
public void onVerticalChanged(boolean isVertical) {
if (mSearchPanelView != null) {
mSearchPanelView.setHorizontal(isVertical);
}
mNotificationPanel.setQsScrimEnabled(!isVertical);
}
});
mNavigationBarView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
checkUserAutohide(v, event);
return false;
}});
}
} catch (RemoteException ex) {
// no window manager? good luck with that
}
// figure out which pixel-format to use for the status bar.
mPixelFormat = PixelFormat.OPAQUE;
mSystemIconArea = (LinearLayout) mStatusBarView.findViewById(R.id.system_icon_area);
mSystemIcons = (LinearLayout) mStatusBarView.findViewById(R.id.system_icons);
mStatusIcons = (LinearLayout)mStatusBarView.findViewById(R.id.statusIcons);
mNotificationIconArea = mStatusBarView.findViewById(R.id.notification_icon_area_inner);
mNotificationIcons = (IconMerger)mStatusBarView.findViewById(R.id.notificationIcons);
mMoreIcon = mStatusBarView.findViewById(R.id.moreIcon);
mNotificationIcons.setOverflowIndicator(mMoreIcon);
mStatusBarContents = (LinearLayout)mStatusBarView.findViewById(R.id.status_bar_contents);
mStackScroller = (NotificationStackScrollLayout) mStatusBarWindow.findViewById(
R.id.notification_stack_scroller);
mStackScroller.setLongPressListener(getNotificationLongClicker());
mStackScroller.setPhoneStatusBar(this);
mKeyguardIconOverflowContainer =
(NotificationOverflowContainer) LayoutInflater.from(mContext).inflate(
R.layout.status_bar_notification_keyguard_overflow, mStackScroller, false);
mKeyguardIconOverflowContainer.setOnActivatedListener(this);
mKeyguardIconOverflowContainer.setOnClickListener(mOverflowClickListener);
mStackScroller.addView(mKeyguardIconOverflowContainer);
SpeedBumpView speedBump = (SpeedBumpView) LayoutInflater.from(mContext).inflate(
R.layout.status_bar_notification_speed_bump, mStackScroller, false);
mStackScroller.setSpeedBumpView(speedBump);
mEmptyShadeView = (EmptyShadeView) LayoutInflater.from(mContext).inflate(
R.layout.status_bar_no_notifications, mStackScroller, false);
mStackScroller.setEmptyShadeView(mEmptyShadeView);
mDismissView = (DismissView) LayoutInflater.from(mContext).inflate(
R.layout.status_bar_notification_dismiss_all, mStackScroller, false);
mDismissView.setOnButtonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clearAllNotifications();
}
});
mStackScroller.setDismissView(mDismissView);
mExpandedContents = mStackScroller;
mBackdrop = (BackDropView) mStatusBarWindow.findViewById(R.id.backdrop);
mBackdropFront = (ImageView) mBackdrop.findViewById(R.id.backdrop_front);
mBackdropBack = (ImageView) mBackdrop.findViewById(R.id.backdrop_back);
ScrimView scrimBehind = (ScrimView) mStatusBarWindow.findViewById(R.id.scrim_behind);
ScrimView scrimInFront = (ScrimView) mStatusBarWindow.findViewById(R.id.scrim_in_front);
mScrimController = new ScrimController(scrimBehind, scrimInFront, mScrimSrcModeEnabled);
mScrimController.setBackDropView(mBackdrop);
mStatusBarView.setScrimController(mScrimController);
mDozeScrimController = new DozeScrimController(mScrimController, context);
mHeader = (StatusBarHeaderView) mStatusBarWindow.findViewById(R.id.header);
mHeader.setActivityStarter(this);
mKeyguardStatusBar = (KeyguardStatusBarView) mStatusBarWindow.findViewById(R.id.keyguard_header);
mStatusIconsKeyguard = (LinearLayout) mKeyguardStatusBar.findViewById(R.id.statusIcons);
mKeyguardStatusView = mStatusBarWindow.findViewById(R.id.keyguard_status_view);
mKeyguardBottomArea =
(KeyguardBottomAreaView) mStatusBarWindow.findViewById(R.id.keyguard_bottom_area);
mKeyguardBottomArea.setActivityStarter(this);
mKeyguardIndicationController = new KeyguardIndicationController(mContext,
(KeyguardIndicationTextView) mStatusBarWindow.findViewById(
R.id.keyguard_indication_text));
mKeyguardBottomArea.setKeyguardIndicationController(mKeyguardIndicationController);
mTickerEnabled = res.getBoolean(R.bool.enable_ticker);
if (mTickerEnabled) {
final ViewStub tickerStub = (ViewStub) mStatusBarView.findViewById(R.id.ticker_stub);
if (tickerStub != null) {
mTickerView = tickerStub.inflate();
mTicker = new MyTicker(context, mStatusBarView);
TickerView tickerView = (TickerView) mStatusBarView.findViewById(R.id.tickerText);
tickerView.mTicker = mTicker;
}
}
mEdgeBorder = res.getDimensionPixelSize(R.dimen.status_bar_edge_ignore);
// set the inital view visibility
setAreThereNotifications();
// Background thread for any controllers that need it.
mHandlerThread = new HandlerThread(TAG, Process.THREAD_PRIORITY_BACKGROUND);
mHandlerThread.start();
// Other icons
mLocationController = new LocationControllerImpl(mContext); // will post a notification
mBatteryController = new BatteryController(mContext);
mBatteryController.addStateChangedCallback(new BatteryStateChangeCallback() {
@Override
public void onPowerSaveChanged() {
mHandler.post(mCheckBarModes);
if (mDozeServiceHost != null) {
mDozeServiceHost.firePowerSaveChanged(mBatteryController.isPowerSave());
}
}
@Override
public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
// noop
}
});
mNetworkController = new NetworkControllerImpl(mContext);
mHotspotController = new HotspotControllerImpl(mContext);
mBluetoothController = new BluetoothControllerImpl(mContext, mHandlerThread.getLooper());
mSecurityController = new SecurityControllerImpl(mContext);
if (mContext.getResources().getBoolean(R.bool.config_showRotationLock)) {
mRotationLockController = new RotationLockControllerImpl(mContext);
}
mUserInfoController = new UserInfoController(mContext);
mVolumeComponent = getComponent(VolumeComponent.class);
if (mVolumeComponent != null) {
mZenModeController = mVolumeComponent.getZenController();
}
mCastController = new CastControllerImpl(mContext);
final SignalClusterView signalCluster =
(SignalClusterView) mStatusBarView.findViewById(R.id.signal_cluster);
final SignalClusterView signalClusterKeyguard =
(SignalClusterView) mKeyguardStatusBar.findViewById(R.id.signal_cluster);
final SignalClusterView signalClusterQs =
(SignalClusterView) mHeader.findViewById(R.id.signal_cluster);
mNetworkController.addSignalCluster(signalCluster);
mNetworkController.addSignalCluster(signalClusterKeyguard);
mNetworkController.addSignalCluster(signalClusterQs);
signalCluster.setSecurityController(mSecurityController);
signalCluster.setNetworkController(mNetworkController);
signalClusterKeyguard.setSecurityController(mSecurityController);
signalClusterKeyguard.setNetworkController(mNetworkController);
signalClusterQs.setSecurityController(mSecurityController);
signalClusterQs.setNetworkController(mNetworkController);
final boolean isAPhone = mNetworkController.hasVoiceCallingFeature();
if (isAPhone) {
mNetworkController.addEmergencyListener(new NetworkControllerImpl.EmergencyListener() {
@Override
public void setEmergencyCallsOnly(boolean emergencyOnly) {
mHeader.setShowEmergencyCallsOnly(emergencyOnly);
}
});
}
mCarrierLabel = (TextView)mStatusBarWindow.findViewById(R.id.carrier_label);
mShowCarrierInPanel = (mCarrierLabel != null);
if (DEBUG) Log.v(TAG, "carrierlabel=" + mCarrierLabel + " show=" + mShowCarrierInPanel);
if (mShowCarrierInPanel) {
mCarrierLabel.setVisibility(mCarrierLabelVisible ? View.VISIBLE : View.INVISIBLE);
mNetworkController.addCarrierLabel(new NetworkControllerImpl.CarrierLabelListener() {
@Override
public void setCarrierLabel(String label) {
mCarrierLabel.setText(label);
if (mNetworkController.hasMobileDataFeature()) {
if (TextUtils.isEmpty(label)) {
mCarrierLabel.setVisibility(View.GONE);
} else {
mCarrierLabel.setVisibility(View.VISIBLE);
}
}
}
});
}
mFlashlightController = new FlashlightController(mContext);
mKeyguardBottomArea.setFlashlightController(mFlashlightController);
mKeyguardBottomArea.setPhoneStatusBar(this);
mAccessibilityController = new AccessibilityController(mContext);
mKeyguardBottomArea.setAccessibilityController(mAccessibilityController);
mNextAlarmController = new NextAlarmController(mContext);
mKeyguardMonitor = new KeyguardMonitor();
if (UserSwitcherController.isUserSwitcherAvailable(UserManager.get(mContext))) {
mUserSwitcherController = new UserSwitcherController(mContext, mKeyguardMonitor);
}
mKeyguardUserSwitcher = new KeyguardUserSwitcher(mContext,
(ViewStub) mStatusBarWindow.findViewById(R.id.keyguard_user_switcher),
mKeyguardStatusBar, mNotificationPanel, mUserSwitcherController);
// Set up the quick settings tile panel
mQSPanel = (QSPanel) mStatusBarWindow.findViewById(R.id.quick_settings_panel);
if (mQSPanel != null) {
final QSTileHost qsh = new QSTileHost(mContext, this,
mBluetoothController, mLocationController, mRotationLockController,
mNetworkController, mZenModeController, mHotspotController,
mCastController, mFlashlightController,
mUserSwitcherController, mKeyguardMonitor,
mSecurityController);
mQSPanel.setHost(qsh);
mQSPanel.setTiles(qsh.getTiles());
mBrightnessMirrorController = new BrightnessMirrorController(mStatusBarWindow);
mQSPanel.setBrightnessMirror(mBrightnessMirrorController);
mHeader.setQSPanel(mQSPanel);
qsh.setCallback(new QSTileHost.Callback() {
@Override
public void onTilesChanged() {
mQSPanel.setTiles(qsh.getTiles());
}
});
}
// User info. Trigger first load.
mHeader.setUserInfoController(mUserInfoController);
mKeyguardStatusBar.setUserInfoController(mUserInfoController);
mUserInfoController.reloadUserInfo();
mHeader.setBatteryController(mBatteryController);
((BatteryMeterView) mStatusBarView.findViewById(R.id.battery)).setBatteryController(
mBatteryController);
mKeyguardStatusBar.setBatteryController(mBatteryController);
mHeader.setNextAlarmController(mNextAlarmController);
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
mBroadcastReceiver.onReceive(mContext,
new Intent(pm.isScreenOn() ? Intent.ACTION_SCREEN_ON : Intent.ACTION_SCREEN_OFF));
// receive broadcasts
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
if (DEBUG_MEDIA_FAKE_ARTWORK) {
filter.addAction("fake_artwork");
}
filter.addAction(ACTION_DEMO);
context.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, filter, null, null);
// listen for USER_SETUP_COMPLETE setting (per-user)
resetUserSetupObserver();
startGlyphRasterizeHack();
return mStatusBarView;
|
public void | notificationLightOff()
if (mDozeServiceHost != null) {
mDozeServiceHost.fireNotificationLight(false);
}
|
public void | notificationLightPulse(int argb, int onMillis, int offMillis)
if (mDozeServiceHost != null) {
mDozeServiceHost.fireNotificationLight(true);
}
|
private void | notifyNavigationBarScreenOn(boolean screenOn)
if (mNavigationBarView == null) return;
mNavigationBarView.notifyScreenOn(screenOn);
|
private void | notifyUiVisibilityChanged(int vis)
try {
mWindowManagerService.statusBarVisibilityChanged(vis);
} catch (RemoteException ex) {
}
|
public void | onActivated(com.android.systemui.statusbar.ActivatableNotificationView view)
EventLogTags.writeSysuiLockscreenGesture(
EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_TAP_NOTIFICATION_ACTIVATE,
0 /* lengthDp - N/A */, 0 /* velocityDp - N/A */);
mKeyguardIndicationController.showTransientIndication(R.string.notification_tap_again);
ActivatableNotificationView previousView = mStackScroller.getActivatedChild();
if (previousView != null) {
previousView.makeInactive(true /* animate */);
}
mStackScroller.setActivatedChild(view);
|
public void | onActivationReset(com.android.systemui.statusbar.ActivatableNotificationView view)
if (view == mStackScroller.getActivatedChild()) {
mKeyguardIndicationController.hideTransientIndication();
mStackScroller.setActivatedChild(null);
}
|
public boolean | onBackPressed()
if (mStatusBarKeyguardViewManager.onBackPressed()) {
return true;
}
if (mNotificationPanel.isQsExpanded()) {
if (mNotificationPanel.isQsDetailShowing()) {
mNotificationPanel.closeQsDetail();
} else {
mNotificationPanel.animateCloseQs();
}
return true;
}
if (mState != StatusBarState.KEYGUARD && mState != StatusBarState.SHADE_LOCKED) {
animateCollapsePanels();
return true;
}
return false;
|
public void | onCameraHintStarted()
mKeyguardIndicationController.showTransientIndication(R.string.camera_hint);
|
public void | onClosingFinished()
runPostCollapseRunnables();
|
protected void | onConfigurationChanged(android.content.res.Configuration newConfig)
super.onConfigurationChanged(newConfig); // calls refreshLayout
if (DEBUG) {
Log.v(TAG, "configuration changed: " + mContext.getResources().getConfiguration());
}
updateDisplaySize(); // populates mDisplayMetrics
updateResources();
updateClockSize();
repositionNavigationBar();
updateExpandedViewPos(EXPANDED_LEAVE_ALONE);
updateShowSearchHoldoff();
updateRowStates();
mScreenPinningRequest.onConfigurationChanged();
|
public void | onDragDownReset()
mStackScroller.setDimmed(true /* dimmed */, true /* animated */);
|
public boolean | onDraggedDown(android.view.View startingChild, int dragLengthY)
if (hasActiveNotifications()) {
EventLogTags.writeSysuiLockscreenGesture(
EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_DOWN_FULL_SHADE,
(int) (dragLengthY / mDisplayMetrics.density),
0 /* velocityDp - N/A */);
// We have notifications, go to locked shade.
goToLockedShade(startingChild);
return true;
} else {
// No notifications - abort gesture.
return false;
}
|
public void | onHeadsUpDismissed()
mHeadsUpNotificationView.dismiss();
|
public void | onHintFinished()
// Delay the reset a bit so the user can read the text.
mKeyguardIndicationController.hideTransientIndicationDelayed(HINT_RESET_DELAY_MS);
|
public void | onKeyguardViewManagerStatesUpdated()To be called when there's a state change in StatusBarKeyguardViewManager.
logStateToEventlog();
|
private void | onLaunchTransitionTimeout()
Log.w(TAG, "Launch transition: Timeout!");
mNotificationPanel.resetViews();
|
public boolean | onMenuPressed()
return mState == StatusBarState.KEYGUARD && mStatusBarKeyguardViewManager.onMenuPressed();
|
public void | onPhoneHintStarted()
mKeyguardIndicationController.showTransientIndication(R.string.phone_hint);
|
public void | onScreenTurnedOff()
mScreenOnFromKeyguard = false;
mScreenOnComingFromTouch = false;
mScreenOnTouchLocation = null;
mStackScroller.setAnimationsEnabled(false);
updateVisibleToUser();
|
public void | onScreenTurnedOn()
mScreenOnFromKeyguard = true;
mStackScroller.setAnimationsEnabled(true);
mNotificationPanel.onScreenTurnedOn();
mNotificationPanel.setTouchDisabled(false);
updateVisibleToUser();
|
public boolean | onSpacePressed()
if (mScreenOn != null && mScreenOn
&& (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED)) {
animateCollapsePanels(
CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL /* flags */, true /* force */);
return true;
}
return false;
|
public void | onThresholdReached()
mStackScroller.setDimmed(false /* dimmed */, true /* animate */);
|
public void | onTouchSlopExceeded()
mStackScroller.removeLongPressCallback();
|
public void | onTrackingStarted()
runPostCollapseRunnables();
|
public void | onTrackingStopped(boolean expand)
if (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED) {
if (!expand && !mUnlockMethodCache.isCurrentlyInsecure()) {
showBouncer();
}
}
|
public void | onUnlockHintStarted()
mKeyguardIndicationController.showTransientIndication(R.string.keyguard_unlock);
|
public void | onUnlockMethodStateChanged()
logStateToEventlog();
|
public void | onVisibilityChanged(boolean visible)
// Update the recents visibility flag
if (visible) {
mSystemUiVisibility |= View.RECENT_APPS_VISIBLE;
} else {
mSystemUiVisibility &= ~View.RECENT_APPS_VISIBLE;
}
notifyUiVisibilityChanged(mSystemUiVisibility);
|
private boolean | packageHasVisibilityOverride(java.lang.String key)
return mNotificationData.getVisibilityOverride(key)
!= NotificationListenerService.Ranking.VISIBILITY_NO_OVERRIDE;
|
boolean | panelsEnabled()
return (mDisabled & StatusBarManager.DISABLE_EXPAND) == 0;
|
private void | performDismissAllAnimations(java.util.ArrayList hideAnimatedList)
Runnable animationFinishAction = new Runnable() {
@Override
public void run() {
mStackScroller.post(new Runnable() {
@Override
public void run() {
mStackScroller.setDismissAllInProgress(false);
}
});
animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE);
}
};
// let's disable our normal animations
mStackScroller.setDismissAllInProgress(true);
// Decrease the delay for every row we animate to give the sense of
// accelerating the swipes
int rowDelayDecrement = 10;
int currentDelay = 140;
int totalDelay = 180;
int numItems = hideAnimatedList.size();
for (int i = numItems - 1; i >= 0; i--) {
View view = hideAnimatedList.get(i);
Runnable endRunnable = null;
if (i == 0) {
endRunnable = animationFinishAction;
}
mStackScroller.dismissViewAnimated(view, endRunnable, totalDelay, 260);
currentDelay = Math.max(50, currentDelay - rowDelayDecrement);
totalDelay += currentDelay;
}
|
public void | postAnimateCollapsePanels()
mHandler.post(mAnimateCollapsePanels);
|
public void | postStartSettingsActivity(android.content.Intent intent, int delay)
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
handleStartSettingsActivity(intent, true /*onlyProvisioned*/);
}
}, delay);
|
void | postStartTracing()
mHandler.postDelayed(mStartTracing, 3000);
|
private void | prepareNavigationBarView()
mNavigationBarView.reorient();
mNavigationBarView.getRecentsButton().setOnClickListener(mRecentsClickListener);
mNavigationBarView.getRecentsButton().setOnTouchListener(mRecentsPreloadOnTouchListener);
mNavigationBarView.getRecentsButton().setLongClickable(true);
mNavigationBarView.getRecentsButton().setOnLongClickListener(mLongPressBackRecentsListener);
mNavigationBarView.getBackButton().setLongClickable(true);
mNavigationBarView.getBackButton().setOnLongClickListener(mLongPressBackRecentsListener);
mNavigationBarView.getHomeButton().setOnTouchListener(mHomeActionListener);
updateSearchPanel();
|
private void | refreshAllIconsForLayout(android.widget.LinearLayout ll)
final int count = ll.getChildCount();
for (int n = 0; n < count; n++) {
View child = ll.getChildAt(n);
if (child instanceof StatusBarIconView) {
((StatusBarIconView) child).updateDrawable();
}
}
|
public void | refreshAllStatusBarIcons()
refreshAllIconsForLayout(mStatusIcons);
refreshAllIconsForLayout(mStatusIconsKeyguard);
refreshAllIconsForLayout(mNotificationIcons);
|
protected void | refreshLayout(int layoutDirection)
if (mNavigationBarView != null) {
mNavigationBarView.setLayoutDirection(layoutDirection);
}
refreshAllStatusBarIcons();
|
private void | removeHeadsUpView()
mWindowManager.removeView(mHeadsUpNotificationView);
|
public void | removeIcon(java.lang.String slot, int index, int viewIndex)
if (SPEW) Log.d(TAG, "removeIcon slot=" + slot + " index=" + index + " viewIndex=" + viewIndex);
mStatusIcons.removeViewAt(viewIndex);
mStatusIconsKeyguard.removeViewAt(viewIndex);
|
public void | removeNotification(java.lang.String key, android.service.notification.NotificationListenerService.RankingMap ranking)
if (ENABLE_HEADS_UP && mHeadsUpNotificationView.getEntry() != null
&& key.equals(mHeadsUpNotificationView.getEntry().notification.getKey())) {
mHeadsUpNotificationView.clear();
}
StatusBarNotification old = removeNotificationViews(key, ranking);
if (SPEW) Log.d(TAG, "removeNotification key=" + key + " old=" + old);
if (old != null) {
// Cancel the ticker if it's still running
if (mTickerEnabled) {
mTicker.removeEntry(old);
}
// Recalculate the position of the sliding windows and the titles.
updateExpandedViewPos(EXPANDED_LEAVE_ALONE);
if (CLOSE_PANEL_WHEN_EMPTIED && !hasActiveNotifications()
&& !mNotificationPanel.isTracking() && !mNotificationPanel.isQsExpanded()) {
if (mState == StatusBarState.SHADE) {
animateCollapsePanels();
} else if (mState == StatusBarState.SHADE_LOCKED) {
goToKeyguard();
}
}
}
setAreThereNotifications();
|
private void | repositionNavigationBar()
if (mNavigationBarView == null || !mNavigationBarView.isAttachedToWindow()) return;
prepareNavigationBarView();
mWindowManager.updateViewLayout(mNavigationBarView, getNavigationBarLayoutParams());
|
public void | resetHeadsUpDecayTimer()
mHandler.removeMessages(MSG_DECAY_HEADS_UP);
if (mUseHeadsUp && mHeadsUpNotificationDecay > 0
&& mHeadsUpNotificationView.isClearable()) {
mHandler.sendEmptyMessageDelayed(MSG_DECAY_HEADS_UP, mHeadsUpNotificationDecay);
}
|
private void | resetUserExpandedStates()
ArrayList<Entry> activeNotifications = mNotificationData.getActiveNotifications();
final int notificationCount = activeNotifications.size();
for (int i = 0; i < notificationCount; i++) {
NotificationData.Entry entry = activeNotifications.get(i);
if (entry.row != null) {
entry.row.resetUserExpansion();
}
}
|
private void | resetUserSetupObserver()
mContext.getContentResolver().unregisterContentObserver(mUserSetupObserver);
mUserSetupObserver.onChange(false);
mContext.getContentResolver().registerContentObserver(
Settings.Secure.getUriFor(Settings.Secure.USER_SETUP_COMPLETE), true,
mUserSetupObserver,
mCurrentUserId);
|
private void | resumeSuspendedAutohide()
if (mAutohideSuspended) {
scheduleAutohide();
mHandler.postDelayed(mCheckBarModes, 500); // longer than home -> launcher
}
|
private void | runLaunchTransitionEndRunnable()
if (mLaunchTransitionEndRunnable != null) {
Runnable r = mLaunchTransitionEndRunnable;
// mLaunchTransitionEndRunnable might call showKeyguard, which would execute it again,
// which would lead to infinite recursion. Protect against it.
mLaunchTransitionEndRunnable = null;
r.run();
}
|
private void | runPostCollapseRunnables()
int size = mPostCollapseRunnables.size();
for (int i = 0; i < size; i++) {
mPostCollapseRunnables.get(i).run();
}
mPostCollapseRunnables.clear();
|
private boolean | sameSessions(android.media.session.MediaController a, android.media.session.MediaController b)
if (a == b) return true;
if (a == null) return false;
return a.controlsSameSession(b);
|
static final float | saturate(float a)
return a < 0f ? 0f : (a > 1f ? 1f : a);
|
private void | scheduleAutohide()
cancelAutohide();
mHandler.postDelayed(mAutohide, AUTOHIDE_TIMEOUT_MS);
|
public void | scheduleHeadsUpClose()
mHandler.removeMessages(MSG_HIDE_HEADS_UP);
mHandler.sendEmptyMessage(MSG_HIDE_HEADS_UP);
|
public void | scheduleHeadsUpEscalation()
mHandler.removeMessages(MSG_ESCALATE_HEADS_UP);
mHandler.sendEmptyMessage(MSG_ESCALATE_HEADS_UP);
|
public void | scheduleHeadsUpOpen()
mHandler.removeMessages(MSG_SHOW_HEADS_UP);
mHandler.sendEmptyMessage(MSG_SHOW_HEADS_UP);
|
protected void | setAreThereNotifications()
if (SPEW) {
final boolean clearable = hasActiveNotifications() &&
mNotificationData.hasActiveClearableNotifications();
Log.d(TAG, "setAreThereNotifications: N=" +
mNotificationData.getActiveNotifications().size() + " any=" +
hasActiveNotifications() + " clearable=" + clearable);
}
final View nlo = mStatusBarView.findViewById(R.id.notification_lights_out);
final boolean showDot = hasActiveNotifications() && !areLightsOn();
if (showDot != (nlo.getAlpha() == 1.0f)) {
if (showDot) {
nlo.setAlpha(0f);
nlo.setVisibility(View.VISIBLE);
}
nlo.animate()
.alpha(showDot?1:0)
.setDuration(showDot?750:250)
.setInterpolator(new AccelerateInterpolator(2.0f))
.setListener(showDot ? null : new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator _a) {
nlo.setVisibility(View.GONE);
}
})
.start();
}
findAndUpdateMediaNotifications();
updateCarrierLabelVisibility(false);
|
public void | setBarState(int state)
// If we're visible and switched to SHADE_LOCKED (the user dragged
// down on the lockscreen), clear notification LED, vibration,
// ringing.
// Other transitions are covered in handleVisibleToUserChanged().
if (state != mState && mVisible && state == StatusBarState.SHADE_LOCKED) {
try {
mBarService.clearNotificationEffects();
} catch (RemoteException e) {
// Ignore.
}
}
mState = state;
mStatusBarWindowManager.setStatusBarState(state);
|
public void | setBouncerShowing(boolean bouncerShowing)
super.setBouncerShowing(bouncerShowing);
disable(mDisabledUnmodified, true /* animate */);
|
private void | setControllerUsers()
if (mZenModeController != null) {
mZenModeController.setUserId(mCurrentUserId);
}
|
public void | setEmptyDragAmount(float amount)
mNotificationPanel.setEmptyDragAmount(amount);
|
private void | setHeadsUpVisibility(boolean vis)
if (!ENABLE_HEADS_UP) return;
if (DEBUG) Log.v(TAG, (vis ? "showing" : "hiding") + " heads up window");
EventLog.writeEvent(EventLogTags.SYSUI_HEADS_UP_STATUS,
vis ? mHeadsUpNotificationView.getKey() : "",
vis ? 1 : 0);
mHeadsUpNotificationView.setVisibility(vis ? View.VISIBLE : View.GONE);
|
public void | setImeWindowStatus(android.os.IBinder token, int vis, int backDisposition, boolean showImeSwitcher)
boolean imeShown = (vis & InputMethodService.IME_VISIBLE) != 0;
int flags = mNavigationIconHints;
if ((backDisposition == InputMethodService.BACK_DISPOSITION_WILL_DISMISS) || imeShown) {
flags |= NAVIGATION_HINT_BACK_ALT;
} else {
flags &= ~NAVIGATION_HINT_BACK_ALT;
}
if (showImeSwitcher) {
flags |= NAVIGATION_HINT_IME_SHOWN;
} else {
flags &= ~NAVIGATION_HINT_IME_SHOWN;
}
setNavigationIconHints(flags);
|
public void | setInteracting(int barWindow, boolean interacting)
final boolean changing = ((mInteractingWindows & barWindow) != 0) != interacting;
mInteractingWindows = interacting
? (mInteractingWindows | barWindow)
: (mInteractingWindows & ~barWindow);
if (mInteractingWindows != 0) {
suspendAutohide();
} else {
resumeSuspendedAutohide();
}
// manually dismiss the volume panel when interacting with the nav bar
if (changing && interacting && barWindow == StatusBarManager.WINDOW_NAVIGATION_BAR) {
if (mVolumeComponent != null) {
mVolumeComponent.dismissNow();
}
}
checkBarModes();
|
public void | setKeyguardFadingAway(long delay, long fadeoutDuration)Notifies the status bar the Keyguard is fading away with the specified timings.
mKeyguardFadingAway = true;
mKeyguardFadingAwayDelay = delay;
mKeyguardFadingAwayDuration = fadeoutDuration;
mWaitingForKeyguardExit = false;
disable(mDisabledUnmodified, true /* animate */);
|
public void | setLightsOn(boolean on)
Log.v(TAG, "setLightsOn(" + on + ")");
if (on) {
setSystemUiVisibility(0, View.SYSTEM_UI_FLAG_LOW_PROFILE);
} else {
setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE, View.SYSTEM_UI_FLAG_LOW_PROFILE);
}
|
private void | setNavigationIconHints(int hints)
if (hints == mNavigationIconHints) return;
mNavigationIconHints = hints;
if (mNavigationBarView != null) {
mNavigationBarView.setNavigationIconHints(hints);
}
checkBarModes();
|
public void | setQsExpanded(boolean expanded)
mStatusBarWindowManager.setQsExpanded(expanded);
|
public void | setSystemUiVisibility(int vis, int mask)
final int oldVal = mSystemUiVisibility;
final int newVal = (oldVal&~mask) | (vis&mask);
final int diff = newVal ^ oldVal;
if (DEBUG) Log.d(TAG, String.format(
"setSystemUiVisibility vis=%s mask=%s oldVal=%s newVal=%s diff=%s",
Integer.toHexString(vis), Integer.toHexString(mask),
Integer.toHexString(oldVal), Integer.toHexString(newVal),
Integer.toHexString(diff)));
if (diff != 0) {
// we never set the recents bit via this method, so save the prior state to prevent
// clobbering the bit below
final boolean wasRecentsVisible = (mSystemUiVisibility & View.RECENT_APPS_VISIBLE) > 0;
mSystemUiVisibility = newVal;
// update low profile
if ((diff & View.SYSTEM_UI_FLAG_LOW_PROFILE) != 0) {
final boolean lightsOut = (vis & View.SYSTEM_UI_FLAG_LOW_PROFILE) != 0;
if (lightsOut) {
animateCollapsePanels();
if (mTicking) {
haltTicker();
}
}
setAreThereNotifications();
}
// update status bar mode
final int sbMode = computeBarMode(oldVal, newVal, mStatusBarView.getBarTransitions(),
View.STATUS_BAR_TRANSIENT, View.STATUS_BAR_TRANSLUCENT);
// update navigation bar mode
final int nbMode = mNavigationBarView == null ? -1 : computeBarMode(
oldVal, newVal, mNavigationBarView.getBarTransitions(),
View.NAVIGATION_BAR_TRANSIENT, View.NAVIGATION_BAR_TRANSLUCENT);
final boolean sbModeChanged = sbMode != -1;
final boolean nbModeChanged = nbMode != -1;
boolean checkBarModes = false;
if (sbModeChanged && sbMode != mStatusBarMode) {
mStatusBarMode = sbMode;
checkBarModes = true;
}
if (nbModeChanged && nbMode != mNavigationBarMode) {
mNavigationBarMode = nbMode;
checkBarModes = true;
}
if (checkBarModes) {
checkBarModes();
}
if (sbModeChanged || nbModeChanged) {
// update transient bar autohide
if (mStatusBarMode == MODE_SEMI_TRANSPARENT || mNavigationBarMode == MODE_SEMI_TRANSPARENT) {
scheduleAutohide();
} else {
cancelAutohide();
}
}
// ready to unhide
if ((vis & View.STATUS_BAR_UNHIDE) != 0) {
mSystemUiVisibility &= ~View.STATUS_BAR_UNHIDE;
}
if ((vis & View.NAVIGATION_BAR_UNHIDE) != 0) {
mSystemUiVisibility &= ~View.NAVIGATION_BAR_UNHIDE;
}
// restore the recents bit
if (wasRecentsVisible) {
mSystemUiVisibility |= View.RECENT_APPS_VISIBLE;
}
// send updated sysui visibility to window manager
notifyUiVisibilityChanged(mSystemUiVisibility);
}
|
public android.view.ViewPropertyAnimator | setVisibilityWhenDone(android.view.ViewPropertyAnimator a, android.view.View v, int vis)
a.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
v.setVisibility(vis);
a.setListener(null); // oneshot
}
});
return a;
|
public android.animation.Animator | setVisibilityWhenDone(android.animation.Animator a, android.view.View v, int vis)
a.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
v.setVisibility(vis);
}
});
return a;
|
public void | setWindowState(int window, int state)
boolean showing = state == WINDOW_STATE_SHOWING;
if (mStatusBarWindow != null
&& window == StatusBarManager.WINDOW_STATUS_BAR
&& mStatusBarWindowState != state) {
mStatusBarWindowState = state;
if (DEBUG_WINDOW_STATE) Log.d(TAG, "Status bar " + windowStateToString(state));
if (!showing && mState == StatusBarState.SHADE) {
mStatusBarView.collapseAllPanels(false);
}
}
if (mNavigationBarView != null
&& window == StatusBarManager.WINDOW_NAVIGATION_BAR
&& mNavigationBarWindowState != state) {
mNavigationBarWindowState = state;
if (DEBUG_WINDOW_STATE) Log.d(TAG, "Navigation bar " + windowStateToString(state));
}
|
protected void | setZenMode(int mode)
super.setZenMode(mode);
if (mIconPolicy != null) {
mIconPolicy.setZenMode(mode);
}
|
protected boolean | shouldDisableNavbarGestures()
return !isDeviceProvisioned()
|| mExpandedVisible
|| (mDisabled & StatusBarManager.DISABLE_SEARCH) != 0;
|
private void | showBouncer()
if (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED) {
mWaitingForKeyguardExit = mStatusBarKeyguardViewManager.isShowing();
mStatusBarKeyguardViewManager.dismiss();
}
|
public void | showClock(boolean show)
if (mStatusBarView == null) return;
View clock = mStatusBarView.findViewById(R.id.clock);
if (clock != null) {
clock.setVisibility(show ? View.VISIBLE : View.GONE);
}
|
public void | showKeyguard()
if (mLaunchTransitionFadingAway) {
mNotificationPanel.animate().cancel();
mNotificationPanel.setAlpha(1f);
runLaunchTransitionEndRunnable();
mLaunchTransitionFadingAway = false;
}
mHandler.removeMessages(MSG_LAUNCH_TRANSITION_TIMEOUT);
setBarState(StatusBarState.KEYGUARD);
updateKeyguardState(false /* goingToFullShade */, false /* fromShadeLocked */);
if (!mScreenOnFromKeyguard) {
// If the screen is off already, we need to disable touch events because these might
// collapse the panel after we expanded it, and thus we would end up with a blank
// Keyguard.
mNotificationPanel.setTouchDisabled(true);
}
instantExpandNotificationsPanel();
mLeaveOpenOnKeyguardHide = false;
if (mDraggedDownRow != null) {
mDraggedDownRow.setUserLocked(false);
mDraggedDownRow.notifyHeightChanged();
mDraggedDownRow = null;
}
|
protected void | showRecents(boolean triggeredFromAltTab)
// Set the recents visibility flag
mSystemUiVisibility |= View.RECENT_APPS_VISIBLE;
notifyUiVisibilityChanged(mSystemUiVisibility);
super.showRecents(triggeredFromAltTab);
|
public void | showScreenPinningRequest()
if (mKeyguardMonitor.isShowing()) {
// Don't allow apps to trigger this from keyguard.
return;
}
// Show screen pinning request, since this comes from an app, show 'no thanks', button.
showScreenPinningRequest(true);
|
public void | showScreenPinningRequest(boolean allowCancel)
mScreenPinningRequest.showPrompt(allowCancel);
|
public void | showSearchPanel()
super.showSearchPanel();
mHandler.removeCallbacks(mShowSearchPanel);
// we want to freeze the sysui state wherever it is
mSearchPanelView.setSystemUiVisibility(mSystemUiVisibility);
if (mNavigationBarView != null) {
WindowManager.LayoutParams lp =
(android.view.WindowManager.LayoutParams) mNavigationBarView.getLayoutParams();
lp.flags &= ~WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
mWindowManager.updateViewLayout(mNavigationBarView, lp);
}
|
public void | start()
mDisplay = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE))
.getDefaultDisplay();
updateDisplaySize();
mScrimSrcModeEnabled = mContext.getResources().getBoolean(
R.bool.config_status_bar_scrim_behind_use_src);
super.start(); // calls createAndAddWindows()
mMediaSessionManager
= (MediaSessionManager) mContext.getSystemService(Context.MEDIA_SESSION_SERVICE);
// TODO: use MediaSessionManager.SessionListener to hook us up to future updates
// in session state
addNavigationBar();
// Lastly, call to the icon policy to install/update all the icons.
mIconPolicy = new PhoneStatusBarPolicy(mContext, mCastController, mHotspotController);
mSettingsObserver.onChange(false); // set up
mHeadsUpObserver.onChange(true); // set up
if (ENABLE_HEADS_UP) {
mContext.getContentResolver().registerContentObserver(
Settings.Global.getUriFor(Settings.Global.HEADS_UP_NOTIFICATIONS_ENABLED), true,
mHeadsUpObserver);
mContext.getContentResolver().registerContentObserver(
Settings.Global.getUriFor(SETTING_HEADS_UP_TICKER), true,
mHeadsUpObserver);
}
mUnlockMethodCache = UnlockMethodCache.getInstance(mContext);
mUnlockMethodCache.addListener(this);
startKeyguard();
mDozeServiceHost = new DozeServiceHost();
putComponent(DozeHost.class, mDozeServiceHost);
putComponent(PhoneStatusBar.class, this);
setControllerUsers();
notifyUserAboutHiddenNotifications();
mScreenPinningRequest = new ScreenPinningRequest(mContext);
|
public android.animation.Animator | start(android.animation.Animator a)
a.start();
return a;
|
public void | startActivity(android.content.Intent intent, boolean dismissShade)
startActivityDismissingKeyguard(intent, false, dismissShade);
|
public void | startActivityDismissingKeyguard(android.content.Intent intent, boolean onlyProvisioned, boolean dismissShade)
if (onlyProvisioned && !isDeviceProvisioned()) return;
final boolean afterKeyguardGone = PreviewInflater.wouldLaunchResolverActivity(
mContext, intent, mCurrentUserId);
final boolean keyguardShowing = mStatusBarKeyguardViewManager.isShowing();
dismissKeyguardThenExecute(new OnDismissAction() {
@Override
public boolean onDismiss() {
AsyncTask.execute(new Runnable() {
public void run() {
try {
if (keyguardShowing && !afterKeyguardGone) {
ActivityManagerNative.getDefault()
.keyguardWaitingForActivityDrawn();
}
intent.setFlags(
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
mContext.startActivityAsUser(
intent, new UserHandle(UserHandle.USER_CURRENT));
overrideActivityPendingAppTransition(
keyguardShowing && !afterKeyguardGone);
} catch (RemoteException e) {
}
}
});
if (dismissShade) {
animateCollapsePanels(
CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL, true /* force */);
}
return true;
}
}, afterKeyguardGone);
|
public android.animation.Animator | startDelay(int d, android.animation.Animator a)
a.setStartDelay(d);
return a;
|
private void | startGlyphRasterizeHack()Hack to improve glyph rasterization for scaled text views.
mStatusBarView.getViewTreeObserver().addOnPreDrawListener(
new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
if (mDrawCount == 1) {
mStatusBarView.getViewTreeObserver().removeOnPreDrawListener(this);
HardwareCanvas.setProperty("extraRasterBucket",
Float.toString(StackScrollAlgorithm.DIMMED_SCALE));
HardwareCanvas.setProperty("extraRasterBucket", Float.toString(
mContext.getResources().getDimensionPixelSize(
R.dimen.qs_time_collapsed_size)
/ mContext.getResources().getDimensionPixelSize(
R.dimen.qs_time_expanded_size)));
}
mDrawCount++;
return true;
}
});
|
private void | startKeyguard()
KeyguardViewMediator keyguardViewMediator = getComponent(KeyguardViewMediator.class);
mStatusBarKeyguardViewManager = keyguardViewMediator.registerStatusBar(this,
mStatusBarWindow, mStatusBarWindowManager, mScrimController);
mKeyguardViewMediatorCallback = keyguardViewMediator.getViewMediatorCallback();
|
public void | startLaunchTransitionTimeout()Starts the timeout when we try to start the affordances on Keyguard. We usually rely that
Keyguard goes away via fadeKeyguardAfterLaunchTransition, however, that might not happen
because the launched app crashed or something else went wrong.
mHandler.sendEmptyMessageDelayed(MSG_LAUNCH_TRANSITION_TIMEOUT,
LAUNCH_TRANSITION_TIMEOUT_MS);
|
private void | startNotificationLogging()
mStackScroller.setChildLocationsChangedListener(mNotificationLocationsChangedListener);
// Some transitions like mVisibleToUser=false -> mVisibleToUser=true don't
// cause the scroller to emit child location events. Hence generate
// one ourselves to guarantee that we're reporting visible
// notifications.
// (Note that in cases where the scroller does emit events, this
// additional event doesn't break anything.)
mNotificationLocationsChangedListener.onChildLocationsChanged(mStackScroller);
|
private void | stopNotificationLogging()
// Report all notifications as invisible and turn down the
// reporter.
if (!mCurrentlyVisibleNotifications.isEmpty()) {
logNotificationVisibilityChanges(
Collections.<String>emptyList(), mCurrentlyVisibleNotifications);
mCurrentlyVisibleNotifications.clear();
}
mHandler.removeCallbacks(mVisibilityReporter);
mStackScroller.setChildLocationsChangedListener(null);
|
private void | suspendAutohide()
mHandler.removeCallbacks(mAutohide);
mHandler.removeCallbacks(mCheckBarModes);
mAutohideSuspended = (mSystemUiVisibility & STATUS_OR_NAV_TRANSIENT) != 0;
|
protected void | tick(android.service.notification.StatusBarNotification n, boolean firstTime)
if (!mTickerEnabled) return;
// no ticking in lights-out mode
if (!areLightsOn()) return;
// no ticking in Setup
if (!isDeviceProvisioned()) return;
// not for you
if (!isNotificationForCurrentProfiles(n)) return;
// Show the ticker if one is requested. Also don't do this
// until status bar window is attached to the window manager,
// because... well, what's the point otherwise? And trying to
// run a ticker without being attached will crash!
if (n.getNotification().tickerText != null && mStatusBarWindow != null
&& mStatusBarWindow.getWindowToken() != null) {
if (0 == (mDisabled & (StatusBarManager.DISABLE_NOTIFICATION_ICONS
| StatusBarManager.DISABLE_NOTIFICATION_TICKER))) {
mTicker.addEntry(n);
}
}
|
protected void | toggleRecents()
// Toggle the recents visibility flag
mSystemUiVisibility ^= View.RECENT_APPS_VISIBLE;
notifyUiVisibilityChanged(mSystemUiVisibility);
super.toggleRecents();
|
public void | topAppWindowChanged(boolean showMenu)
if (DEBUG) {
Log.d(TAG, (showMenu?"showing":"hiding") + " the MENU button");
}
if (mNavigationBarView != null) {
mNavigationBarView.setMenuVisibility(showMenu);
}
// See above re: lights-out policy for legacy apps.
if (showMenu) setLightsOn(true);
|
protected void | updateCarrierLabelVisibility(boolean force)
// TODO: Handle this for the notification stack scroller as well
if (!mShowCarrierInPanel) return;
// The idea here is to only show the carrier label when there is enough room to see it,
// i.e. when there aren't enough notifications to fill the panel.
if (SPEW) {
Log.d(TAG, String.format("stackScrollerh=%d scrollh=%d carrierh=%d",
mStackScroller.getHeight(), mStackScroller.getHeight(),
mCarrierLabelHeight));
}
// Emergency calls only is shown in the expanded header now.
final boolean emergencyCallsShownElsewhere = true;
final boolean makeVisible =
!(emergencyCallsShownElsewhere && mNetworkController.isEmergencyOnly())
&& mStackScroller.getHeight() < (mNotificationPanel.getHeight()
- mCarrierLabelHeight - mStatusBarHeaderHeight)
&& mStackScroller.getVisibility() == View.VISIBLE
&& mState != StatusBarState.KEYGUARD;
if (force || mCarrierLabelVisible != makeVisible) {
mCarrierLabelVisible = makeVisible;
if (DEBUG) {
Log.d(TAG, "making carrier label " + (makeVisible?"visible":"invisible"));
}
mCarrierLabel.animate().cancel();
if (makeVisible) {
mCarrierLabel.setVisibility(View.VISIBLE);
}
mCarrierLabel.animate()
.alpha(makeVisible ? 1f : 0f)
//.setStartDelay(makeVisible ? 500 : 0)
//.setDuration(makeVisible ? 750 : 100)
.setDuration(150)
.setListener(makeVisible ? null : new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
if (!mCarrierLabelVisible) { // race
mCarrierLabel.setVisibility(View.INVISIBLE);
mCarrierLabel.setAlpha(0f);
}
}
})
.start();
}
|
private void | updateClearAll()
boolean showDismissView =
mState != StatusBarState.KEYGUARD &&
mNotificationData.hasActiveClearableNotifications();
mStackScroller.updateDismissView(showDismissView);
|
private void | updateClockSize()
if (mStatusBarView == null) return;
TextView clock = (TextView) mStatusBarView.findViewById(R.id.clock);
if (clock != null) {
FontSizeUtils.updateFontSize(clock, R.dimen.status_bar_clock_size);
}
|
void | updateDisplaySize()
mDisplay.getMetrics(mDisplayMetrics);
mDisplay.getSize(mCurrentDisplaySize);
if (DEBUG_GESTURES) {
mGestureRec.tag("display",
String.format("%dx%d", mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels));
}
|
private void | updateDozingState()
if (mState != StatusBarState.KEYGUARD && !mNotificationPanel.isDozing()) {
return;
}
boolean animate = !mDozing && mDozeScrimController.isPulsing();
mNotificationPanel.setDozing(mDozing, animate);
mStackScroller.setDark(mDozing, animate, mScreenOnTouchLocation);
mScrimController.setDozing(mDozing);
mDozeScrimController.setDozing(mDozing, animate);
|
private void | updateEmptyShadeView()
boolean showEmptyShade =
mState != StatusBarState.KEYGUARD &&
mNotificationData.getActiveNotifications().size() == 0;
mNotificationPanel.setShadeEmpty(showEmptyShade);
|
public void | updateExpandedViewPos(int thingy)
if (SPEW) Log.v(TAG, "updateExpandedViewPos");
// on larger devices, the notification panel is propped open a bit
mNotificationPanel.setMinimumHeight(
(int)(mNotificationPanelMinHeightFrac * mCurrentDisplaySize.y));
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mNotificationPanel.getLayoutParams();
lp.gravity = mNotificationPanelGravity;
mNotificationPanel.setLayoutParams(lp);
updateCarrierLabelVisibility(false);
|
public void | updateIcon(java.lang.String slot, int index, int viewIndex, com.android.internal.statusbar.StatusBarIcon old, com.android.internal.statusbar.StatusBarIcon icon)
if (SPEW) Log.d(TAG, "updateIcon slot=" + slot + " index=" + index + " viewIndex=" + viewIndex
+ " old=" + old + " icon=" + icon);
StatusBarIconView view = (StatusBarIconView) mStatusIcons.getChildAt(viewIndex);
view.set(icon);
view = (StatusBarIconView) mStatusIconsKeyguard.getChildAt(viewIndex);
view.set(icon);
|
private void | updateKeyguardState(boolean goingToFullShade, boolean fromShadeLocked)
if (mState == StatusBarState.KEYGUARD) {
mKeyguardIndicationController.setVisible(true);
mNotificationPanel.resetViews();
mKeyguardUserSwitcher.setKeyguard(true, fromShadeLocked);
} else {
mKeyguardIndicationController.setVisible(false);
mKeyguardUserSwitcher.setKeyguard(false,
goingToFullShade || mState == StatusBarState.SHADE_LOCKED || fromShadeLocked);
}
if (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED) {
mScrimController.setKeyguardShowing(true);
} else {
mScrimController.setKeyguardShowing(false);
}
mNotificationPanel.setBarState(mState, mKeyguardFadingAway, goingToFullShade);
updateDozingState();
updatePublicMode();
updateStackScrollerState(goingToFullShade);
updateNotifications();
checkBarModes();
updateCarrierLabelVisibility(false);
updateMediaMetaData(false);
mKeyguardMonitor.notifyKeyguardState(mStatusBarKeyguardViewManager.isShowing(),
mStatusBarKeyguardViewManager.isSecure());
|
public void | updateMediaMetaData(boolean metaDataChanged)Refresh or remove lockscreen artwork from media metadata.
if (!SHOW_LOCKSCREEN_MEDIA_ARTWORK) return;
if (mBackdrop == null) return; // called too early
if (DEBUG_MEDIA) {
Log.v(TAG, "DEBUG_MEDIA: updating album art for notification " + mMediaNotificationKey
+ " metadata=" + mMediaMetadata
+ " metaDataChanged=" + metaDataChanged
+ " state=" + mState);
}
Bitmap artworkBitmap = null;
if (mMediaMetadata != null) {
artworkBitmap = mMediaMetadata.getBitmap(MediaMetadata.METADATA_KEY_ART);
if (artworkBitmap == null) {
artworkBitmap = mMediaMetadata.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART);
// might still be null
}
}
final boolean hasArtwork = artworkBitmap != null;
if ((hasArtwork || DEBUG_MEDIA_FAKE_ARTWORK)
&& (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED)) {
// time to show some art!
if (mBackdrop.getVisibility() != View.VISIBLE) {
mBackdrop.setVisibility(View.VISIBLE);
mBackdrop.animate().alpha(1f);
metaDataChanged = true;
if (DEBUG_MEDIA) {
Log.v(TAG, "DEBUG_MEDIA: Fading in album artwork");
}
}
if (metaDataChanged) {
if (mBackdropBack.getDrawable() != null) {
Drawable drawable = mBackdropBack.getDrawable();
mBackdropFront.setImageDrawable(drawable);
if (mScrimSrcModeEnabled) {
mBackdropFront.getDrawable().mutate().setXfermode(mSrcOverXferMode);
}
mBackdropFront.setAlpha(1f);
mBackdropFront.setVisibility(View.VISIBLE);
} else {
mBackdropFront.setVisibility(View.INVISIBLE);
}
if (DEBUG_MEDIA_FAKE_ARTWORK) {
final int c = 0xFF000000 | (int)(Math.random() * 0xFFFFFF);
Log.v(TAG, String.format("DEBUG_MEDIA: setting new color: 0x%08x", c));
mBackdropBack.setBackgroundColor(0xFFFFFFFF);
mBackdropBack.setImageDrawable(new ColorDrawable(c));
} else {
mBackdropBack.setImageBitmap(artworkBitmap);
}
if (mScrimSrcModeEnabled) {
mBackdropBack.getDrawable().mutate().setXfermode(mSrcXferMode);
}
if (mBackdropFront.getVisibility() == View.VISIBLE) {
if (DEBUG_MEDIA) {
Log.v(TAG, "DEBUG_MEDIA: Crossfading album artwork from "
+ mBackdropFront.getDrawable()
+ " to "
+ mBackdropBack.getDrawable());
}
mBackdropFront.animate()
.setDuration(250)
.alpha(0f).withEndAction(mHideBackdropFront);
}
}
} else {
// need to hide the album art, either because we are unlocked or because
// the metadata isn't there to support it
if (mBackdrop.getVisibility() != View.GONE) {
if (DEBUG_MEDIA) {
Log.v(TAG, "DEBUG_MEDIA: Fading out album artwork");
}
mBackdrop.animate()
.alpha(0f)
.setInterpolator(mBackdropInterpolator)
.setDuration(300)
.setStartDelay(0)
.withEndAction(new Runnable() {
@Override
public void run() {
mBackdrop.setVisibility(View.GONE);
mBackdropFront.animate().cancel();
mBackdropBack.animate().cancel();
mHandler.post(mHideBackdropFront);
}
});
if (mKeyguardFadingAway) {
mBackdrop.animate()
// Make it disappear faster, as the focus should be on the activity behind.
.setDuration(mKeyguardFadingAwayDuration / 2)
.setStartDelay(mKeyguardFadingAwayDelay)
.setInterpolator(mLinearInterpolator)
.start();
}
}
}
|
private void | updateNotificationIcons()
final LinearLayout.LayoutParams params
= new LinearLayout.LayoutParams(mIconSize + 2*mIconHPadding, mNaturalBarHeight);
ArrayList<Entry> activeNotifications = mNotificationData.getActiveNotifications();
final int N = activeNotifications.size();
ArrayList<StatusBarIconView> toShow = new ArrayList<>(N);
// Filter out notifications with low scores.
for (int i = 0; i < N; i++) {
Entry ent = activeNotifications.get(i);
if (ent.notification.getScore() < HIDE_ICONS_BELOW_SCORE &&
!NotificationData.showNotificationEvenIfUnprovisioned(ent.notification)) {
continue;
}
toShow.add(ent.icon);
}
if (DEBUG) {
Log.d(TAG, "refreshing icons: " + toShow.size() +
" notifications, mNotificationIcons=" + mNotificationIcons);
}
ArrayList<View> toRemove = new ArrayList<View>();
for (int i=0; i<mNotificationIcons.getChildCount(); i++) {
View child = mNotificationIcons.getChildAt(i);
if (!toShow.contains(child)) {
toRemove.add(child);
}
}
final int toRemoveCount = toRemove.size();
for (int i = 0; i < toRemoveCount; i++) {
mNotificationIcons.removeView(toRemove.get(i));
}
for (int i=0; i<toShow.size(); i++) {
View v = toShow.get(i);
if (v.getParent() == null) {
mNotificationIcons.addView(v, i, params);
}
}
// Resort notification icons
final int childCount = mNotificationIcons.getChildCount();
for (int i = 0; i < childCount; i++) {
View actual = mNotificationIcons.getChildAt(i);
StatusBarIconView expected = toShow.get(i);
if (actual == expected) {
continue;
}
mNotificationIcons.removeView(expected);
mNotificationIcons.addView(expected, i);
}
|
protected void | updateNotificationRanking(android.service.notification.NotificationListenerService.RankingMap ranking)
mNotificationData.updateRanking(ranking);
updateNotifications();
|
private void | updateNotificationShade()
if (mStackScroller == null) return;
// Do not modify the notifications during collapse.
if (isCollapsing()) {
addPostCollapseAction(new Runnable() {
@Override
public void run() {
updateNotificationShade();
}
});
return;
}
ArrayList<Entry> activeNotifications = mNotificationData.getActiveNotifications();
ArrayList<ExpandableNotificationRow> toShow = new ArrayList<>(activeNotifications.size());
final int N = activeNotifications.size();
for (int i=0; i<N; i++) {
Entry ent = activeNotifications.get(i);
int vis = ent.notification.getNotification().visibility;
// Display public version of the notification if we need to redact.
final boolean hideSensitive =
!userAllowsPrivateNotificationsInPublic(ent.notification.getUserId());
boolean sensitiveNote = vis == Notification.VISIBILITY_PRIVATE;
boolean sensitivePackage = packageHasVisibilityOverride(ent.notification.getKey());
boolean sensitive = (sensitiveNote && hideSensitive) || sensitivePackage;
boolean showingPublic = sensitive && isLockscreenPublicMode();
ent.row.setSensitive(sensitive);
if (ent.autoRedacted && ent.legacy) {
// TODO: Also fade this? Or, maybe easier (and better), provide a dark redacted form
// for legacy auto redacted notifications.
if (showingPublic) {
ent.row.setShowingLegacyBackground(false);
} else {
ent.row.setShowingLegacyBackground(true);
}
}
toShow.add(ent.row);
}
ArrayList<View> toRemove = new ArrayList<View>();
for (int i=0; i< mStackScroller.getChildCount(); i++) {
View child = mStackScroller.getChildAt(i);
if (!toShow.contains(child) && child instanceof ExpandableNotificationRow) {
toRemove.add(child);
}
}
for (View remove : toRemove) {
mStackScroller.removeView(remove);
}
for (int i=0; i<toShow.size(); i++) {
View v = toShow.get(i);
if (v.getParent() == null) {
mStackScroller.addView(v);
}
}
// So after all this work notifications still aren't sorted correctly.
// Let's do that now by advancing through toShow and mStackScroller in
// lock-step, making sure mStackScroller matches what we see in toShow.
int j = 0;
for (int i = 0; i < mStackScroller.getChildCount(); i++) {
View child = mStackScroller.getChildAt(i);
if (!(child instanceof ExpandableNotificationRow)) {
// We don't care about non-notification views.
continue;
}
if (child == toShow.get(j)) {
// Everything is well, advance both lists.
j++;
continue;
}
// Oops, wrong notification at this position. Put the right one
// here and advance both lists.
mStackScroller.changeViewPosition(toShow.get(j), i);
j++;
}
updateRowStates();
updateSpeedbump();
updateClearAll();
updateEmptyShadeView();
// Disable QS if device not provisioned.
// If the user switcher is simple then disable QS during setup because
// the user intends to use the lock screen user switcher, QS in not needed.
mNotificationPanel.setQsExpansionEnabled(isDeviceProvisioned()
&& (mUserSetup || mUserSwitcherController == null
|| !mUserSwitcherController.isSimpleUserSwitcher()));
mShadeUpdates.check();
|
protected void | updateNotifications()
// TODO: Move this into updateNotificationIcons()?
if (mNotificationIcons == null) return;
mNotificationData.filterAndSort();
updateNotificationShade();
updateNotificationIcons();
|
private void | updatePublicMode()
setLockscreenPublicMode(mStatusBarKeyguardViewManager.isShowing()
&& mStatusBarKeyguardViewManager.isSecure(mCurrentUserId));
|
void | updateResources()Reload some of our resources when the configuration changes.
We don't reload everything when the configuration changes -- we probably
should, but getting that smooth is tough. Someday we'll fix that. In the
meantime, just update the things that we know change.
// Update the quick setting tiles
if (mQSPanel != null) {
mQSPanel.updateResources();
}
loadDimens();
mLinearOutSlowIn = AnimationUtils.loadInterpolator(
mContext, android.R.interpolator.linear_out_slow_in);
if (mNotificationPanel != null) {
mNotificationPanel.updateResources();
}
if (mHeadsUpNotificationView != null) {
mHeadsUpNotificationView.updateResources();
}
if (mBrightnessMirrorController != null) {
mBrightnessMirrorController.updateResources();
}
|
protected void | updateRowStates()
super.updateRowStates();
mNotificationPanel.notifyVisibleChildrenChanged();
|
protected void | updateSearchPanel()
super.updateSearchPanel();
if (mNavigationBarView != null) {
mNavigationBarView.setDelegateView(mSearchPanelView);
}
|
private void | updateShowSearchHoldoff()
mShowSearchHoldoff = mContext.getResources().getInteger(
R.integer.config_show_search_delay);
|
private void | updateSpeedbump()
int speedbumpIndex = -1;
int currentIndex = 0;
ArrayList<Entry> activeNotifications = mNotificationData.getActiveNotifications();
final int N = activeNotifications.size();
for (int i = 0; i < N; i++) {
Entry entry = activeNotifications.get(i);
if (entry.row.getVisibility() != View.GONE &&
mNotificationData.isAmbient(entry.key)) {
speedbumpIndex = currentIndex;
break;
}
currentIndex++;
}
mStackScroller.updateSpeedBumpIndex(speedbumpIndex);
|
public void | updateStackScrollerState(boolean goingToFullShade)
if (mStackScroller == null) return;
boolean onKeyguard = mState == StatusBarState.KEYGUARD;
mStackScroller.setHideSensitive(isLockscreenPublicMode(), goingToFullShade);
mStackScroller.setDimmed(onKeyguard, false /* animate */);
mStackScroller.setExpandingEnabled(!onKeyguard);
ActivatableNotificationView activatedChild = mStackScroller.getActivatedChild();
mStackScroller.setActivatedChild(null);
if (activatedChild != null) {
activatedChild.makeInactive(false /* animate */);
}
|
public void | userActivity()
if (mState == StatusBarState.KEYGUARD) {
mKeyguardViewMediatorCallback.userActivity();
}
|
private void | userAutohide()
cancelAutohide();
mHandler.postDelayed(mAutohide, 350); // longer than app gesture -> flag clear
|
public void | userSwitched(int newUserId)
super.userSwitched(newUserId);
if (MULTIUSER_DEBUG) mNotificationPanelDebugText.setText("USER " + newUserId);
animateCollapsePanels();
updatePublicMode();
updateNotifications();
resetUserSetupObserver();
setControllerUsers();
|
void | vibrate()
android.os.Vibrator vib = (android.os.Vibrator)mContext.getSystemService(
Context.VIBRATOR_SERVICE);
vib.vibrate(250, VIBRATION_ATTRIBUTES);
|
public static java.lang.String | viewInfo(android.view.View v)
return "[(" + v.getLeft() + "," + v.getTop() + ")(" + v.getRight() + "," + v.getBottom()
+ ") " + v.getWidth() + "x" + v.getHeight() + "]";
|
public void | wakeUpIfDozing(long time, android.view.MotionEvent event)
if (mDozing && mDozeScrimController.isPulsing()) {
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
pm.wakeUp(time);
mScreenOnComingFromTouch = true;
mScreenOnTouchLocation = new PointF(event.getX(), event.getY());
mNotificationPanel.setTouchDisabled(false);
}
|