Improved notifications

This commit is contained in:
Sylvain Berfini 2018-10-12 10:56:22 +02:00
parent 9c8a3ca9ad
commit 9a2bdfc2c4
7 changed files with 35 additions and 24 deletions

View file

@ -48,7 +48,7 @@
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
<!-- Needed for in-app purchase --> <!-- Needed for in-app purchase -->
<!-- <uses-permission android:name="com.android.vending.BILLING"/> --> <!-- <uses-permission android:name="com.android.vending.BILLING"/> -->
<!-- Needed for overlay widget --> <!-- Needed for overlay widget and floating notifications -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<!-- Needed for kill application yourself --> <!-- Needed for kill application yourself -->
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/> <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>

View file

@ -464,5 +464,6 @@ Vos amis pourront vous joindre plus facilement si vous associez votre compte à
<string name="content_description_call_options">Options d\'appel</string> <string name="content_description_call_options">Options d\'appel</string>
<string name="content_description_audio_route">Route audio</string> <string name="content_description_audio_route">Route audio</string>
<string name="content_description_exit_conference">Quitter la conférence</string> <string name="content_description_exit_conference">Quitter la conférence</string>
<string name="content_title_notification_service">Linphone Service</string> <string name="content_title_notification_service">Linphone service notification</string>
<string name="content_title_notification">Linphone instant messages notifications</string>
</resources> </resources>

View file

@ -521,8 +521,8 @@
<string name="content_description_call_options">Call options</string> <string name="content_description_call_options">Call options</string>
<string name="content_description_audio_route">Audio route</string> <string name="content_description_audio_route">Audio route</string>
<string name="content_description_exit_conference">Exit conference</string> <string name="content_description_exit_conference">Exit conference</string>
<string name="content_title_notification_service">Linphone Service</string> <string name="content_title_notification_service">Linphone service notification</string>
<string name="content_title_notification">Linphone Notification</string> <string name="content_title_notification">Linphone instant messages notifications</string>
<string name="content_description_conversation_subject">Group chat room subject</string> <string name="content_description_conversation_subject">Group chat room subject</string>
<string name="content_description_conversation_infos">Group chat room info</string> <string name="content_description_conversation_infos">Group chat room info</string>
</resources> </resources>

View file

@ -470,7 +470,7 @@ public final class LinphoneService extends Service {
mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNM.cancel(INCALL_NOTIF_ID); // in case of crash the icon is not removed mNM.cancel(INCALL_NOTIF_ID); // in case of crash the icon is not removed
Compatibility.CreateChannel(this); Compatibility.createNotificationChannels(this);
Intent notifIntent = new Intent(this, incomingReceivedActivity); Intent notifIntent = new Intent(this, incomingReceivedActivity);
notifIntent.putExtra("Notification", true); notifIntent.putExtra("Notification", true);

View file

@ -1333,6 +1333,8 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
ContactsManager.getInstance().fetchContactsAsync(); ContactsManager.getInstance().fetchContactsAsync();
} }
} }
// This one is to allow floating notifications
permissionsList.add(Manifest.permission.SYSTEM_ALERT_WINDOW);
if (permissionsList.size() > 0) { if (permissionsList.size() > 0) {
String[] permissions = new String[permissionsList.size()]; String[] permissions = new String[permissionsList.size()];

View file

@ -13,6 +13,7 @@ import android.graphics.Bitmap;
import android.view.ViewTreeObserver; import android.view.ViewTreeObserver;
import org.linphone.R; import org.linphone.R;
import org.linphone.mediastream.Log;
/* /*
ApiTwentyOnePlus.java ApiTwentyOnePlus.java
@ -36,31 +37,37 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
@TargetApi(26) @TargetApi(26)
public class ApiTwentySixPlus { public class ApiTwentySixPlus {
public static void CreateChannel(Context context) { public static void createServiceChannel(Context context) {
NotificationManager notificationManager = NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
// Create service/call notification channel // Create service/call notification channel
String id = context.getString(R.string.notification_service_channel_id); String id = context.getString(R.string.notification_service_channel_id);
CharSequence name = context.getString(R.string.content_title_notification_service); CharSequence name = context.getString(R.string.content_title_notification_service);
String description = context.getString(R.string.content_title_notification_service); String description = context.getString(R.string.content_title_notification_service);
int importance = NotificationManager.IMPORTANCE_NONE; NotificationChannel channel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_NONE);
NotificationChannel mChannel = new NotificationChannel(id, name, importance); channel.setDescription(description);
mChannel.setDescription(description); channel.enableVibration(false);
mChannel.enableVibration(false); channel.enableLights(false);
mChannel.enableLights(false); channel.setShowBadge(false);
notificationManager.createNotificationChannel(mChannel); notificationManager.createNotificationChannel(channel);
// Create message notification channel
id = context.getString(R.string.notification_channel_id);
name = context.getString(R.string.content_title_notification);
description = context.getString(R.string.content_title_notification);
importance = NotificationManager.IMPORTANCE_HIGH;
mChannel = new NotificationChannel(id, name, importance);
mChannel.setDescription(description);
mChannel.setLightColor(context.getColor(R.color.notification_color_led));
mChannel.enableLights(true);
notificationManager.createNotificationChannel(mChannel);
} }
public static void createMessageChannel(Context context) {
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
// Create message notification channel
String id = context.getString(R.string.notification_channel_id);
String name = context.getString(R.string.content_title_notification);
String description = context.getString(R.string.content_title_notification);
NotificationChannel channel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH);
channel.setDescription(description);
channel.setLightColor(context.getColor(R.color.notification_color_led));
channel.enableLights(true);
channel.enableVibration(true);
channel.setShowBadge(true);
notificationManager.createNotificationChannel(channel);
}
public static Notification createMessageNotification(Context context, public static Notification createMessageNotification(Context context,
int msgCount, String msgSender, String msg, Bitmap contactIcon, int msgCount, String msgSender, String msg, Bitmap contactIcon,
PendingIntent intent) { PendingIntent intent) {

View file

@ -37,9 +37,10 @@ import android.widget.TextView;
import org.linphone.mediastream.Version; import org.linphone.mediastream.Version;
public class Compatibility { public class Compatibility {
public static void CreateChannel(Context context) { public static void createNotificationChannels(Context context) {
if (Version.sdkAboveOrEqual(Version.API26_O_80)) { if (Version.sdkAboveOrEqual(Version.API26_O_80)) {
ApiTwentySixPlus.CreateChannel(context); ApiTwentySixPlus.createServiceChannel(context);
ApiTwentySixPlus.createMessageChannel(context);
} }
} }