diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationsController.java | 197 |
1 files changed, 0 insertions, 197 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationsController.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationsController.java index a946513870c9..db5a4941ca58 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationsController.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationsController.java @@ -25,13 +25,6 @@ import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.Intent; import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.ColorMatrix; -import android.graphics.ColorMatrixColorFilter; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.graphics.Picture; import android.os.UserHandle; import android.util.DisplayMetrics; import android.view.WindowManager; @@ -52,179 +45,16 @@ public class ScreenshotNotificationsController { private final Context mContext; private final Resources mResources; private final NotificationManager mNotificationManager; - private final Notification.BigPictureStyle mNotificationStyle; - - private int mIconSize; - private int mPreviewWidth, mPreviewHeight; - private Notification.Builder mNotificationBuilder, mPublicNotificationBuilder; @Inject ScreenshotNotificationsController(Context context, WindowManager windowManager) { mContext = context; mResources = context.getResources(); - mNotificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE); - mIconSize = mResources.getDimensionPixelSize( - android.R.dimen.notification_large_icon_height); - DisplayMetrics displayMetrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getRealMetrics(displayMetrics); - - - // determine the optimal preview size - int panelWidth = 0; - try { - panelWidth = mResources.getDimensionPixelSize(R.dimen.notification_panel_width); - } catch (Resources.NotFoundException e) { - } - if (panelWidth <= 0) { - // includes notification_panel_width==match_parent (-1) - panelWidth = displayMetrics.widthPixels; - } - mPreviewWidth = panelWidth; - mPreviewHeight = mResources.getDimensionPixelSize(R.dimen.notification_max_height); - - // Setup the notification - mNotificationStyle = new Notification.BigPictureStyle(); - } - - /** - * Resets the notification builders. - */ - public void reset() { - // The public notification will show similar info but with the actual screenshot omitted - mPublicNotificationBuilder = - new Notification.Builder(mContext, NotificationChannels.SCREENSHOTS_HEADSUP); - mNotificationBuilder = - new Notification.Builder(mContext, NotificationChannels.SCREENSHOTS_HEADSUP); - } - - /** - * Sets the current screenshot bitmap. - * - * @param image the bitmap of the current screenshot (used for preview) - */ - public void setImage(Bitmap image) { - // Create the large notification icon - int imageWidth = image.getWidth(); - int imageHeight = image.getHeight(); - - Paint paint = new Paint(); - ColorMatrix desat = new ColorMatrix(); - desat.setSaturation(0.25f); - paint.setColorFilter(new ColorMatrixColorFilter(desat)); - Matrix matrix = new Matrix(); - int overlayColor = 0x40FFFFFF; - - matrix.setTranslate((mPreviewWidth - imageWidth) / 2f, (mPreviewHeight - imageHeight) / 2f); - - Bitmap picture = generateAdjustedHwBitmap( - image, mPreviewWidth, mPreviewHeight, matrix, paint, overlayColor); - - mNotificationStyle.bigPicture(picture.asShared()); - - // Note, we can't use the preview for the small icon, since it is non-square - float scale = (float) mIconSize / Math.min(imageWidth, imageHeight); - matrix.setScale(scale, scale); - matrix.postTranslate( - (mIconSize - (scale * imageWidth)) / 2, - (mIconSize - (scale * imageHeight)) / 2); - Bitmap icon = - generateAdjustedHwBitmap(image, mIconSize, mIconSize, matrix, paint, overlayColor); - - /** - * NOTE: The following code prepares the notification builder for updating the - * notification after the screenshot has been written to disk. - */ - - // On the tablet, the large icon makes the notification appear as if it is clickable - // (and on small devices, the large icon is not shown) so defer showing the large icon - // until we compose the final post-save notification below. - mNotificationBuilder.setLargeIcon(icon.asShared()); - // But we still don't set it for the expanded view, allowing the smallIcon to show here. - mNotificationStyle.bigLargeIcon((Bitmap) null); - } - - /** - * Shows a notification to inform the user that a screenshot is currently being saved. - */ - public void showSavingScreenshotNotification() { - final long now = System.currentTimeMillis(); - - mPublicNotificationBuilder - .setContentTitle(mResources.getString(R.string.screenshot_saving_title)) - .setSmallIcon(R.drawable.stat_notify_image) - .setCategory(Notification.CATEGORY_PROGRESS) - .setWhen(now) - .setShowWhen(true) - .setColor(mResources.getColor( - com.android.internal.R.color.system_notification_accent_color)); - SystemUI.overrideNotificationAppName(mContext, mPublicNotificationBuilder, true); - - mNotificationBuilder - .setContentTitle(mResources.getString(R.string.screenshot_saving_title)) - .setSmallIcon(R.drawable.stat_notify_image) - .setWhen(now) - .setShowWhen(true) - .setColor(mResources.getColor( - com.android.internal.R.color.system_notification_accent_color)) - .setStyle(mNotificationStyle) - .setPublicVersion(mPublicNotificationBuilder.build()); - mNotificationBuilder.setFlag(Notification.FLAG_NO_CLEAR, true); - SystemUI.overrideNotificationAppName(mContext, mNotificationBuilder, true); - - mNotificationManager.notify(SystemMessageProto.SystemMessage.NOTE_GLOBAL_SCREENSHOT, - mNotificationBuilder.build()); - } - - /** - * Shows a notification with the saved screenshot and actions that can be taken with it. - * - * @param actionData SavedImageData struct with image URI and actions - */ - public void showScreenshotActionsNotification( - ScreenshotController.SavedImageData actionData) { - mNotificationBuilder.addAction(actionData.shareAction); - mNotificationBuilder.addAction(actionData.editAction); - mNotificationBuilder.addAction(actionData.deleteAction); - for (Notification.Action smartAction : actionData.smartActions) { - mNotificationBuilder.addAction(smartAction); - } - - // Create the intent to show the screenshot in gallery - Intent launchIntent = new Intent(Intent.ACTION_VIEW); - launchIntent.setDataAndType(actionData.uri, "image/png"); - launchIntent.setFlags( - Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION); - - final long now = System.currentTimeMillis(); - - // Update the text and the icon for the existing notification - mPublicNotificationBuilder - .setContentTitle(mResources.getString(R.string.screenshot_saved_title)) - .setContentText(mResources.getString(R.string.screenshot_saved_text)) - .setContentIntent(PendingIntent - .getActivity(mContext, 0, launchIntent, PendingIntent.FLAG_IMMUTABLE)) - .setWhen(now) - .setAutoCancel(true) - .setColor(mContext.getColor( - com.android.internal.R.color.system_notification_accent_color)); - mNotificationBuilder - .setContentTitle(mResources.getString(R.string.screenshot_saved_title)) - .setContentText(mResources.getString(R.string.screenshot_saved_text)) - .setContentIntent(PendingIntent - .getActivity(mContext, 0, launchIntent, PendingIntent.FLAG_IMMUTABLE)) - .setWhen(now) - .setAutoCancel(true) - .setColor(mContext.getColor( - com.android.internal.R.color.system_notification_accent_color)) - .setPublicVersion(mPublicNotificationBuilder.build()) - .setFlag(Notification.FLAG_NO_CLEAR, false); - - mNotificationManager.notify(SystemMessageProto.SystemMessage.NOTE_GLOBAL_SCREENSHOT, - mNotificationBuilder.build()); } /** @@ -263,31 +93,4 @@ public class ScreenshotNotificationsController { .build(); mNotificationManager.notify(SystemMessageProto.SystemMessage.NOTE_GLOBAL_SCREENSHOT, n); } - - /** - * Cancels the current screenshot notification. - */ - public void cancelNotification() { - mNotificationManager.cancel(SystemMessageProto.SystemMessage.NOTE_GLOBAL_SCREENSHOT); - } - - /** - * Generates a new hardware bitmap with specified values, copying the content from the - * passed in bitmap. - */ - private Bitmap generateAdjustedHwBitmap(Bitmap bitmap, int width, int height, Matrix matrix, - Paint paint, int color) { - Picture picture = new Picture(); - Canvas canvas = picture.beginRecording(width, height); - canvas.drawColor(color); - canvas.drawBitmap(bitmap, matrix, paint); - picture.endRecording(); - return Bitmap.createBitmap(picture); - } - - static void cancelScreenshotNotification(Context context) { - final NotificationManager nm = - (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE); - nm.cancel(SystemMessageProto.SystemMessage.NOTE_GLOBAL_SCREENSHOT); - } } |