StatusBarWindowManager.java revision ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49
15cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi/* 25cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * Copyright (C) 2014 The Android Open Source Project 35cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * 45cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * Licensed under the Apache License, Version 2.0 (the "License"); 55cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * you may not use this file except in compliance with the License. 65cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * You may obtain a copy of the License at 75cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * 85cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * http://www.apache.org/licenses/LICENSE-2.0 95cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * 105cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * Unless required by applicable law or agreed to in writing, software 115cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * distributed under the License is distributed on an "AS IS" BASIS, 125cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * See the License for the specific language governing permissions and 145cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * limitations under the License 155cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi */ 165cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 175cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggipackage com.android.systemui.statusbar.phone; 185cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 195cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.app.ActionBar; 205cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.content.Context; 215cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.content.pm.ActivityInfo; 225cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.content.res.Resources; 235cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.graphics.PixelFormat; 245cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.os.SystemProperties; 255cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.view.Gravity; 265cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.view.View; 275cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.view.ViewGroup; 285cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport android.view.WindowManager; 295cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 305cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggiimport com.android.keyguard.R; 315cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 325cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi/** 335cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * Encapsulates all logic for the status bar window state management. 345cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi */ 355cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggipublic class StatusBarWindowManager { 365cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 375cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private final Context mContext; 385cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private final WindowManager mWindowManager; 395cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private View mStatusBarView; 405cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private WindowManager.LayoutParams mLp; 415cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private int mBarHeight; 425cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private final boolean mKeyguardScreenRotation; 435cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 445cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private final State mCurrentState = new State(); 455cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 465cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public StatusBarWindowManager(Context context) { 475cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mContext = context; 485cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 495cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mKeyguardScreenRotation = shouldEnableKeyguardScreenRotation(); 505cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 515cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 525cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private boolean shouldEnableKeyguardScreenRotation() { 535cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi Resources res = mContext.getResources(); 545cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi return SystemProperties.getBoolean("lockscreen.rot_override", false) 555cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi || res.getBoolean(R.bool.config_enableLockScreenRotation); 565cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 575cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 585cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi /** 595cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * Adds the status bar view to the window manager. 605cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * 615cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * @param statusBarView The view to add. 625cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi * @param barHeight The height of the status bar in collapsed state. 635cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi */ 645cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void add(View statusBarView, int barHeight) { 655cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 665cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi // Now that the status bar window encompasses the sliding panel and its 675cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi // translucent backdrop, the entire thing is made TRANSLUCENT and is 685cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi // hardware-accelerated. 695cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp = new WindowManager.LayoutParams( 705cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi ViewGroup.LayoutParams.MATCH_PARENT, 715cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi barHeight, 725cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi WindowManager.LayoutParams.TYPE_STATUS_BAR, 735cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 745cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi | WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING 755cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH 765cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH 775cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION 785cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi | WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, 795cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi PixelFormat.TRANSLUCENT); 805cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 815cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; 825cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.gravity = Gravity.TOP | Gravity.FILL_HORIZONTAL; 835cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; 845cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.setTitle("StatusBar"); 855cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.packageName = mContext.getPackageName(); 865cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mStatusBarView = statusBarView; 875cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mBarHeight = barHeight; 885cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mWindowManager.addView(mStatusBarView, mLp); 895cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 905cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 915cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private void applyKeyguardFlags(State state) { 925cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi if (state.keyguardShowing) { 935cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags |= WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; 945cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD; 955cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } else { 965cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags &= ~WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; 975cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.privateFlags &= ~WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD; 985cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 995cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1005cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1015cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private void adjustScreenOrientation(State state) { 102ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi if (state.isKeyguardShowingAndNotOccluded()) { 103ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi if (mKeyguardScreenRotation) { 104ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi mLp.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_USER; 105ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi } else { 106ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi mLp.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_NOSENSOR; 107ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi } 1085cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } else { 109ca36cf7bcaa8785a13b1e1a6038d94a9dd963c49Jorim Jaggi mLp.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; 1105cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1115cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1125cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1135cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private void applyFocusableFlag(State state) { 1145cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi if (state.isKeyguardShowingAndNotOccluded() && state.keyguardNeedsInput) { 1155cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; 1165cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags &= ~WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; 1175cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } else if (state.isKeyguardShowingAndNotOccluded() || state.statusBarFocusable) { 1185cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; 1195cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; 1205cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } else { 1215cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; 1225cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.flags &= ~WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; 1235cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1245cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1255cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1265cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private void applyHeight(State state) { 1275cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi boolean expanded = state.isKeyguardShowingAndNotOccluded() || state.statusBarExpanded; 1285cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi if (expanded) { 1295cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.height = ViewGroup.LayoutParams.MATCH_PARENT; 1305cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } else { 1315cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.height = mBarHeight; 1325cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1335cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1345cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 135a005f1b6853e8852c328f4fdc02fb8f9c9ae1cd6Jorim Jaggi private void applyFitsSystemWindows(State state) { 136a005f1b6853e8852c328f4fdc02fb8f9c9ae1cd6Jorim Jaggi mStatusBarView.setFitsSystemWindows(!state.isKeyguardShowingAndNotOccluded()); 137a005f1b6853e8852c328f4fdc02fb8f9c9ae1cd6Jorim Jaggi } 138a005f1b6853e8852c328f4fdc02fb8f9c9ae1cd6Jorim Jaggi 1395cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private void applyUserActivityTimeout(State state) { 1405cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi if (state.isKeyguardShowingAndNotOccluded()) { 1415cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.userActivityTimeout = state.keyguardUserActivityTimeout; 1425cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } else { 1435cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mLp.userActivityTimeout = -1; 1445cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1455cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1465cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 14703c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi private void applyInputFeatures(State state) { 14803c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi if (state.isKeyguardShowingAndNotOccluded()) { 14903c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi mLp.inputFeatures |= WindowManager.LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY; 15003c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi } else { 15103c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi mLp.inputFeatures &= ~WindowManager.LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY; 15203c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi } 15303c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi } 15403c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi 1555cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private void apply(State state) { 1565cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi applyKeyguardFlags(state); 1575cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi applyFocusableFlag(state); 1585cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi adjustScreenOrientation(state); 1595cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi applyHeight(state); 1605cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi applyUserActivityTimeout(state); 16103c701ec58ff6de3cc3c53b05342a475a63a11cfJorim Jaggi applyInputFeatures(state); 162a005f1b6853e8852c328f4fdc02fb8f9c9ae1cd6Jorim Jaggi applyFitsSystemWindows(state); 1635cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mWindowManager.updateViewLayout(mStatusBarView, mLp); 1645cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1655cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1665cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setKeyguardShowing(boolean showing) { 1675cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.keyguardShowing = showing; 1685cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi apply(mCurrentState); 1695cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1705cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1715cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setKeyguardOccluded(boolean occluded) { 1725cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.keyguardOccluded = occluded; 1735cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi apply(mCurrentState); 1745cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1755cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1765cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setKeyguardNeedsInput(boolean needsInput) { 1775cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.keyguardNeedsInput = needsInput; 1785cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi apply(mCurrentState); 1795cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1805cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1815cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setStatusBarExpanded(boolean expanded) { 1825cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.statusBarExpanded = expanded; 1835cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.statusBarFocusable = expanded; 1845cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi apply(mCurrentState); 1855cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1865cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1875cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setStatusBarFocusable(boolean focusable) { 1885cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.statusBarFocusable = focusable; 1895cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi apply(mCurrentState); 1905cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1915cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1925cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi public void setKeyguardUserActivityTimeout(long timeout) { 1935cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi mCurrentState.keyguardUserActivityTimeout = timeout; 1945cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi apply(mCurrentState); 1955cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 1965cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 1975cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private static class State { 1985cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi boolean keyguardShowing; 1995cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi boolean keyguardOccluded; 2005cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi boolean keyguardNeedsInput; 2015cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi boolean statusBarExpanded; 2025cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi boolean statusBarFocusable; 2035cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi long keyguardUserActivityTimeout; 2045cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi 2055cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi private boolean isKeyguardShowingAndNotOccluded() { 2065cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi return keyguardShowing && !keyguardOccluded; 2075cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 2085cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi } 2095cf17879a31b7b78c09ec50b727f921840dcf783Jorim Jaggi} 210