Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5a5fc00a authored by Tim Tsai's avatar Tim Tsai
Browse files

Add a delay before showing the TV power off toast

The current toast is shown right after the power button is pressed. In some cases, the toast show up before enter dreaming and made bad user experience. This can be mitigated by delaying it a little bit.

A new integer config parameter to tweak this delay for different devices.

Bug: 434774888
Test: manual on device
Flag: NONE small change for TV only

Change-Id: I22b1569a71ff087b31455949749b5be946f27a94
parent 88d53388
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -7652,4 +7652,7 @@
         power button. -->
    <integer name="config_turnOffTvToastSuppressionDelayMs">0</integer>

    <!-- The delay in milliseconds to show the toast after the user presses the power button. -->
    <integer name="config_turnOffTvToastPostDelayMs">0</integer>

</resources>
+1 −0
Original line number Diff line number Diff line
@@ -834,6 +834,7 @@
  <java-symbol type="string" name="lockscreen_return_to_call" />
  <java-symbol type="string" name="long_press_power_to_turn_off_tv_toast" />
  <java-symbol type="integer" name="config_turnOffTvToastSuppressionDelayMs" />
  <java-symbol type="integer" name="config_turnOffTvToastPostDelayMs" />
  <java-symbol type="string" name="low_memory" />
  <java-symbol type="string" name="mic_access_off_toast" />
  <java-symbol type="string" name="mic_access_on_toast" />
+18 −10
Original line number Diff line number Diff line
@@ -610,6 +610,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    boolean mSilenceRingerOnSleepKey;
    long mWakeUpToLastStateTimeout;
    long mTurnOffTvToastSuppressionDelay;
    long mTurnOffTvToastPostDelay;
    long mLastShortPressTurnOffTvHintToastTime = 0;
    ComponentName mSearchKeyTargetActivity;

@@ -1310,8 +1311,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        dreamManagerInternal.requestDream();
        if (mHasFeatureLeanback
                && getResolvedLongPressOnPowerBehavior() == LONG_PRESS_POWER_GO_TO_SLEEP) {
            Runnable toastRunnable = () -> {
                final long now = SystemClock.uptimeMillis();
            if (now - mLastShortPressTurnOffTvHintToastTime >= mTurnOffTvToastSuppressionDelay) {
                if (mLastShortPressTurnOffTvHintToastTime == 0L
                        || now - mLastShortPressTurnOffTvHintToastTime
                                >= mTurnOffTvToastSuppressionDelay) {
                    mLastShortPressTurnOffTvHintToastTime = now;
                    Toast.makeText(
                            mContext,
@@ -1320,6 +1324,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                            Toast.LENGTH_LONG)
                            .show();
                }
            };
            mHandler.postDelayed(toastRunnable, mTurnOffTvToastPostDelay);
        }
    }

@@ -2396,6 +2402,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {

        mTurnOffTvToastSuppressionDelay = mContext.getResources().getInteger(
                com.android.internal.R.integer.config_turnOffTvToastSuppressionDelayMs);
        mTurnOffTvToastPostDelay = mContext.getResources().getInteger(
                    com.android.internal.R.integer.config_turnOffTvToastPostDelayMs);

        mDisplayFoldController = DisplayFoldController.create(mContext, DEFAULT_DISPLAY);