From 9da5f6c8d44835f8fbbc9a1c1a72ca51a2c841ed Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Wed, 30 Aug 2017 20:12:15 +0200 Subject: [PATCH] Add notification channel --- .../gramophone/service/MusicService.java | 4 ++++ .../notification/PlayingNotification.java | 23 ++++++++++++++++++- .../notification/PlayingNotificationImpl.java | 2 +- .../PlayingNotificationImpl24.java | 2 +- .../ui/activities/SettingsActivity.java | 7 ------ app/src/main/res/values/strings.xml | 2 ++ 6 files changed, 30 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java index 4e389887..9601f42f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java @@ -1138,6 +1138,10 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP case PreferenceUtil.COLORED_NOTIFICATION: updateNotification(); break; + case PreferenceUtil.CLASSIC_NOTIFICATION: + initNotification(); + updateNotification(); + break; } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotification.java b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotification.java index 58bd52ec..cec20869 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotification.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotification.java @@ -1,8 +1,12 @@ package com.kabouzeid.gramophone.service.notification; import android.app.Notification; +import android.app.NotificationChannel; import android.app.NotificationManager; +import android.os.Build; +import android.support.annotation.RequiresApi; +import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.service.MusicService; import static android.content.Context.NOTIFICATION_SERVICE; @@ -10,7 +14,7 @@ import static android.content.Context.NOTIFICATION_SERVICE; public abstract class PlayingNotification { private static final int NOTIFICATION_ID = 1; - protected static final String NOTIFICATION_CHANNEL = "notif_channel"; + protected static final String NOTIFICATION_CHANNEL_ID = "playing_notification"; private static final int NOTIFY_MODE_FOREGROUND = 1; private static final int NOTIFY_MODE_BACKGROUND = 0; @@ -24,6 +28,9 @@ public abstract class PlayingNotification { public synchronized void init(MusicService service) { this.service = service; notificationManager = (NotificationManager) service.getSystemService(NOTIFICATION_SERVICE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + createNotificationChannel(); + } } abstract public void update(); @@ -54,4 +61,18 @@ public abstract class PlayingNotification { notifyMode = newNotifyMode; } + + @RequiresApi(26) + private void createNotificationChannel() { + NotificationChannel notificationChannel = notificationManager.getNotificationChannel(NOTIFICATION_CHANNEL_ID); + if (notificationChannel == null) { + notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, service.getString(R.string.playing_notification_name), NotificationManager.IMPORTANCE_LOW); + notificationChannel.setDescription(service.getString(R.string.playing_notification_description)); + notificationChannel.enableLights(false); + notificationChannel.enableVibration(false); + notificationChannel.setShowBadge(false); + + notificationManager.createNotificationChannel(notificationChannel); + } + } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl.java b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl.java index b83c0fd5..c5462d87 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl.java @@ -71,7 +71,7 @@ public class PlayingNotificationImpl extends PlayingNotification { final PendingIntent clickIntent = PendingIntent.getActivity(service, 0, action, 0); final PendingIntent deleteIntent = buildPendingIntent(service, MusicService.ACTION_QUIT, null); - final Notification notification = new NotificationCompat.Builder(service, NOTIFICATION_CHANNEL) + final Notification notification = new NotificationCompat.Builder(service, NOTIFICATION_CHANNEL_ID) .setSmallIcon(R.drawable.ic_notification) .setContentIntent(clickIntent) .setDeleteIntent(deleteIntent) diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl24.java b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl24.java index 32bb89ea..ee4bb75e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl24.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl24.java @@ -85,7 +85,7 @@ public class PlayingNotificationImpl24 extends PlayingNotification { NotificationCompat.Action nextAction = new NotificationCompat.Action(R.drawable.ic_skip_next_white_24dp, service.getString(R.string.action_next), retrievePlaybackAction(ACTION_SKIP)); - NotificationCompat.Builder builder = new NotificationCompat.Builder(service, NOTIFICATION_CHANNEL) + NotificationCompat.Builder builder = new NotificationCompat.Builder(service, NOTIFICATION_CHANNEL_ID) .setSmallIcon(R.drawable.ic_notification) .setLargeIcon(bitmap) .setContentIntent(clickIntent) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java index eb9f2e3c..e59e031b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java @@ -260,13 +260,6 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia public boolean onPreferenceChange(Preference preference, Object newValue) { // Save preference PreferenceUtil.getInstance(getActivity()).setClassicNotification((Boolean) newValue); - - final MusicService service = MusicPlayerRemote.musicService; - if (service != null) { - service.initNotification(); - service.updateNotification(); - } - return true; } }); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9b29530f..f01b97e0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -301,4 +301,6 @@ @string/last_added @string/last_added Playlist is empty + The playing notification provides actions for play/pause etc. + Playing notification