From bbd26f047d10a9570f665123acc352e278bfb4b8 Mon Sep 17 00:00:00 2001 From: Tebbe Ubben Date: Thu, 20 Jun 2019 23:22:10 +0200 Subject: [PATCH] Also show notification when no profile is set --- .../PersistentNotificationPlugin.java | 177 +++++++++--------- 1 file changed, 90 insertions(+), 87 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.java index d4f8688e58..8ce1ba7a1a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.java @@ -10,6 +10,7 @@ import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Build; + import androidx.core.app.NotificationCompat; import androidx.core.app.RemoteInput; import androidx.core.app.TaskStackBuilder; @@ -122,97 +123,99 @@ public class PersistentNotificationPlugin extends PluginBase { return null; } - String line1; - String line1_aa; + String line1 = null; + String line2 = null; + String line3 = null; + NotificationCompat.CarExtender.UnreadConversation.Builder unreadConversationBuilder = null; - if (ConfigBuilderPlugin.getPlugin().getActiveProfileInterface() == null || !ProfileFunctions.getInstance().isProfileValid("Notificiation")) - return null; - String units = ProfileFunctions.getInstance().getProfileUnits(); + if (ConfigBuilderPlugin.getPlugin().getActiveProfileInterface() != null && ProfileFunctions.getInstance().isProfileValid("Notification")) { + String line1_aa; + String units = ProfileFunctions.getInstance().getProfileUnits(); - BgReading lastBG = DatabaseHelper.lastBg(); - GlucoseStatus glucoseStatus = GlucoseStatus.getGlucoseStatusData(); + BgReading lastBG = DatabaseHelper.lastBg(); + GlucoseStatus glucoseStatus = GlucoseStatus.getGlucoseStatusData(); - if (lastBG != null) { - line1 = line1_aa = lastBG.valueToUnitsToString(units); - if (glucoseStatus != null) { - line1 += " Δ" + deltastring(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, units) - + " avgΔ" + deltastring(glucoseStatus.avgdelta, glucoseStatus.avgdelta * Constants.MGDL_TO_MMOLL, units); - line1_aa += " " + lastBG.directionToSymbol(); + if (lastBG != null) { + line1 = line1_aa = lastBG.valueToUnitsToString(units); + if (glucoseStatus != null) { + line1 += " Δ" + deltastring(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, units) + + " avgΔ" + deltastring(glucoseStatus.avgdelta, glucoseStatus.avgdelta * Constants.MGDL_TO_MMOLL, units); + line1_aa += " " + lastBG.directionToSymbol(); + } else { + line1 += " " + + MainApp.gs(R.string.old_data) + + " "; + line1_aa += line1 + "."; + } } else { - line1 += " " + - MainApp.gs(R.string.old_data) + - " "; - line1_aa += line1 + "."; + line1 = line1_aa = MainApp.gs(R.string.missed_bg_readings); } - } 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); builder.setOngoing(true); builder.setOnlyAlertOnce(true); @@ -220,11 +223,11 @@ public class PersistentNotificationPlugin extends PluginBase { builder.setSmallIcon(MainApp.getNotificationIcon()); Bitmap largeIcon = BitmapFactory.decodeResource(ctx.getResources(), MainApp.getIcon()); builder.setLargeIcon(largeIcon); - builder.setContentTitle(line1); - builder.setContentText(line2); - builder.setSubText(line3); + builder.setContentTitle(line1 != null ? line1 : MainApp.gs(R.string.noprofileset)); + builder.setContentText(line2 != null ? line2 : MainApp.gs(R.string.noprofileset)); + builder.setSubText(line3 != null ? line3 : MainApp.gs(R.string.noprofileset)); /// Android Auto - builder.extend(new NotificationCompat.CarExtender() + if (unreadConversationBuilder != null) builder.extend(new NotificationCompat.CarExtender() .setUnreadConversation(unreadConversationBuilder.build())); /// End Android Auto