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

Commit 30b8fe21 authored by jinwu's avatar jinwu Committed by Ricardo Cerqueira
Browse files

Add screenshot for LogSystem.

The LogSystem can use VolumeUp+Power key to capture the screenshot
to get more useful information for developer to analyse.

Change-Id: Iabca0b59aac832b1698f06c89a8782c76fbc598a
parent bd26c8dc
Loading
Loading
Loading
Loading
+52 −1
Original line number Original line Diff line number Diff line
@@ -520,6 +520,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    private boolean mVolumeDownKeyConsumedByScreenshotChord;
    private boolean mVolumeDownKeyConsumedByScreenshotChord;
    private boolean mVolumeUpKeyTriggered;
    private boolean mVolumeUpKeyTriggered;
    private boolean mPowerKeyTriggered;
    private boolean mPowerKeyTriggered;
    private long mVolumeUpKeyTime;
    private boolean mVolumeUpKeyConsumedByScreenshotChord;
    private long mPowerKeyTime;
    private long mPowerKeyTime;


    /* The number of steps between min and max brightness */
    /* The number of steps between min and max brightness */
@@ -827,6 +829,24 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }
        }
    }
    }


    private void interceptScreenshotLog() {
        if (mScreenshotChordEnabled
                && mVolumeUpKeyTriggered && mPowerKeyTriggered && !mVolumeDownKeyTriggered) {
            final long now = SystemClock.uptimeMillis();
            if (now <= mVolumeUpKeyTime + SCREENSHOT_CHORD_DEBOUNCE_DELAY_MILLIS
                   && now <= mPowerKeyTime + SCREENSHOT_CHORD_DEBOUNCE_DELAY_MILLIS) {
                mVolumeUpKeyConsumedByScreenshotChord = true;
                cancelPendingScreenshotForLog();

                mHandler.postDelayed(mScreenshotForLog, getScreenshotChordLongPressDelay());
            }
        }
    }

    private void cancelPendingScreenshotForLog() {
        mHandler.removeCallbacks(mScreenshotForLog);
    }

    private long getScreenshotChordLongPressDelay() {
    private long getScreenshotChordLongPressDelay() {
        if (mKeyguardDelegate.isShowing()) {
        if (mKeyguardDelegate.isShowing()) {
            // Double the time it takes to take a screenshot from the keyguard
            // Double the time it takes to take a screenshot from the keyguard
@@ -908,6 +928,20 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }
        }
    };
    };


    private final Runnable mScreenshotForLog = new Runnable() {
        public void run() {
            Intent intent = new Intent("android.system.agent");
            intent.setComponent(new ComponentName("com.qualcomm.agent",
                    "com.qualcomm.agent.SystemAgent"));
            intent.putExtra("para", "takeLogs");
            try {
                mContext.startService(intent);
            } catch (Exception e) {
                Slog.e(TAG, "Exception when start SystemAgent service", e);
            }
        }
    };

    @Override
    @Override
    public void showGlobalActions() {
    public void showGlobalActions() {
        mHandler.removeMessages(MSG_DISPATCH_SHOW_GLOBAL_ACTIONS);
        mHandler.removeMessages(MSG_DISPATCH_SHOW_GLOBAL_ACTIONS);
@@ -2192,6 +2226,20 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                }
                }
                return -1;
                return -1;
            }
            }
            if (mVolumeUpKeyTriggered && !mPowerKeyTriggered) {
                final long now = SystemClock.uptimeMillis();
                final long timeoutTime = mVolumeUpKeyTime + SCREENSHOT_CHORD_DEBOUNCE_DELAY_MILLIS;
                if (now < timeoutTime) {
                    return timeoutTime - now;
                }
            }
            if (keyCode == KeyEvent.KEYCODE_VOLUME_UP
                    && mVolumeUpKeyConsumedByScreenshotChord) {
                if (!down) {
                    mVolumeUpKeyConsumedByScreenshotChord = false;
                }
                return -1;
            }
        }
        }


        // Cancel any pending meta actions if we see any other keys being pressed between the down
        // Cancel any pending meta actions if we see any other keys being pressed between the down
@@ -4385,8 +4433,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                        if (interactive && !mVolumeUpKeyTriggered
                        if (interactive && !mVolumeUpKeyTriggered
                                && (event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) {
                                && (event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) {
                            mVolumeUpKeyTriggered = true;
                            mVolumeUpKeyTriggered = true;
                            mVolumeUpKeyTime = event.getDownTime();
                            mVolumeUpKeyConsumedByScreenshotChord = false;
                            cancelPendingPowerKeyAction();
                            cancelPendingPowerKeyAction();
                            cancelPendingScreenshotChordAction();
                            interceptScreenshotLog();
                        }
                        }
                    } else {
                    } else {
                        mVolumeUpKeyTriggered = false;
                        mVolumeUpKeyTriggered = false;
@@ -4479,6 +4529,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                        mPowerKeyTriggered = true;
                        mPowerKeyTriggered = true;
                        mPowerKeyTime = event.getDownTime();
                        mPowerKeyTime = event.getDownTime();
                        interceptScreenshotChord();
                        interceptScreenshotChord();
                        interceptScreenshotLog();
                    }
                    }


                    TelecomManager telecomManager = getTelecommService();
                    TelecomManager telecomManager = getTelecommService();