From df5a9a78b51f2f42d2dbb010e811a239fc014732 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Mon, 25 Sep 2023 13:01:44 +0800 Subject: Update Android port * doc/lispref/os.texi (Desktop Notifications): Revise documentation for android-notifications-notify to reflect changes. * java/org/gnu/emacs/EmacsDesktopNotification.java (display1): Convert notification importance to a legacy priority between Android 7.1 and 4.1. * java/org/gnu/emacs/EmacsPixmap.java (EmacsPixmap): Remove immutable bitmap constructor, as the underlying Android API functions are erroneously implemented. * src/android.c (android_init_emacs_pixmap): Cease searching for deleted constructor. (android_create_pixmap_from_bitmap_data): Create a pixmap, then fill it with the contents of the bitmap, in lieu of employing the aforementioned constructor. * src/androidselect.c (Fandroid_notifications_notify): Revise doc string. --- java/org/gnu/emacs/EmacsDesktopNotification.java | 37 ++++++++++++++++++++---- java/org/gnu/emacs/EmacsPixmap.java | 33 --------------------- 2 files changed, 32 insertions(+), 38 deletions(-) (limited to 'java') diff --git a/java/org/gnu/emacs/EmacsDesktopNotification.java b/java/org/gnu/emacs/EmacsDesktopNotification.java index 121d8f481a2..56ed984d497 100644 --- a/java/org/gnu/emacs/EmacsDesktopNotification.java +++ b/java/org/gnu/emacs/EmacsDesktopNotification.java @@ -96,6 +96,7 @@ public final class EmacsDesktopNotification RemoteViews contentView; Intent intent; PendingIntent pending; + int priority; tem = context.getSystemService (Context.NOTIFICATION_SERVICE); manager = (NotificationManager) tem; @@ -116,11 +117,37 @@ public final class EmacsDesktopNotification .build ()); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) - notification = (new Notification.Builder (context) - .setContentTitle (title) - .setContentText (content) - .setSmallIcon (icon) - .build ()); + { + /* Android 7.1 and earlier don't segregate notifications into + distinct categories, but permit an importance to be + assigned to each individual notification. */ + + switch (importance) + { + case 2: /* IMPORTANCE_LOW */ + default: + priority = Notification.PRIORITY_LOW; + break; + + case 3: /* IMPORTANCE_DEFAULT */ + priority = Notification.PRIORITY_DEFAULT; + break; + + case 4: /* IMPORTANCE_HIGH */ + priority = Notification.PRIORITY_HIGH; + break; + } + + notification = (new Notification.Builder (context) + .setContentTitle (title) + .setContentText (content) + .setSmallIcon (icon) + .setPriority (priority) + .build ()); + + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) + notification.priority = priority; + } else { notification = new Notification (); diff --git a/java/org/gnu/emacs/EmacsPixmap.java b/java/org/gnu/emacs/EmacsPixmap.java index e02699ecba7..fa6e61c15a5 100644 --- a/java/org/gnu/emacs/EmacsPixmap.java +++ b/java/org/gnu/emacs/EmacsPixmap.java @@ -50,39 +50,6 @@ public final class EmacsPixmap extends EmacsHandleObject changed. */ private long gcClipRectID; - public - EmacsPixmap (short handle, int colors[], int width, - int height, int depth) - { - super (handle); - - if (depth != 1 && depth != 24) - throw new IllegalArgumentException ("Invalid depth specified" - + " for pixmap: " + depth); - - switch (depth) - { - case 1: - bitmap = Bitmap.createBitmap (colors, width, height, - Bitmap.Config.ALPHA_8); - break; - - case 24: - bitmap = Bitmap.createBitmap (colors, width, height, - Bitmap.Config.ARGB_8888); - bitmap.setHasAlpha (false); - break; - } - - this.width = width; - this.height = height; - this.depth = depth; - - /* The immutable bitmap constructor is only leveraged to create - small fringe bitmaps. */ - this.needCollect = false; - } - public EmacsPixmap (short handle, int width, int height, int depth) { -- cgit v1.2.1