diff options
| author | 2020-05-18 13:14:33 +0000 | |
|---|---|---|
| committer | 2020-05-18 13:14:33 +0000 | |
| commit | c61e30bcf458f63e2da0a88563f91c2f00e58cfc (patch) | |
| tree | 3e0d71269a8f0badf2442d618e2d2c4442485237 | |
| parent | dfc677f70776fec98bf1184d8ac1cb067a79f516 (diff) | |
| parent | 0dc542c8667b4c78abf6bbd95015a18464e64c62 (diff) | |
Merge "Hide screenshot UI in setup wizard." into rvc-dev
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java | 46 | 
1 files changed, 46 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java index 9cfb1b27cbf3..839ea69953af 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java @@ -56,6 +56,7 @@ import android.os.PowerManager;  import android.os.RemoteException;  import android.os.UserHandle;  import android.provider.DeviceConfig; +import android.provider.Settings;  import android.util.DisplayMetrics;  import android.util.Log;  import android.util.MathUtils; @@ -160,6 +161,9 @@ public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInset      static final String EXTRA_CANCEL_NOTIFICATION = "android:screenshot_cancel_notification";      static final String EXTRA_DISALLOW_ENTER_PIP = "android:screenshot_disallow_enter_pip"; +    // From WizardManagerHelper.java +    private static final String SETTINGS_SECURE_USER_SETUP_COMPLETE = "user_setup_complete"; +      private static final String TAG = "GlobalScreenshot";      private static final long SCREENSHOT_FLASH_IN_DURATION_MS = 133; @@ -460,6 +464,13 @@ public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInset              return;          } +        if (!isUserSetupComplete()) { +            // User setup isn't complete, so we don't want to show any UI beyond a toast, as editing +            // and sharing shouldn't be exposed to the user. +            saveScreenshotAndToast(finisher); +            return; +        } +          // Optimizations          mScreenBitmap.setHasAlpha(false);          mScreenBitmap.prepareToDraw(); @@ -546,6 +557,41 @@ public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInset      }      /** +     * Save the bitmap but don't show the normal screenshot UI.. just a toast (or notification on +     * failure). +     */ +    private void saveScreenshotAndToast(Consumer<Uri> finisher) { +        // Play the shutter sound to notify that we've taken a screenshot +        mScreenshotHandler.post(() -> { +            mCameraSound.play(MediaActionSound.SHUTTER_CLICK); +        }); + +        saveScreenshotInWorkerThread(finisher, new ActionsReadyListener() { +            @Override +            void onActionsReady(SavedImageData imageData) { +                finisher.accept(imageData.uri); +                if (imageData.uri == null) { +                    mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_NOT_SAVED); +                    mNotificationsController.notifyScreenshotError( +                            R.string.screenshot_failed_to_capture_text); +                } else { +                    mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SAVED); + +                    mScreenshotHandler.post(() -> { +                        Toast.makeText(mContext, R.string.screenshot_saved_title, +                                Toast.LENGTH_SHORT).show(); +                    }); +                } +            } +        }); +    } + +    private boolean isUserSetupComplete() { +        return Settings.Secure.getInt(mContext.getContentResolver(), +                SETTINGS_SECURE_USER_SETUP_COMPLETE, 0) == 1; +    } + +    /**       * Clears current screenshot       */      private void dismissScreenshot(String reason, boolean immediate) {  |