Search in sources :

Example 6 with KeyguardStatusView

use of com.android.keyguard.KeyguardStatusView in project android_frameworks_base by ResurrectionRemix.

the class PhoneStatusBar method makeStatusBarView.

// ================================================================================
// Constructing the view
// ================================================================================
@ChaosLab(name = "GestureAnywhere", classification = Classification.CHANGE_CODE)
protected PhoneStatusBarView makeStatusBarView() {
    final Context context = mContext;
    mScreenWidth = (float) context.getResources().getDisplayMetrics().widthPixels;
    mMinBrightness = context.getResources().getInteger(com.android.internal.R.integer.config_screenBrightnessDim);
    // populates mDisplayMetrics
    updateDisplaySize();
    updateResources();
    inflateStatusBarWindow(context);
    mStatusBarWindow.setService(this);
    mStatusBarWindow.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            checkUserAutohide(v, event);
            checkRemoteInputOutside(event);
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                if (mExpandedVisible) {
                    animateCollapsePanels();
                }
            }
            return mStatusBarWindow.onTouchEvent(event);
        }
    });
    mNotificationPanel = (NotificationPanelView) mStatusBarWindow.findViewById(R.id.notification_panel);
    mNotificationPanel.setStatusBar(this);
    mNotificationPanel.setGroupManager(mGroupManager);
    mStatusBarView = (PhoneStatusBarView) mStatusBarWindow.findViewById(R.id.status_bar);
    mStatusBarView.setBar(this);
    mStatusBarView.setPanel(mNotificationPanel);
    if (!ActivityManager.isHighEndGfx()) {
        mStatusBarWindow.setBackground(null);
        mNotificationPanel.setBackground(new FastColorDrawable(context.getColor(R.color.notification_panel_solid_background)));
    }
    mHeadsUpManager = new HeadsUpManager(context, mStatusBarWindow, mGroupManager);
    mHeadsUpManager.setBar(this);
    mHeadsUpManager.addListener(this);
    mHeadsUpManager.addListener(mNotificationPanel);
    mHeadsUpManager.addListener(mGroupManager);
    mHeadsUpManager.addListener(mVisualStabilityManager);
    mNotificationPanel.setHeadsUpManager(mHeadsUpManager);
    mNotificationData.setHeadsUpManager(mHeadsUpManager);
    mGroupManager.setHeadsUpManager(mHeadsUpManager);
    mHeadsUpManager.setVisualStabilityManager(mVisualStabilityManager);
    if (MULTIUSER_DEBUG) {
        mNotificationPanelDebugText = (TextView) mNotificationPanel.findViewById(R.id.header_debug_info);
        mNotificationPanelDebugText.setVisibility(View.VISIBLE);
    }
    try {
        boolean showNav = mWindowManagerService.hasNavigationBar();
        if (DEBUG)
            Log.v(TAG, "hasNavigationBar=" + showNav);
        if (showNav) {
            createNavigationBarView(context);
        }
    } catch (RemoteException ex) {
    // no window manager? good luck with that
    }
    addGestureAnywhereView();
    addAppCircleSidebar();
    mAssistManager = SystemUIFactory.getInstance().createAssistManager(this, context);
    // figure out which pixel-format to use for the status bar.
    mPixelFormat = PixelFormat.OPAQUE;
    mStatusBarContents = (LinearLayout) mStatusBarView.findViewById(R.id.status_bar_contents);
    mStackScroller = (NotificationStackScrollLayout) mStatusBarWindow.findViewById(R.id.notification_stack_scroller);
    mStackScroller.setLongPressListener(getNotificationLongClicker());
    mStackScroller.setPhoneStatusBar(this);
    mStackScroller.setGroupManager(mGroupManager);
    mStackScroller.setHeadsUpManager(mHeadsUpManager);
    mGroupManager.setOnGroupChangeListener(mStackScroller);
    mVisualStabilityManager.setVisibilityLocationProvider(mStackScroller);
    inflateOverflowContainer();
    inflateEmptyShadeView();
    inflateDismissView();
    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);
    if (ENABLE_LOCKSCREEN_WALLPAPER) {
        mLockscreenWallpaper = new LockscreenWallpaper(mContext, this, mHandler);
    }
    ScrimView scrimBehind = (ScrimView) mStatusBarWindow.findViewById(R.id.scrim_behind);
    ScrimView scrimInFront = (ScrimView) mStatusBarWindow.findViewById(R.id.scrim_in_front);
    View headsUpScrim = mStatusBarWindow.findViewById(R.id.heads_up_scrim);
    mScrimController = SystemUIFactory.getInstance().createScrimController(scrimBehind, scrimInFront, headsUpScrim, mLockscreenWallpaper);
    if (mScrimSrcModeEnabled) {
        Runnable runnable = new Runnable() {

            @Override
            public void run() {
                boolean asSrc = mBackdrop.getVisibility() != View.VISIBLE;
                mScrimController.setDrawBehindAsSrc(asSrc);
                mStackScroller.setDrawBackgroundAsSrc(asSrc);
            }
        };
        mBackdrop.setOnVisibilityChangedRunnable(runnable);
        runnable.run();
    }
    mHeadsUpManager.addListener(mScrimController);
    mStackScroller.setScrimController(mScrimController);
    mStatusBarView.setScrimController(mScrimController);
    mDozeScrimController = new DozeScrimController(mScrimController, context);
    mVisualizerView = (VisualizerView) mStatusBarWindow.findViewById(R.id.visualizerview);
    mKeyguardStatusBar = (KeyguardStatusBarView) mStatusBarWindow.findViewById(R.id.keyguard_header);
    mKeyguardStatusView = (KeyguardStatusView) mStatusBarWindow.findViewById(R.id.keyguard_status_view);
    mKeyguardBottomArea = (KeyguardBottomAreaView) mStatusBarWindow.findViewById(R.id.keyguard_bottom_area);
    mKeyguardBottomArea.setActivityStarter(this);
    mKeyguardBottomArea.setAssistManager(mAssistManager);
    mKeyguardIndicationController = new KeyguardIndicationController(mContext, (KeyguardIndicationTextView) mStatusBarWindow.findViewById(R.id.keyguard_indication_text), mKeyguardBottomArea.getLockIcon());
    mKeyguardBottomArea.setKeyguardIndicationController(mKeyguardIndicationController);
    mBatterySaverWarningColor = Settings.System.getIntForUser(mContext.getContentResolver(), Settings.System.BATTERY_SAVER_MODE_COLOR, 1, UserHandle.USER_CURRENT);
    if (mBatterySaverWarningColor != 0) {
        mBatterySaverWarningColor = mContext.getResources().getColor(com.android.internal.R.color.battery_saver_mode_color);
    }
    if (ENABLE_LOCKSCREEN_WALLPAPER) {
        mLockscreenWallpaper = new LockscreenWallpaper(mContext, this, mHandler);
    }
    mCenterClock = (View) mStatusBarWindow.findViewById(R.id.center_clock);
    mTickerEnabled = Settings.System.getIntForUser(mContext.getContentResolver(), Settings.System.STATUS_BAR_SHOW_TICKER, 0, UserHandle.USER_CURRENT);
    initTickerView();
    // set the initial view visibility
    setAreThereNotifications();
    createIconController();
    // 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
    mHandlerThread.getLooper());
    mBatteryController = createBatteryController();
    mBatteryController.addStateChangedCallback(new BatteryStateChangeCallback() {

        @Override
        public void onPowerSaveChanged(boolean isPowerSave) {
            mHandler.post(mCheckBarModes);
            if (mDozeServiceHost != null) {
                mDozeServiceHost.firePowerSaveChanged(isPowerSave);
            }
        }

        @Override
        public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
        // noop
        }
    });
    mNetworkController = new NetworkControllerImpl(mContext, mHandlerThread.getLooper());
    mNetworkController.setUserSetupComplete(mUserSetup);
    mEmptyShadeView.setNetworkController(mNetworkController);
    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);
    mSuController = new SuControllerImpl(mContext);
    initSignalCluster(mStatusBarView);
    initSignalCluster(mKeyguardStatusBar);
    initEmergencyCryptkeeperText();
    mFlashlightController = new FlashlightController(mContext);
    mKeyguardBottomArea.setFlashlightController(mFlashlightController);
    mKeyguardBottomArea.setPhoneStatusBar(this);
    mKeyguardBottomArea.setUserSetupComplete(mUserSetup);
    mAccessibilityController = new AccessibilityController(mContext);
    mKeyguardBottomArea.setAccessibilityController(mAccessibilityController);
    mNextAlarmController = new NextAlarmController(mContext);
    mLightStatusBarController = new LightStatusBarController(mIconController, mBatteryController);
    mKeyguardMonitor = new KeyguardMonitor(mContext);
    mUserSwitcherController = new UserSwitcherController(mContext, mKeyguardMonitor, mHandler, this);
    if (UserManager.get(mContext).isUserSwitcherEnabled()) {
        createUserSwitcher();
    }
    mStatusBarHeaderMachine = new StatusBarHeaderMachine(mContext);
    // Set up the quick settings tile panel
    AutoReinflateContainer container = (AutoReinflateContainer) mStatusBarWindow.findViewById(R.id.qs_auto_reinflate_container);
    if (container != null) {
        final QSTileHost qsh = SystemUIFactory.getInstance().createQSTileHost(mContext, this, mBluetoothController, mLocationController, mRotationLockController, mNetworkController, mZenModeController, mHotspotController, mCastController, mFlashlightController, mUserSwitcherController, mUserInfoController, mKeyguardMonitor, mSecurityController, mBatteryController, mIconController, mNextAlarmController);
        container.addInflateListener(new InflateListener() {

            @Override
            public void onInflated(View v) {
                QSContainer qsContainer = (QSContainer) v.findViewById(R.id.quick_settings_container);
                qsContainer.setHost(qsh);
                mQSPanel = qsContainer.getQsPanel();
                mKeyguardStatusBar.setQSPanel(mQSPanel);
                mHeader = qsContainer.getHeader();
                // on dpi changes the header is recreated so we need
                // to add the new one again as addObserver
                // the old one will be removed in the same step
                mStatusBarHeaderMachine.addObserver((QuickStatusBarHeader) mHeader);
                mStatusBarHeaderMachine.updateEnablement();
                // Update all other settings
                mHeader.updateSettings();
                initSignalCluster(mHeader);
                mHeader.setActivityStarter(PhoneStatusBar.this);
            }
        });
    }
    showtaskmanager();
    mHeader.setTaskManagerEnabled(mShowTaskList);
    mNotificationPanel.setTaskManagerEnabled(mShowTaskManager);
    mShowTaskList = false;
    mMinitBatteryController = new MinitBatteryController(mContext, mStatusBarView, mKeyguardStatusBar);
    mPackageMonitor.addListener(mMinitBatteryController);
    // User info. Trigger first load.
    mKeyguardStatusBar.setUserInfoController(mUserInfoController);
    mKeyguardStatusBar.setUserSwitcherController(mUserSwitcherController);
    mUserInfoController.reloadUserInfo();
    ((BatteryMeterView) mStatusBarView.findViewById(R.id.battery)).setBatteryController(mBatteryController);
    ((BatteryLevelTextView) mStatusBarView.findViewById(R.id.battery_level)).setBatteryController(mBatteryController);
    mKeyguardStatusBar.setBatteryController(mBatteryController);
    mReportRejectedTouch = mStatusBarWindow.findViewById(R.id.report_rejected_touch);
    if (mReportRejectedTouch != null) {
        updateReportRejectedTouchVisibility();
        mReportRejectedTouch.setOnClickListener(v -> {
            Uri session = mFalsingManager.reportRejectedTouch();
            if (session == null) {
                return;
            }
            StringWriter message = new StringWriter();
            message.write("Build info: ");
            message.write(SystemProperties.get("ro.build.description"));
            message.write("\nSerial number: ");
            message.write(SystemProperties.get("ro.serialno"));
            message.write("\n");
            PrintWriter falsingPw = new PrintWriter(message);
            FalsingLog.dump(falsingPw);
            falsingPw.flush();
            startActivityDismissingKeyguard(Intent.createChooser(new Intent(Intent.ACTION_SEND).setType("*/*").putExtra(Intent.EXTRA_SUBJECT, "Rejected touch report").putExtra(Intent.EXTRA_STREAM, session).putExtra(Intent.EXTRA_TEXT, message.toString()), "Share rejected touch report").addFlags(Intent.FLAG_ACTIVITY_NEW_TASK), true, true);
        });
    }
    PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
    mBroadcastReceiver.onReceive(mContext, new Intent(pm.isScreenOn() ? Intent.ACTION_SCREEN_ON : Intent.ACTION_SCREEN_OFF));
    mGestureWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "GestureWakeLock");
    mVibrator = mContext.getSystemService(Vibrator.class);
    // 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);
    filter.addAction(DevicePolicyManager.ACTION_SHOW_DEVICE_MONITORING_DIALOG);
    filter.addAction(cyanogenmod.content.Intent.ACTION_SCREEN_CAMERA_GESTURE);
    context.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, filter, null, null);
    IntentFilter demoFilter = new IntentFilter();
    if (DEBUG_MEDIA_FAKE_ARTWORK) {
        demoFilter.addAction(ACTION_FAKE_ARTWORK);
    }
    demoFilter.addAction(ACTION_DEMO);
    context.registerReceiverAsUser(mDemoReceiver, UserHandle.ALL, demoFilter, android.Manifest.permission.DUMP, null);
    // flashlight action target for toggle
    IntentFilter flashlightFilter = new IntentFilter();
    flashlightFilter.addAction(ActionHandler.INTENT_TOGGLE_FLASHLIGHT);
    context.registerReceiver(mDUReceiver, flashlightFilter);
    // listen for USER_SETUP_COMPLETE setting (per-user)
    resetUserSetupObserver();
    // disable profiling bars, since they overlap and clutter the output on app windows
    ThreadedRenderer.overrideProperty("disableProfileBars", "true");
    // Private API call to make the shadows look better for Recents
    ThreadedRenderer.overrideProperty("ambientRatio", String.valueOf(1.5f));
    try {
        BroadcastReceiver receiver = new BroadcastReceiver() {

            @Override
            public void onReceive(Context context, Intent intent) {
                if (NotificationPanelView.mKeyguardShowing) {
                    return;
                }
                String action = intent.getAction();
                if (action.equals(Intent.ACTION_CONFIGURATION_CHANGED)) {
                    if (NotificationPanelView.mKeyguardShowing) {
                        return;
                    }
                    RecentsActivity.onConfigurationChanged();
                    if (mExpandedVisible && NotificationPanelView.mBlurredStatusBarExpandedEnabled && (!NotificationPanelView.mKeyguardShowing)) {
                        makeExpandedInvisible();
                    }
                }
            }
        };
        IntentFilter intent = new IntentFilter();
        intent.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
        this.mContext.registerReceiver(receiver, intent);
        RecentsActivity.init(this.mContext);
        updatePreferences(this.mContext);
    } catch (Exception e) {
        Log.d("mango918", String.valueOf(e));
    }
    return mStatusBarView;
}
Also used : MinitBatteryController(com.android.systemui.statusbar.policy.MinitBatteryController) CastControllerImpl(com.android.systemui.statusbar.policy.CastControllerImpl) StatusBarManager.windowStateToString(android.app.StatusBarManager.windowStateToString) SpannableString(android.text.SpannableString) BatteryLevelTextView(com.android.systemui.BatteryLevelTextView) IPowerManager(android.os.IPowerManager) PowerManager(android.os.PowerManager) HotspotControllerImpl(com.android.systemui.statusbar.policy.HotspotControllerImpl) LocationControllerImpl(com.android.systemui.statusbar.policy.LocationControllerImpl) BatteryMeterView(com.android.systemui.BatteryMeterView) HeadsUpManager(com.android.systemui.statusbar.policy.HeadsUpManager) BroadcastReceiver(android.content.BroadcastReceiver) InflateListener(com.android.systemui.AutoReinflateContainer.InflateListener) UserSwitcherController(com.android.systemui.statusbar.policy.UserSwitcherController) ScrimView(com.android.systemui.statusbar.ScrimView) RotationLockControllerImpl(com.android.systemui.statusbar.policy.RotationLockControllerImpl) Uri(android.net.Uri) VolumeComponent(com.android.systemui.volume.VolumeComponent) NextAlarmController(com.android.systemui.statusbar.policy.NextAlarmController) StringWriter(java.io.StringWriter) NetworkControllerImpl(com.android.systemui.statusbar.policy.NetworkControllerImpl) KeyguardMonitor(com.android.systemui.statusbar.policy.KeyguardMonitor) FlashlightController(com.android.systemui.statusbar.policy.FlashlightController) SuControllerImpl(com.android.systemui.statusbar.policy.SuControllerImpl) PrintWriter(java.io.PrintWriter) Context(android.content.Context) QSContainer(com.android.systemui.qs.QSContainer) IntentFilter(android.content.IntentFilter) BatteryStateChangeCallback(com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback) KeyguardIndicationController(com.android.systemui.statusbar.KeyguardIndicationController) BluetoothControllerImpl(com.android.systemui.statusbar.policy.BluetoothControllerImpl) PendingIntent(android.app.PendingIntent) Intent(android.content.Intent) ActivatableNotificationView(com.android.systemui.statusbar.ActivatableNotificationView) BatteryMeterView(com.android.systemui.BatteryMeterView) DismissView(com.android.systemui.statusbar.DismissView) NotificationBackgroundView(com.android.systemui.statusbar.NotificationBackgroundView) VisualizerView(com.android.systemui.statusbar.VisualizerView) SignalClusterView(com.android.systemui.statusbar.SignalClusterView) KeyguardStatusView(com.android.keyguard.KeyguardStatusView) ImageView(android.widget.ImageView) BatteryLevelTextView(com.android.systemui.BatteryLevelTextView) BackDropView(com.android.systemui.statusbar.BackDropView) KeyButtonView(com.android.systemui.statusbar.policy.KeyButtonView) EmptyShadeView(com.android.systemui.statusbar.EmptyShadeView) View(android.view.View) TextView(android.widget.TextView) ScrimView(com.android.systemui.statusbar.ScrimView) Point(android.graphics.Point) RemoteException(android.os.RemoteException) MotionEvent(android.view.MotionEvent) AccessibilityController(com.android.systemui.statusbar.policy.AccessibilityController) SecurityControllerImpl(com.android.systemui.statusbar.policy.SecurityControllerImpl) AutoReinflateContainer(com.android.systemui.AutoReinflateContainer) HandlerThread(android.os.HandlerThread) UserInfoController(com.android.systemui.statusbar.policy.UserInfoController) Vibrator(android.os.Vibrator) RemoteException(android.os.RemoteException) StatusBarHeaderMachine(com.android.systemui.omni.StatusBarHeaderMachine) ChaosLab(android.annotation.ChaosLab)

Aggregations

View (android.view.View)6 TextView (android.widget.TextView)6 KeyguardStatusView (com.android.keyguard.KeyguardStatusView)6 InflateListener (com.android.systemui.AutoReinflateContainer.InflateListener)6 QSContainer (com.android.systemui.qs.QSContainer)6 Paint (android.graphics.Paint)5 ExpandableView (com.android.systemui.statusbar.ExpandableView)5 KeyguardAffordanceView (com.android.systemui.statusbar.KeyguardAffordanceView)5 FrameLayout (android.widget.FrameLayout)2 ChaosLab (android.annotation.ChaosLab)1 PendingIntent (android.app.PendingIntent)1 StatusBarManager.windowStateToString (android.app.StatusBarManager.windowStateToString)1 BroadcastReceiver (android.content.BroadcastReceiver)1 Context (android.content.Context)1 Intent (android.content.Intent)1 IntentFilter (android.content.IntentFilter)1 Point (android.graphics.Point)1 Uri (android.net.Uri)1 HandlerThread (android.os.HandlerThread)1 IPowerManager (android.os.IPowerManager)1