Merge pull request #1840 from MilosKozak/foreground-service-fix
Also show notification when no profile is set
This commit is contained in:
commit
fcf54dc23c
1 changed files with 94 additions and 89 deletions
|
@ -10,6 +10,7 @@ import android.content.Intent;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
|
||||||
import androidx.core.app.NotificationCompat;
|
import androidx.core.app.NotificationCompat;
|
||||||
import androidx.core.app.RemoteInput;
|
import androidx.core.app.RemoteInput;
|
||||||
import androidx.core.app.TaskStackBuilder;
|
import androidx.core.app.TaskStackBuilder;
|
||||||
|
@ -72,7 +73,7 @@ public class PersistentNotificationPlugin extends PluginBase {
|
||||||
/// End Android Auto
|
/// End Android Auto
|
||||||
|
|
||||||
|
|
||||||
public PersistentNotificationPlugin(Context ctx) {
|
private PersistentNotificationPlugin(Context ctx) {
|
||||||
super(new PluginDescription()
|
super(new PluginDescription()
|
||||||
.mainType(PluginType.GENERAL)
|
.mainType(PluginType.GENERAL)
|
||||||
.neverVisible(true)
|
.neverVisible(true)
|
||||||
|
@ -122,97 +123,99 @@ public class PersistentNotificationPlugin extends PluginBase {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
String line1;
|
String line1 = null;
|
||||||
String line1_aa;
|
String line2 = null;
|
||||||
|
String line3 = null;
|
||||||
|
NotificationCompat.CarExtender.UnreadConversation.Builder unreadConversationBuilder = null;
|
||||||
|
|
||||||
if (ConfigBuilderPlugin.getPlugin().getActiveProfileInterface() == null || !ProfileFunctions.getInstance().isProfileValid("Notificiation"))
|
if (ConfigBuilderPlugin.getPlugin().getActiveProfileInterface() != null && ProfileFunctions.getInstance().isProfileValid("Notification")) {
|
||||||
return null;
|
String line1_aa;
|
||||||
String units = ProfileFunctions.getInstance().getProfileUnits();
|
String units = ProfileFunctions.getInstance().getProfileUnits();
|
||||||
|
|
||||||
|
|
||||||
BgReading lastBG = DatabaseHelper.lastBg();
|
BgReading lastBG = DatabaseHelper.lastBg();
|
||||||
GlucoseStatus glucoseStatus = GlucoseStatus.getGlucoseStatusData();
|
GlucoseStatus glucoseStatus = GlucoseStatus.getGlucoseStatusData();
|
||||||
|
|
||||||
if (lastBG != null) {
|
if (lastBG != null) {
|
||||||
line1 = line1_aa = lastBG.valueToUnitsToString(units);
|
line1 = line1_aa = lastBG.valueToUnitsToString(units);
|
||||||
if (glucoseStatus != null) {
|
if (glucoseStatus != null) {
|
||||||
line1 += " Δ" + deltastring(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, units)
|
line1 += " Δ" + deltastring(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, units)
|
||||||
+ " avgΔ" + deltastring(glucoseStatus.avgdelta, glucoseStatus.avgdelta * Constants.MGDL_TO_MMOLL, units);
|
+ " avgΔ" + deltastring(glucoseStatus.avgdelta, glucoseStatus.avgdelta * Constants.MGDL_TO_MMOLL, units);
|
||||||
line1_aa += " " + lastBG.directionToSymbol();
|
line1_aa += " " + lastBG.directionToSymbol();
|
||||||
|
} else {
|
||||||
|
line1 += " " +
|
||||||
|
MainApp.gs(R.string.old_data) +
|
||||||
|
" ";
|
||||||
|
line1_aa += line1 + ".";
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
line1 += " " +
|
line1 = line1_aa = MainApp.gs(R.string.missed_bg_readings);
|
||||||
MainApp.gs(R.string.old_data) +
|
|
||||||
" ";
|
|
||||||
line1_aa += line1 + ".";
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
line1 = line1_aa = MainApp.gs(R.string.missed_bg_readings);
|
TemporaryBasal activeTemp = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(System.currentTimeMillis());
|
||||||
|
if (activeTemp != null) {
|
||||||
|
line1 += " " + activeTemp.toStringShort();
|
||||||
|
line1_aa += " " + activeTemp.toStringShort() + ".";
|
||||||
|
}
|
||||||
|
|
||||||
|
//IOB
|
||||||
|
TreatmentsPlugin.getPlugin().updateTotalIOBTreatments();
|
||||||
|
TreatmentsPlugin.getPlugin().updateTotalIOBTempBasals();
|
||||||
|
IobTotal bolusIob = TreatmentsPlugin.getPlugin().getLastCalculationTreatments().round();
|
||||||
|
IobTotal basalIob = TreatmentsPlugin.getPlugin().getLastCalculationTempBasals().round();
|
||||||
|
|
||||||
|
|
||||||
|
line2 = MainApp.gs(R.string.treatments_iob_label_string) + " " + DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U " + MainApp.gs(R.string.cob) + ": " + IobCobCalculatorPlugin.getPlugin().getCobInfo(false, "PersistentNotificationPlugin").generateCOBString();
|
||||||
|
String line2_aa = MainApp.gs(R.string.treatments_iob_label_string) + " " + DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U. " + MainApp.gs(R.string.cob) + ": " + IobCobCalculatorPlugin.getPlugin().getCobInfo(false, "PersistentNotificationPlugin").generateCOBString() + ".";
|
||||||
|
|
||||||
|
|
||||||
|
line3 = DecimalFormatter.to2Decimal(ConfigBuilderPlugin.getPlugin().getActivePump().getBaseBasalRate()) + " U/h";
|
||||||
|
String line3_aa = DecimalFormatter.to2Decimal(ConfigBuilderPlugin.getPlugin().getActivePump().getBaseBasalRate()) + " U/h.";
|
||||||
|
|
||||||
|
|
||||||
|
line3 += " - " + ProfileFunctions.getInstance().getProfileName();
|
||||||
|
line3_aa += " - " + ProfileFunctions.getInstance().getProfileName() + ".";
|
||||||
|
|
||||||
|
/// For Android Auto
|
||||||
|
Intent msgReadIntent = new Intent()
|
||||||
|
.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES)
|
||||||
|
.setAction(READ_ACTION)
|
||||||
|
.putExtra(CONVERSATION_ID, ONGOING_NOTIFICATION_ID)
|
||||||
|
.setPackage(PACKAGE);
|
||||||
|
|
||||||
|
PendingIntent msgReadPendingIntent =
|
||||||
|
PendingIntent.getBroadcast(ctx,
|
||||||
|
ONGOING_NOTIFICATION_ID,
|
||||||
|
msgReadIntent,
|
||||||
|
PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
|
|
||||||
|
Intent msgReplyIntent = new Intent()
|
||||||
|
.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES)
|
||||||
|
.setAction(REPLY_ACTION)
|
||||||
|
.putExtra(CONVERSATION_ID, ONGOING_NOTIFICATION_ID)
|
||||||
|
.setPackage(PACKAGE);
|
||||||
|
|
||||||
|
PendingIntent msgReplyPendingIntent = PendingIntent.getBroadcast(
|
||||||
|
ctx,
|
||||||
|
ONGOING_NOTIFICATION_ID,
|
||||||
|
msgReplyIntent,
|
||||||
|
PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
|
|
||||||
|
// Build a RemoteInput for receiving voice input from devices
|
||||||
|
RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY).build();
|
||||||
|
|
||||||
|
// Create the UnreadConversation
|
||||||
|
unreadConversationBuilder =
|
||||||
|
new NotificationCompat.CarExtender.UnreadConversation.Builder(line1_aa + "\n" + line2_aa)
|
||||||
|
.setLatestTimestamp(System.currentTimeMillis())
|
||||||
|
.setReadPendingIntent(msgReadPendingIntent)
|
||||||
|
.setReplyAction(msgReplyPendingIntent, remoteInput);
|
||||||
|
|
||||||
|
/// Add dot to produce a "more natural sounding result"
|
||||||
|
unreadConversationBuilder.addMessage(line3_aa);
|
||||||
|
/// End Android Auto
|
||||||
}
|
}
|
||||||
|
|
||||||
TemporaryBasal activeTemp = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(System.currentTimeMillis());
|
|
||||||
if (activeTemp != null) {
|
|
||||||
line1 += " " + activeTemp.toStringShort();
|
|
||||||
line1_aa += " " + activeTemp.toStringShort() + ".";
|
|
||||||
}
|
|
||||||
|
|
||||||
//IOB
|
|
||||||
TreatmentsPlugin.getPlugin().updateTotalIOBTreatments();
|
|
||||||
TreatmentsPlugin.getPlugin().updateTotalIOBTempBasals();
|
|
||||||
IobTotal bolusIob = TreatmentsPlugin.getPlugin().getLastCalculationTreatments().round();
|
|
||||||
IobTotal basalIob = TreatmentsPlugin.getPlugin().getLastCalculationTempBasals().round();
|
|
||||||
|
|
||||||
|
|
||||||
String line2 = MainApp.gs(R.string.treatments_iob_label_string) + " " + DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U " + MainApp.gs(R.string.cob) + ": " + IobCobCalculatorPlugin.getPlugin().getCobInfo(false, "PersistentNotificationPlugin").generateCOBString();
|
|
||||||
String line2_aa = MainApp.gs(R.string.treatments_iob_label_string) + " " + DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U. " + MainApp.gs(R.string.cob) + ": " + IobCobCalculatorPlugin.getPlugin().getCobInfo(false, "PersistentNotificationPlugin").generateCOBString() + ".";
|
|
||||||
|
|
||||||
|
|
||||||
String line3 = DecimalFormatter.to2Decimal(ConfigBuilderPlugin.getPlugin().getActivePump().getBaseBasalRate()) + " U/h";
|
|
||||||
String line3_aa = DecimalFormatter.to2Decimal(ConfigBuilderPlugin.getPlugin().getActivePump().getBaseBasalRate()) + " U/h.";
|
|
||||||
|
|
||||||
|
|
||||||
line3 += " - " + ProfileFunctions.getInstance().getProfileName();
|
|
||||||
line3_aa += " - " + ProfileFunctions.getInstance().getProfileName() + ".";
|
|
||||||
|
|
||||||
/// For Android Auto
|
|
||||||
Intent msgReadIntent = new Intent()
|
|
||||||
.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES)
|
|
||||||
.setAction(READ_ACTION)
|
|
||||||
.putExtra(CONVERSATION_ID, ONGOING_NOTIFICATION_ID)
|
|
||||||
.setPackage(PACKAGE);
|
|
||||||
|
|
||||||
PendingIntent msgReadPendingIntent =
|
|
||||||
PendingIntent.getBroadcast(ctx,
|
|
||||||
ONGOING_NOTIFICATION_ID,
|
|
||||||
msgReadIntent,
|
|
||||||
PendingIntent.FLAG_UPDATE_CURRENT);
|
|
||||||
|
|
||||||
Intent msgReplyIntent = new Intent()
|
|
||||||
.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES)
|
|
||||||
.setAction(REPLY_ACTION)
|
|
||||||
.putExtra(CONVERSATION_ID, ONGOING_NOTIFICATION_ID)
|
|
||||||
.setPackage(PACKAGE);
|
|
||||||
|
|
||||||
PendingIntent msgReplyPendingIntent = PendingIntent.getBroadcast(
|
|
||||||
ctx,
|
|
||||||
ONGOING_NOTIFICATION_ID,
|
|
||||||
msgReplyIntent,
|
|
||||||
PendingIntent.FLAG_UPDATE_CURRENT);
|
|
||||||
|
|
||||||
// Build a RemoteInput for receiving voice input from devices
|
|
||||||
RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY).build();
|
|
||||||
|
|
||||||
// Create the UnreadConversation
|
|
||||||
NotificationCompat.CarExtender.UnreadConversation.Builder unreadConversationBuilder =
|
|
||||||
new NotificationCompat.CarExtender.UnreadConversation.Builder(line1_aa + "\n" + line2_aa)
|
|
||||||
.setLatestTimestamp(System.currentTimeMillis())
|
|
||||||
.setReadPendingIntent(msgReadPendingIntent)
|
|
||||||
.setReplyAction(msgReplyPendingIntent, remoteInput);
|
|
||||||
|
|
||||||
/// Add dot to produce a "more natural sounding result"
|
|
||||||
unreadConversationBuilder.addMessage(line3_aa);
|
|
||||||
/// End Android Auto
|
|
||||||
|
|
||||||
|
|
||||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(ctx, CHANNEL_ID);
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(ctx, CHANNEL_ID);
|
||||||
builder.setOngoing(true);
|
builder.setOngoing(true);
|
||||||
builder.setOnlyAlertOnce(true);
|
builder.setOnlyAlertOnce(true);
|
||||||
|
@ -220,12 +223,14 @@ public class PersistentNotificationPlugin extends PluginBase {
|
||||||
builder.setSmallIcon(MainApp.getNotificationIcon());
|
builder.setSmallIcon(MainApp.getNotificationIcon());
|
||||||
Bitmap largeIcon = BitmapFactory.decodeResource(ctx.getResources(), MainApp.getIcon());
|
Bitmap largeIcon = BitmapFactory.decodeResource(ctx.getResources(), MainApp.getIcon());
|
||||||
builder.setLargeIcon(largeIcon);
|
builder.setLargeIcon(largeIcon);
|
||||||
builder.setContentTitle(line1);
|
builder.setContentTitle(line1 != null ? line1 : MainApp.gs(R.string.noprofileset));
|
||||||
builder.setContentText(line2);
|
builder.setContentText(line2 != null ? line2 : MainApp.gs(R.string.noprofileset));
|
||||||
builder.setSubText(line3);
|
builder.setSubText(line3 != null ? line3 : MainApp.gs(R.string.noprofileset));
|
||||||
/// Android Auto
|
/// Android Auto
|
||||||
builder.extend(new NotificationCompat.CarExtender()
|
if (unreadConversationBuilder != null) {
|
||||||
.setUnreadConversation(unreadConversationBuilder.build()));
|
builder.extend(new NotificationCompat.CarExtender()
|
||||||
|
.setUnreadConversation(unreadConversationBuilder.build()));
|
||||||
|
}
|
||||||
/// End Android Auto
|
/// End Android Auto
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue