mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-22 22:18:26 +00:00
Take advantage of new ICS+ notification styles.
This commit is contained in:
parent
095b73a079
commit
1881753a71
@ -23,9 +23,11 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
import android.support.v4.app.NotificationCompat;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@ -54,6 +56,16 @@ public class MessageNotifier {
|
|||||||
|
|
||||||
public static final int NOTIFICATION_ID = 1338;
|
public static final int NOTIFICATION_ID = 1338;
|
||||||
|
|
||||||
|
private static Bitmap buildContactPhoto(Recipients recipients) {
|
||||||
|
Recipient recipient = recipients.getPrimaryRecipient();
|
||||||
|
|
||||||
|
if (recipient == null) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return recipient.getContactPhoto();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static String buildTickerMessage(Context context, int count, Recipients recipients) {
|
private static String buildTickerMessage(Context context, int count, Recipients recipients) {
|
||||||
Recipient recipient = recipients.getPrimaryRecipient();
|
Recipient recipient = recipients.getPrimaryRecipient();
|
||||||
|
|
||||||
@ -132,13 +144,14 @@ public class MessageNotifier {
|
|||||||
return PendingIntent.getActivity(context, 0, intent, 0);
|
return PendingIntent.getActivity(context, 0, intent, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void sendNotification(Context context, NotificationManager manager, PendingIntent launchIntent,
|
private static void sendNotification(Context context, NotificationManager manager,
|
||||||
String ticker, String title, String subtitle, boolean signal)
|
PendingIntent launchIntent, Bitmap contactPhoto,
|
||||||
|
String ticker, String title,
|
||||||
|
String subtitle, boolean signal)
|
||||||
{
|
{
|
||||||
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
|
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
if (!sp.getBoolean(ApplicationPreferencesActivity.NOTIFICATION_PREF, true)) return;
|
if (!sp.getBoolean(ApplicationPreferencesActivity.NOTIFICATION_PREF, true)) return;
|
||||||
|
|
||||||
Notification notification = new Notification(R.drawable.icon_notification, ticker, System.currentTimeMillis());
|
|
||||||
String ringtone = sp.getString(ApplicationPreferencesActivity.RINGTONE_PREF, null);
|
String ringtone = sp.getString(ApplicationPreferencesActivity.RINGTONE_PREF, null);
|
||||||
boolean vibrate = sp.getBoolean(ApplicationPreferencesActivity.VIBRATE_PREF, true);
|
boolean vibrate = sp.getBoolean(ApplicationPreferencesActivity.VIBRATE_PREF, true);
|
||||||
String ledColor = sp.getString(ApplicationPreferencesActivity.LED_COLOR_PREF, "green");
|
String ledColor = sp.getString(ApplicationPreferencesActivity.LED_COLOR_PREF, "green");
|
||||||
@ -146,21 +159,26 @@ public class MessageNotifier {
|
|||||||
String ledBlinkPatternCustom = sp.getString(ApplicationPreferencesActivity.LED_BLINK_PREF_CUSTOM, "500,2000");
|
String ledBlinkPatternCustom = sp.getString(ApplicationPreferencesActivity.LED_BLINK_PREF_CUSTOM, "500,2000");
|
||||||
String[] blinkPatternArray = parseBlinkPattern(ledBlinkPattern, ledBlinkPatternCustom);
|
String[] blinkPatternArray = parseBlinkPattern(ledBlinkPattern, ledBlinkPatternCustom);
|
||||||
|
|
||||||
notification.setLatestEventInfo(context, title, subtitle, launchIntent);
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
|
||||||
notification.sound = TextUtils.isEmpty(ringtone) || !signal ? null : Uri.parse(ringtone);
|
builder.setSmallIcon(R.drawable.icon_notification);
|
||||||
|
builder.setLargeIcon(contactPhoto);
|
||||||
|
builder.setTicker(ticker);
|
||||||
|
builder.setContentTitle(title);
|
||||||
|
builder.setContentText(subtitle);
|
||||||
|
builder.setContentIntent(launchIntent);
|
||||||
|
builder.setSound(TextUtils.isEmpty(ringtone) || !signal ? null : Uri.parse(ringtone));
|
||||||
|
|
||||||
if (signal && vibrate)
|
if (signal && vibrate)
|
||||||
notification.defaults |= Notification.DEFAULT_VIBRATE;
|
builder.setDefaults(Notification.DEFAULT_VIBRATE);
|
||||||
|
|
||||||
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
|
builder.setLights(Color.parseColor(ledColor), Integer.parseInt(blinkPatternArray[0]), Integer.parseInt(blinkPatternArray[1]));
|
||||||
notification.ledARGB = Color.parseColor(ledColor);//0xff00ff00;
|
|
||||||
notification.ledOnMS = Integer.parseInt(blinkPatternArray[0]);
|
|
||||||
notification.ledOffMS = Integer.parseInt(blinkPatternArray[1]);
|
|
||||||
|
|
||||||
manager.notify(NOTIFICATION_ID, notification);
|
manager.notify(NOTIFICATION_ID, builder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void flashNotification(Context context, NotificationManager manager) {
|
private static void flashNotification(Context context, NotificationManager manager) {
|
||||||
sendNotification(context, manager, buildPendingIntent(context, null, null), "(1) New Messages", "(1) New Messages", null, true);
|
sendNotification(context, manager, buildPendingIntent(context, null, null),
|
||||||
|
null, "(1) New Messages", "(1) New Messages", null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void updateNotification(Context context, boolean signal) {
|
public static void updateNotification(Context context, boolean signal) {
|
||||||
@ -180,8 +198,10 @@ public class MessageNotifier {
|
|||||||
String title = buildTitleMessage(context, c.getCount());
|
String title = buildTitleMessage(context, c.getCount());
|
||||||
String subtitle = buildSubtitleMessage(context, recipients);
|
String subtitle = buildSubtitleMessage(context, recipients);
|
||||||
PendingIntent launchIntent = buildPendingIntent(context, c, recipients);
|
PendingIntent launchIntent = buildPendingIntent(context, c, recipients);
|
||||||
|
Bitmap contactPhoto = buildContactPhoto(recipients);
|
||||||
|
|
||||||
sendNotification(context, manager, launchIntent, ticker, title, subtitle, signal);
|
sendNotification(context, manager, launchIntent, contactPhoto,
|
||||||
|
ticker, title, subtitle, signal);
|
||||||
} finally {
|
} finally {
|
||||||
if (c != null)
|
if (c != null)
|
||||||
c.close();
|
c.close();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user