Merge "Disallow long screenshots on low-memory devices" into sc-dev
This commit is contained in:
@@ -33,6 +33,7 @@ import static java.util.Objects.requireNonNull;
|
|||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
import android.animation.AnimatorListenerAdapter;
|
import android.animation.AnimatorListenerAdapter;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
|
import android.app.ActivityManager;
|
||||||
import android.app.ActivityOptions;
|
import android.app.ActivityOptions;
|
||||||
import android.app.ExitTransitionCoordinator;
|
import android.app.ExitTransitionCoordinator;
|
||||||
import android.app.ExitTransitionCoordinator.ExitTransitionCallbacks;
|
import android.app.ExitTransitionCoordinator.ExitTransitionCallbacks;
|
||||||
@@ -253,6 +254,7 @@ public class ScreenshotController {
|
|||||||
private final DisplayManager mDisplayManager;
|
private final DisplayManager mDisplayManager;
|
||||||
private final ScrollCaptureController mScrollCaptureController;
|
private final ScrollCaptureController mScrollCaptureController;
|
||||||
private final LongScreenshotData mLongScreenshotHolder;
|
private final LongScreenshotData mLongScreenshotHolder;
|
||||||
|
private final boolean mIsLowRamDevice;
|
||||||
|
|
||||||
private ScreenshotView mScreenshotView;
|
private ScreenshotView mScreenshotView;
|
||||||
private Bitmap mScreenBitmap;
|
private Bitmap mScreenBitmap;
|
||||||
@@ -297,7 +299,8 @@ public class ScreenshotController {
|
|||||||
ImageExporter imageExporter,
|
ImageExporter imageExporter,
|
||||||
@Main Executor mainExecutor,
|
@Main Executor mainExecutor,
|
||||||
ScrollCaptureController scrollCaptureController,
|
ScrollCaptureController scrollCaptureController,
|
||||||
LongScreenshotData longScreenshotHolder) {
|
LongScreenshotData longScreenshotHolder,
|
||||||
|
ActivityManager activityManager) {
|
||||||
mScreenshotSmartActions = screenshotSmartActions;
|
mScreenshotSmartActions = screenshotSmartActions;
|
||||||
mNotificationsController = screenshotNotificationsController;
|
mNotificationsController = screenshotNotificationsController;
|
||||||
mScrollCaptureClient = scrollCaptureClient;
|
mScrollCaptureClient = scrollCaptureClient;
|
||||||
@@ -306,6 +309,7 @@ public class ScreenshotController {
|
|||||||
mMainExecutor = mainExecutor;
|
mMainExecutor = mainExecutor;
|
||||||
mScrollCaptureController = scrollCaptureController;
|
mScrollCaptureController = scrollCaptureController;
|
||||||
mLongScreenshotHolder = longScreenshotHolder;
|
mLongScreenshotHolder = longScreenshotHolder;
|
||||||
|
mIsLowRamDevice = activityManager.isLowRamDevice();
|
||||||
mBgExecutor = Executors.newSingleThreadExecutor();
|
mBgExecutor = Executors.newSingleThreadExecutor();
|
||||||
|
|
||||||
mDisplayManager = requireNonNull(context.getSystemService(DisplayManager.class));
|
mDisplayManager = requireNonNull(context.getSystemService(DisplayManager.class));
|
||||||
@@ -621,6 +625,10 @@ public class ScreenshotController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void requestScrollCapture() {
|
private void requestScrollCapture() {
|
||||||
|
if (!allowLongScreenshots()) {
|
||||||
|
Log.d(TAG, "Long screenshots not supported on this device");
|
||||||
|
return;
|
||||||
|
}
|
||||||
mScrollCaptureClient.setHostWindowToken(mWindow.getDecorView().getWindowToken());
|
mScrollCaptureClient.setHostWindowToken(mWindow.getDecorView().getWindowToken());
|
||||||
if (mLastScrollCaptureRequest != null) {
|
if (mLastScrollCaptureRequest != null) {
|
||||||
mLastScrollCaptureRequest.cancel(true);
|
mLastScrollCaptureRequest.cancel(true);
|
||||||
@@ -982,6 +990,10 @@ public class ScreenshotController {
|
|||||||
return mDisplayManager.getDisplay(DEFAULT_DISPLAY);
|
return mDisplayManager.getDisplay(DEFAULT_DISPLAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean allowLongScreenshots() {
|
||||||
|
return !mIsLowRamDevice;
|
||||||
|
}
|
||||||
|
|
||||||
/** Does the aspect ratio of the bitmap with insets removed match the bounds. */
|
/** Does the aspect ratio of the bitmap with insets removed match the bounds. */
|
||||||
private static boolean aspectRatiosMatch(Bitmap bitmap, Insets bitmapInsets,
|
private static boolean aspectRatiosMatch(Bitmap bitmap, Insets bitmapInsets,
|
||||||
Rect screenBounds) {
|
Rect screenBounds) {
|
||||||
|
|||||||
Reference in New Issue
Block a user