From ad349ccc6054f6f901e5b2e94d5c94c82052df9a Mon Sep 17 00:00:00 2001 From: Schubi Date: Sun, 22 Sep 2013 21:46:59 +0200 Subject: [PATCH 1/2] Active display: turn off display if device gets pocketed again Change-Id: Icb4c002add915b75de7607f71c0d400e323feb5b --- .../policy/activedisplay/ActiveDisplayView.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/activedisplay/ActiveDisplayView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/activedisplay/ActiveDisplayView.java index 28a82199a40..21142bafa77 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/activedisplay/ActiveDisplayView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/activedisplay/ActiveDisplayView.java @@ -131,6 +131,7 @@ public class ActiveDisplayView extends FrameLayout { private Sensor mProximitySensor; private boolean mProximityIsFar = true; private boolean mIsInBrightLight = false; + private boolean mWakedByPocketMode = false; private LinearLayout mOverflowNotifications; private LayoutParams mRemoteViewLayoutParams; private int mIconSize; @@ -186,6 +187,7 @@ public void onNotificationRemoved(final StatusBarNotification sbn) { public void onTrigger(final View v, final int target) { if (target == UNLOCK_TARGET) { + mWakedByPocketMode = false; mNotification = null; hideNotificationView(); if (!mKeyguardManager.isKeyguardSecure()) { @@ -200,6 +202,7 @@ public void onTrigger(final View v, final int target) { } } } else if (target == OPEN_APP_TARGET) { + mWakedByPocketMode = false; hideNotificationView(); if (!mKeyguardManager.isKeyguardSecure()) { try { @@ -668,6 +671,7 @@ private void onScreenTurnedOff() { } private void turnScreenOff() { + mWakedByPocketMode = false; try { mPM.goToSleep(SystemClock.uptimeMillis(), 0); } catch (RemoteException e) { @@ -997,11 +1001,20 @@ public void onSensorChanged(SensorEvent event) { if (value >= mProximitySensor.getMaximumRange()) { mProximityIsFar = true; if (!isScreenOn() && mPocketModeEnabled && !isOnCall()) { + mWakedByPocketMode = true; + mNotification = getNextAvailableNotification(); if (mNotification != null) showNotification(mNotification, true); } } else { mProximityIsFar = false; + if (isScreenOn() && mPocketModeEnabled && !isOnCall() && mWakedByPocketMode) { + mWakedByPocketMode = false; + + restoreBrightness(); + cancelTimeoutTimer(); + turnScreenOff(); + } } } else if (event.sensor.equals(mLightSensor)) { boolean isBright = mIsInBrightLight; @@ -1108,4 +1121,4 @@ private void cancelTimeoutTimer() { } catch (Exception e) { } } -} \ No newline at end of file +} From 537d050250f734ec8800dac62593f32e26321be2 Mon Sep 17 00:00:00 2001 From: Schubi Date: Tue, 24 Sep 2013 16:51:51 +0200 Subject: [PATCH 2/2] Active display: Catch Resource.NotFoundException This caused the SystemUI to FC when the device was powered and a notification was fired. Display stayed off and the SystemUI kept restarting until the device was unlocked manually. Change-Id: Ibfd82242e82aa9ee5c0898f5f0714e490eac0ea9 --- .../statusbar/policy/activedisplay/ActiveDisplayView.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/activedisplay/ActiveDisplayView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/activedisplay/ActiveDisplayView.java index 21142bafa77..c4ad76aeb52 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/activedisplay/ActiveDisplayView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/activedisplay/ActiveDisplayView.java @@ -824,6 +824,7 @@ public void run() { } } catch (RemoteException re) { } catch (NameNotFoundException nnfe) { + } catch (Resources.NotFoundException e) { } } }); @@ -937,6 +938,7 @@ public void run() { } }); } catch (NameNotFoundException e) { + } catch (Resources.NotFoundException e) { } }