Loading policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +79 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { static final boolean ENABLE_CAR_DOCK_HOME_CAPTURE = true; static final boolean ENABLE_DESK_DOCK_HOME_CAPTURE = false; // QuickBoot time settings static final int DEFAULT_LONG_PRESS_POWERON_TIME = 500; static final int QUICKBOOT_LAUNCH_TIMEOUT = 2000; static final int LONG_PRESS_POWER_NOTHING = 0; static final int LONG_PRESS_POWER_GLOBAL_ACTIONS = 1; static final int LONG_PRESS_POWER_SHUT_OFF = 2; Loading Loading @@ -203,6 +207,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { * where the window manager is calling in with its own lock held.) */ private final Object mLock = new Object(); private final Object mQuickBootLock = new Object(); private boolean mButtonLightEnabled; Loading Loading @@ -305,6 +310,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { int mPointerLocationMode = 0; // guarded by mLock int mLongPressPoweronTime = DEFAULT_LONG_PRESS_POWERON_TIME; // The last window we were told about in focusChanged. WindowState mFocusedWindow; IApplicationToken mFocusedApp; Loading Loading @@ -469,6 +476,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { SettingsObserver mSettingsObserver; ShortcutManager mShortcutManager; PowerManager.WakeLock mBroadcastWakeLock; PowerManager.WakeLock mQuickBootWakeLock; boolean mHavePendingMediaKeyRepeatWithWakeLock; private int mCurrentUserId; Loading Loading @@ -925,6 +933,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { mPowerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE); mBroadcastWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "PhoneWindowManager.mBroadcastWakeLock"); mQuickBootWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "PhoneWindowManager.mQuickBootWakeLock"); mLongPressPoweronTime = SystemProperties.getInt("ro.quickboot.press_duration", DEFAULT_LONG_PRESS_POWERON_TIME); mEnableShiftMenuBugReports = "1".equals(SystemProperties.get("ro.debuggable")); mLidOpenRotation = readRotation( com.android.internal.R.integer.config_lidOpenRotation); Loading Loading @@ -3872,6 +3884,58 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } private final Runnable mQuickBootPowerLongPress = new Runnable() { public void run() { Intent intent = new Intent("qualcomm.intent.action.QUICKBOOT"); intent.putExtra("mode", 1); try { mContext.startActivityAsUser(intent,UserHandle.CURRENT); } catch (ActivityNotFoundException e) { e.printStackTrace(); releaseQuickBootWakeLock(); return; } BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { synchronized (mQuickBootLock) { mQuickBootLock.notifyAll(); } } }; IntentFilter filter = new IntentFilter("qualcomm.intent.QUICKBOOT.START"); mContext.registerReceiver(broadcastReceiver,filter, "android.permission.DEVICE_POWER",null); synchronized (mQuickBootLock) { try { mQuickBootLock.wait(QUICKBOOT_LAUNCH_TIMEOUT); } catch (InterruptedException e) { e.printStackTrace(); } } releaseQuickBootWakeLock(); } }; private void acquireQuickBootWakeLock() { if (!mQuickBootWakeLock.isHeld()) { mQuickBootWakeLock.acquire(); } } private void releaseQuickBootWakeLock() { if (mQuickBootWakeLock.isHeld()) { mQuickBootWakeLock.release(); } } /** {@inheritDoc} */ @Override public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags, boolean isScreenOn) { Loading @@ -3884,6 +3948,21 @@ public class PhoneWindowManager implements WindowManagerPolicy { final boolean canceled = event.isCanceled(); final int keyCode = event.getKeyCode(); if (SystemProperties.getInt("sys.quickboot.enable", 0) == 1) { if (keyCode == KeyEvent.KEYCODE_POWER && !isScreenOn) { if(down){ acquireQuickBootWakeLock(); mHandler.postDelayed(mQuickBootPowerLongPress, mLongPressPoweronTime); } else { releaseQuickBootWakeLock(); mHandler.removeCallbacks(mQuickBootPowerLongPress); } } // ignore this event return 0; } final boolean isInjected = (policyFlags & WindowManagerPolicy.FLAG_INJECTED) != 0; // If screen is off then we treat the case where the keyguard is open but hidden Loading Loading
policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +79 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { static final boolean ENABLE_CAR_DOCK_HOME_CAPTURE = true; static final boolean ENABLE_DESK_DOCK_HOME_CAPTURE = false; // QuickBoot time settings static final int DEFAULT_LONG_PRESS_POWERON_TIME = 500; static final int QUICKBOOT_LAUNCH_TIMEOUT = 2000; static final int LONG_PRESS_POWER_NOTHING = 0; static final int LONG_PRESS_POWER_GLOBAL_ACTIONS = 1; static final int LONG_PRESS_POWER_SHUT_OFF = 2; Loading Loading @@ -203,6 +207,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { * where the window manager is calling in with its own lock held.) */ private final Object mLock = new Object(); private final Object mQuickBootLock = new Object(); private boolean mButtonLightEnabled; Loading Loading @@ -305,6 +310,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { int mPointerLocationMode = 0; // guarded by mLock int mLongPressPoweronTime = DEFAULT_LONG_PRESS_POWERON_TIME; // The last window we were told about in focusChanged. WindowState mFocusedWindow; IApplicationToken mFocusedApp; Loading Loading @@ -469,6 +476,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { SettingsObserver mSettingsObserver; ShortcutManager mShortcutManager; PowerManager.WakeLock mBroadcastWakeLock; PowerManager.WakeLock mQuickBootWakeLock; boolean mHavePendingMediaKeyRepeatWithWakeLock; private int mCurrentUserId; Loading Loading @@ -925,6 +933,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { mPowerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE); mBroadcastWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "PhoneWindowManager.mBroadcastWakeLock"); mQuickBootWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "PhoneWindowManager.mQuickBootWakeLock"); mLongPressPoweronTime = SystemProperties.getInt("ro.quickboot.press_duration", DEFAULT_LONG_PRESS_POWERON_TIME); mEnableShiftMenuBugReports = "1".equals(SystemProperties.get("ro.debuggable")); mLidOpenRotation = readRotation( com.android.internal.R.integer.config_lidOpenRotation); Loading Loading @@ -3872,6 +3884,58 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } private final Runnable mQuickBootPowerLongPress = new Runnable() { public void run() { Intent intent = new Intent("qualcomm.intent.action.QUICKBOOT"); intent.putExtra("mode", 1); try { mContext.startActivityAsUser(intent,UserHandle.CURRENT); } catch (ActivityNotFoundException e) { e.printStackTrace(); releaseQuickBootWakeLock(); return; } BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { synchronized (mQuickBootLock) { mQuickBootLock.notifyAll(); } } }; IntentFilter filter = new IntentFilter("qualcomm.intent.QUICKBOOT.START"); mContext.registerReceiver(broadcastReceiver,filter, "android.permission.DEVICE_POWER",null); synchronized (mQuickBootLock) { try { mQuickBootLock.wait(QUICKBOOT_LAUNCH_TIMEOUT); } catch (InterruptedException e) { e.printStackTrace(); } } releaseQuickBootWakeLock(); } }; private void acquireQuickBootWakeLock() { if (!mQuickBootWakeLock.isHeld()) { mQuickBootWakeLock.acquire(); } } private void releaseQuickBootWakeLock() { if (mQuickBootWakeLock.isHeld()) { mQuickBootWakeLock.release(); } } /** {@inheritDoc} */ @Override public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags, boolean isScreenOn) { Loading @@ -3884,6 +3948,21 @@ public class PhoneWindowManager implements WindowManagerPolicy { final boolean canceled = event.isCanceled(); final int keyCode = event.getKeyCode(); if (SystemProperties.getInt("sys.quickboot.enable", 0) == 1) { if (keyCode == KeyEvent.KEYCODE_POWER && !isScreenOn) { if(down){ acquireQuickBootWakeLock(); mHandler.postDelayed(mQuickBootPowerLongPress, mLongPressPoweronTime); } else { releaseQuickBootWakeLock(); mHandler.removeCallbacks(mQuickBootPowerLongPress); } } // ignore this event return 0; } final boolean isInjected = (policyFlags & WindowManagerPolicy.FLAG_INJECTED) != 0; // If screen is off then we treat the case where the keyguard is open but hidden Loading