From d597be71deb20d756843dc29458e4358b5ffd2dc Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 24 Dec 2016 01:19:12 +0100 Subject: [PATCH 1/3] ongoing notification --- .../PersistentNotificationFragment.java | 14 + .../PersistentNotificationPlugin.java | 248 ++++++++++++++++++ .../res/drawable-hdpi-v11/ic_notification.png | Bin 0 -> 972 bytes .../res/drawable-hdpi-v9/ic_notification.png | Bin 0 -> 907 bytes .../res/drawable-hdpi/ic_notification.png | Bin 0 -> 1399 bytes .../res/drawable-mdpi-v11/ic_notification.png | Bin 0 -> 569 bytes .../res/drawable-mdpi-v9/ic_notification.png | Bin 0 -> 506 bytes .../res/drawable-mdpi/ic_notification.png | Bin 0 -> 836 bytes .../drawable-xhdpi-v11/ic_notification.png | Bin 0 -> 1351 bytes .../res/drawable-xhdpi-v9/ic_notification.png | Bin 0 -> 1326 bytes .../res/drawable-xhdpi/ic_notification.png | Bin 0 -> 1927 bytes .../drawable-xxhdpi-v11/ic_notification.png | Bin 0 -> 2109 bytes .../drawable-xxhdpi-v9/ic_notification.png | Bin 0 -> 2054 bytes .../res/drawable-xxhdpi/ic_notification.png | Bin 0 -> 1621 bytes app/src/main/res/drawable/notif_icon.png | Bin 0 -> 4847 bytes 15 files changed, 262 insertions(+) create mode 100644 app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationFragment.java create mode 100644 app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java create mode 100644 app/src/main/res/drawable-hdpi-v11/ic_notification.png create mode 100644 app/src/main/res/drawable-hdpi-v9/ic_notification.png create mode 100644 app/src/main/res/drawable-hdpi/ic_notification.png create mode 100644 app/src/main/res/drawable-mdpi-v11/ic_notification.png create mode 100644 app/src/main/res/drawable-mdpi-v9/ic_notification.png create mode 100644 app/src/main/res/drawable-mdpi/ic_notification.png create mode 100644 app/src/main/res/drawable-xhdpi-v11/ic_notification.png create mode 100644 app/src/main/res/drawable-xhdpi-v9/ic_notification.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_notification.png create mode 100644 app/src/main/res/drawable-xxhdpi-v11/ic_notification.png create mode 100644 app/src/main/res/drawable-xxhdpi-v9/ic_notification.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_notification.png create mode 100644 app/src/main/res/drawable/notif_icon.png diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationFragment.java new file mode 100644 index 0000000000..6834124167 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationFragment.java @@ -0,0 +1,14 @@ +package info.nightscout.androidaps.plugins.persistentnotification; + +import android.support.v4.app.Fragment; + +import info.nightscout.androidaps.interfaces.FragmentBase; + +/** + * Created by adrian on 23/12/16. + */ + +public class PersistentNotificationFragment extends Fragment implements FragmentBase { + + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java new file mode 100644 index 0000000000..aa5eaecb74 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java @@ -0,0 +1,248 @@ +package info.nightscout.androidaps.plugins.persistentnotification; + +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.support.v4.app.TaskStackBuilder; +import android.support.v7.app.NotificationCompat; + +import com.squareup.otto.Subscribe; + +import info.nightscout.androidaps.Constants; +import info.nightscout.androidaps.MainActivity; +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.R; +import info.nightscout.androidaps.db.BgReading; +import info.nightscout.androidaps.db.DatabaseHelper; +import info.nightscout.androidaps.db.TempBasal; +import info.nightscout.androidaps.events.EventNewBG; +import info.nightscout.androidaps.events.EventNewBasalProfile; +import info.nightscout.androidaps.events.EventPreferenceChange; +import info.nightscout.androidaps.events.EventTempBasalChange; +import info.nightscout.androidaps.events.EventTreatmentChange; +import info.nightscout.androidaps.interfaces.PluginBase; +import info.nightscout.androidaps.interfaces.PumpInterface; +import info.nightscout.androidaps.plugins.OpenAPSMA.IobTotal; +import info.nightscout.androidaps.plugins.Overview.Notification; +import info.nightscout.client.data.NSProfile; +import info.nightscout.utils.DecimalFormatter; + +/** + * Created by adrian on 23/12/16. + */ + +public class PersistentNotificationPlugin implements PluginBase{ + + private static final int ONGOING_NOTIFICATION_ID = 4711; + static boolean fragmentEnabled = false; + private final Context ctx; + + public PersistentNotificationPlugin(Context ctx) { + this.ctx = ctx; + } + + + @Override + public int getType() { + return GENERAL; + } + + @Override + public String getFragmentClass() { + return PersistentNotificationFragment.class.getName(); + } + + @Override + public String getName() { + return "Persistent Notification"; + } + + @Override + public boolean isEnabled(int type) { + return fragmentEnabled; + } + + @Override + public boolean isVisibleInTabs(int type) { + return false; + } + + @Override + public boolean canBeHidden(int type) { + return true; + } + + @Override + public void setFragmentEnabled(int type, boolean fragmentEnabled) { + + if(getType() == type){ + this.fragmentEnabled = fragmentEnabled; + checkBusRegistration(); + updateNotification(); + } + + } + + private void updateNotification() { + + if(!fragmentEnabled){ + NotificationManager mNotificationManager = + (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE); + mNotificationManager.cancel(ONGOING_NOTIFICATION_ID); + return; + } + + NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); + if(profile == null) return; + + BgReading lastBG = MainApp.getDbHelper().lastBg(); + if(lastBG == null) return; + + DatabaseHelper.GlucoseStatus glucoseStatus = MainApp.getDbHelper().getGlucoseStatusData(); + + String line1 = lastBG.valueToUnitsToString(profile.getUnits()); + + if (glucoseStatus != null) { + line1 += " Δ" + deltastring(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, profile.getUnits()) + + " avgΔ" + deltastring(glucoseStatus.avgdelta, glucoseStatus.avgdelta * Constants.MGDL_TO_MMOLL, profile.getUnits()); + } else { + line1 += " OLD DATA "; + } + + PumpInterface pump = MainApp.getConfigBuilder(); + + if (pump.isTempBasalInProgress()) { + TempBasal activeTemp = pump.getTempBasal(); + line1 += " " + activeTemp.toStringShort(); + } + + //IOB + MainApp.getConfigBuilder().getActiveTreatments().updateTotalIOB(); + IobTotal bolusIob = MainApp.getConfigBuilder().getActiveTreatments().getLastCalculation().round(); + if (bolusIob == null) bolusIob = new IobTotal(); + MainApp.getConfigBuilder().getActiveTempBasals().updateTotalIOB(); + IobTotal basalIob = MainApp.getConfigBuilder().getActiveTempBasals().getLastCalculation().round(); + if (basalIob == null) basalIob = new IobTotal(); + String line2 = ctx.getString(R.string.treatments_iob_label_string) + " " + DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U (" + + ctx.getString(R.string.bolus) + ": " + DecimalFormatter.to2Decimal(bolusIob.iob) + "U " + + ctx.getString(R.string.basal) + ": " + DecimalFormatter.to2Decimal(basalIob.basaliob) + "U)"; + + + String line3 = DecimalFormatter.to2Decimal(pump.getBaseBasalRate()) + " U/h"; + + + if (profile.getActiveProfile() != null) + line3 += " - " + profile.getActiveProfile(); + + + + + NotificationCompat.Builder builder = new NotificationCompat.Builder(ctx); + builder.setOngoing(true); + builder.setCategory(NotificationCompat.CATEGORY_STATUS); + builder.setSmallIcon(R.drawable.ic_notification); + Bitmap largeIcon = BitmapFactory.decodeResource(ctx.getResources(), R.mipmap.ic_launcher); + builder.setLargeIcon(largeIcon); + builder.setContentTitle(line1); + builder.setContentText(line2); + builder.setSubText(line3); + + Intent resultIntent = new Intent(ctx, MainActivity.class); + + TaskStackBuilder stackBuilder = TaskStackBuilder.create(ctx); + stackBuilder.addParentStack(MainActivity.class); + stackBuilder.addNextIntent(resultIntent); + PendingIntent resultPendingIntent = + stackBuilder.getPendingIntent( + 0, + PendingIntent.FLAG_UPDATE_CURRENT + ); + builder.setContentIntent(resultPendingIntent); + NotificationManager mNotificationManager = + (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE); + + android.app.Notification notification = builder.build(); + notification.contentView.setImageViewResource(android.R.id.icon, R.mipmap.ic_launcher); + mNotificationManager.notify(ONGOING_NOTIFICATION_ID, notification); + + } + + private void checkBusRegistration() { + if(fragmentEnabled){ + MainApp.bus().register(this); + } else { + MainApp.bus().unregister(this); + } + } + + @Override + public void setFragmentVisible(int type, boolean fragmentVisible) { + //no visible fragment + } + + + private String slopeArrow(double delta) { + if (delta <= (-3.5*5)) { + return "\u21ca"; + } else if (delta <= (-2*5)) { + return "\u2193"; + } else if (delta <= (-1*5)) { + return "\u2198"; + } else if (delta <= (1*5)) { + return "\u2192"; + } else if (delta <= (2*5)) { + return "\u2197"; + } else if (delta <= (3.5*5)) { + return "\u2191"; + } else { + return "\u21c8"; + } + } + + private String deltastring(double deltaMGDL, double deltaMMOL, String units) { + String deltastring = ""; + if (deltaMGDL >=0){ + deltastring += "+"; + } else{ + deltastring += "-"; + + } + if (units.equals(Constants.MGDL)){ + deltastring += DecimalFormatter.to1Decimal(Math.abs(deltaMGDL)); + } + else { + deltastring += DecimalFormatter.to1Decimal(Math.abs(deltaMMOL)); + } + return deltastring; + } + + + @Subscribe + public void onStatusEvent(final EventPreferenceChange ev) { + updateNotification(); + } + + @Subscribe + public void onStatusEvent(final EventTreatmentChange ev) { + updateNotification(); + } + + @Subscribe + public void onStatusEvent(final EventTempBasalChange ev) { + updateNotification(); + } + + @Subscribe + public void onStatusEvent(final EventNewBG ev) { + updateNotification(); + } + + @Subscribe + public void onStatusEvent(final EventNewBasalProfile ev) { + updateNotification(); + } + +} diff --git a/app/src/main/res/drawable-hdpi-v11/ic_notification.png b/app/src/main/res/drawable-hdpi-v11/ic_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..1e28cbeb7a2da8778f95ec40d25237a14cc16bd8 GIT binary patch literal 972 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_notification.png b/app/src/main/res/drawable-mdpi/ic_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..c19b973e2ac2e901c314c813b38c626dbb8638e9 GIT binary patch literal 836 zcmV-K1H1f*P)P000>X1^@s6#OZ}&0009ENklhx6A_xop($Y@ITRKw`0_a=#UMF^VZmxJXv!fG3$e44F*Ca{7Iw^LQe$I@ zk| zxFc%yvxI)J4j#?T%^Ihtr?A;69y}cd1y}h`( zxsgviIXS7pL+9i-LD2)iKtE+IiTqrFq z#n#pq-rn9cbFNuq&+T@LRzFMVr-bC^=cAyYK%=_48lg}~KGo3B5E>d9 zN=Q~#7Qa2C;1hCxe=k2fJ3Fztxhc2n{QO)FHy8{`@ADj?pAwRmmWGUs428wTMI0O) z$o3x|9`N+^gxcC#_8Q^+ElR;)k5LBsJ@UBy&!) zMPiczUl4~jmA-`{6`@i@VGgRLQ(L;+{{D{rp7`-}Z|>#(@BWDo{J8g?=RD`0^W5h- z&pGEN5_j5d(o(6^Xy6TCAMic!XX@|P415RdWq(1YDP95`Pj##re@S;MJ{;H|pq$Nq zEwBk#18m^)4*|UPwT5?x@>76cMUf^dT5yYT4+C!l7iH`(z!PyQKNGkr3RDAwLU^-6 z=!1amBE#gB#-aQq*_?Kr=k<>V-UUtomw-0l3UHE3s>tJi){{3Woyyy+{VX#!UHbBY zgYDeF#+N5!XUG>l2i%h`18PKxg+hM{xZFW6WM5~N$XFzOJJX^3crFKPyFBIpN_DQ; zxTi(dZqn^Ng;5*u35EXw3?r=%@G?+r-UpZfECG&%C|nOL=43p?aj%#ham&r*-5sU! z_W~^xyt$oYN`c=v#;!BlIqrRqX$kXeoiX4=nZ?3@!|YYyEnu0=tn@t!`~-{<+9=?4 zpqyWCNWfD4*FNj20Xr$sJWx{TruaLIfwF)c;7wqyz*vmcIa`if1-%?#-xc`jrI~kP$zf<6P&!xIqE@XHxRr+_x z=CsXTEq&9-KTc-7M*27KeT`8W&`N%dL#}PkQ`$q^|%T^bBZ?%77~rxR%cY zfsdrWnnoT1dXrY}4k=t`+Xm+ST|gcAw~368Wy4pv(>f{xTpV8|w6k73(_8Kb(33a= z%7F7u!2o{yil@B^xtUi)Wx!DiJnX&XTl4Dyhh9DT)c|Xs`-c;iH#u8{=Em1YWk4kb zHVEx;34v>QkbTI+CgmA0TWGf7KOldtM4`nZ+a*d{qB3BKD3B}k!?y_5f(!_1hrE;8 zwZ%~xFeW67&SzL0)+(8>RQ?A~led>NYTe}C^sr-IjHX`E%;h7$_0X-y2JTCO1 z9$yiY_Y?dot@J!!GR7I}@eh^zFC;JSk&d)-jm%JyloKr#%;})4`{_pW`8+{nm!~VK z9|m0GOZIsAf~A66fQez7kIrBs`I;t7YsFnf=^2s&nrJoVI{oJn-si~iMShHI#Pl;i(Ljwt*F6MzQO&-U{3A& zFZ($~+(s-ACF{g}7E7%EPuZL&`VkqkC=>pXY1Mk2x0GztJ|nb^!dsImKl!qGc)9)X zyyg;ezfhF_%8zQh+lV|V=3e#xd0Ej*4#38sXfzXym?BDEl*(I?oC()r{h`+hBc78= zUL(`V3$9RQDP|(m8_VZG?X|@Jr9s)bz&Fg7ZG+EE+-bLIy8&}sY#O5002ov JPDHLkV1mz=mm&ZF literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi-v9/ic_notification.png b/app/src/main/res/drawable-xhdpi-v9/ic_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..b779bd40909e259ff1df13ac1daac6d22dc1bdb7 GIT binary patch literal 1326 zcmV+}1=0G6P)|7KgAQbyMuButp&&Y7Cljp?9!g!giar!Vh(kXPc0TXj-W^(VErLEQ zp`<<}S_-q!g^HyF3zs!h`({~&YwqdytNVe6b>P{YeR^-WxS#8AU)TS-uKT{9=Y6M5 z%Z=Q~joiqMl%uq?^un&Lt|#93YkUcvf{(&{K%si=raX9OXXjJ+Kh)ON7G*M-sJXd$ zw4tHld+00Zh`e(3+O@a0FPxIVIJ<=49Xf7mY8q>7Z2Sm%8vcr;T}@5RmG$-Y&j98_ z?X-8D>(428M@Pq&mX?+X$A<~uDVv<*`UOVmU>gv95JpfuK9Gnt9Zchn*1iH?RMUY11W0Y9=-$=Q7 z`rn|v>s*f?!9A8bcoan!;OKx(Ddi)|aQZqW-9lEIkstae0MJ3`J?uUp;5yf_et|lw zv|qoe0Fdd!EQ|>DaT3(HO*aqyK1jR01erTNiTD})R{fF0L#Y6OHmhSwx-`*}C+X!Y zIC&XbNr^A^Bw*L=+}GE45x|$DD<=Dwm>-ST5`3BdaNCj!02{~5?DaLF{A&p^KLO@u zWEBRLcZM&c^fx7J<^$wapY@|Z{O(N!fOGy63x<8}?(QyR;R>I*<(60lHyEDo zeTgrkysE0IN_3~k1&rxes4CusVI$rj0B)Pm+Yq#?bV@be4zJ-^RwjPc0%Q%8fqJoP zf}ZDjdbpTwVB-~r6Y`FJ^fw^@1iO@l$60s=C%4G6C-&obqXGWqC1&7_*zMDvp5IFO zNAPn@e!|}bWK;sV8N0(}vO1iGQA)cm-1&>)-!-Um^=!CR;TG+2Jr!F&*-x^|aqt6G z81kZ9th-JEyN=vmxLoW=O!2#Ow9}oS#J(#Z*yI@nYEd8w7^z)6`!<|24|W z%4Xv1=ddB?hId3mGC0|83iri4?U0>fUBQ(7Fu~yq2BH;*xf`attKoNr%=_iZd+!=6yi$_nrOrr#jo!Yj?hW8|D#kxBVs9o5_6wzezdzJ;|GJ z$_LkKK0$`U>$=+DevrrqdH#9-l}wpu6YPZNpUdV)XL&Z=tpDw&Iw0;O;O7J$q356R kd`IpNjNHhL+?ee61N(AoaJ@3uh5!Hn07*qoM6N<$f~7&7I{*Lx literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_notification.png b/app/src/main/res/drawable-xhdpi/ic_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..9eb0dcf193b666e02f0149d3b3ecfec12fc74847 GIT binary patch literal 1927 zcmXAqdmz*M8^)ezoo~~gcc+9hG zfsGXMI7ODP$7xo&A671Y$!xOJW_%cq>4|MElACdEItYh*0#1N|-nyTYYhXO`NS zgp6wCTg9~w7MgFAh^q?{m4wqF(bp#${WvEPgq#poMaZ15IBgo@Tzhi1H&f5a(J_b5 z=a)(d@11*FM_}~y^ylchUSDKai~03uL$iyD3}U`~$Q>PZ+1}f2OEL*R2iIn-_%slThe+!)vWX;@h`#BPE|$mClM>=IhwC@-0cmv4qO8Cz3}`-MF-! zO!9g;kSeERevjzP|5HlI zuy2{uQWT6tBAb1?4$KV|;IK^7mhR(w69)xk3zMM1$P5(&bty4<=q)wyZ|Itc{yp6b~W)K90|>8?Fx`tWm99sj4jf^;dam)#i+dp3x>;rf zQFF*rBQ)`r#bd9kDO+Hx0NWqmzM!LmM~X?zVP!`4Oy=cOb}~fnmz)q)7_LqscwF~m z9#7iu=Gh;ju)uQab*!N7Ts<^<{<&!wd06&u>1AFU+M@wOvXQojMu08_#aP4&N*4hE z5d?M1nmFa;rX#($7CDgsoe5$V;bydZ+b)?3ST>8riZ&Zq8Z3gLw^kBih{fa4)PTZL;o2-hZF0y8sH}>SI7F6w0Kf4$^J#yChqP(PK#^CIQX2UvnS;9-}W1ato}=EXB_>-+lq^u#^LST}g-H`zQNl2%kws+EOF z!;Y=*d<}Ct_0A^GNekfaJ!W0Ju4PTji1Z1_oSSJT4zz_YdDk4H|C1 zPK^95*6W*gB0oR>XFAwLHj+;9>v^OYy2-9~MX4T)*Cy{TcwV^hfVIE5z~WNxZAYR1 zUu6s2a@7Yev*Z5#p(`KhceQz~(JV8tbNWbrb z87}Vgpt5HxwpwM!)w;M0?szE}aau$B8Ptd>qK15vS1tq18`qOXCT9!nESsTd;8YNHC77WrQq zYOlnSfD$-Q5X8a`RUufNuI%HS&bF@}Dpza@Bt=#Xa^D%jio zp;)NNv4ilI#v8&^eO!c1l0Xk=>FYb@(vm1Un+vW`AWD<)0OVR8Z4qs3p>LYfo-vc< zBoZ}K#WY(Wi0J5?Q%2#Q9)c-_^Wh!w&rYhx_7ZxsiEOt* z$ZEgz?Nzy-A0}8vrOHLq*F3V)w|}t2+Gnya-aJ@mqetE*HT`la4g{#gZt(HRJs`o+ zCq!)jW9ZN2gl_Y@Pd9%Wm;eD)a%sR=y4Og*I`OMkt~c#ffa`@=56+rMU4S@5?!VK4 zai9|!)H&t;FssAZOaw5O5?1RHnAl|CMV&{0SLbtN5KTOrGicJLWhpkD3TL2 z02e7KDLGLS-}k@7w z6H&tm#jaNF+OQ;S{@!t(W?L?ebr z%QvCu%5ol6@lMP&gn5KZE;oCDu%GY)VJ+c1!mot$F7?>%973&lB&UnRtHgwSO&CIG zNhoh)qrAM9&l0kwp53eWU_6mClJJjmBPR&25U!2TZf(NLgyV{BZf|6)6H|sT-DbqR zNl1=TJIP}2qSDq3?nkT=G)3v~9zrXJIu&IJe}eELVJu-3VIbiSLM4Z~Z3w?8ZBC0t za-O$YX{sr@2Ipy>7{?2B+|=X&Xi z%?gAsK$rWI8Vls`eDE7|?puC!lqLVGDEUB3aA}uUbv5X*>rgdlg5HKs<#`T0lggo|-pxt+&-kc!FsSl&)6rm>Qv?5$*Q$K|;jIh^*6kf(N z2n}rPG$gc!YqbccVHDN%o1oEfBNHREQ(n>;e}g^#{erf%d$cnXRS*PXoAc?TL`NNlQi#|uH8*2Al#*t@nkt&_^ zN~T`~tpVSs5|neKJ;kFfe*I?HlyPMKhDSS73FF~fW$=ks`$f=x({omQpBx-q!Okkv9r25xkOM)V5*`4LS(CI`CLrggU5fwFM@WODF-O)A#==iO1-MewR$q? zBSE|^be79K+G!|rR9Cp3Z}fG$Uj!|O&ATg&vYO(1taD1Z8>!Op9H9}!vO-JU+Bl}1 zUAPMJ)uvdKENpB z*W?4jW3tNhlZpH+=9!f_$dm$!x%!Ho{$kg((+_M61RF#BBB&!YJXP_I^NN~?cOl44 zauu&T6LeDjA}ASRoXv_(|03RC7Svx_#QJ@dK5T=S(Z3xIYV0Ry{AwsKQ^ZlQnJ0Uh zxRWGz6cM@7esy?=Tm8-`;x=ao7zyveZMJG&x=uiR^KD2u2&(P_JuH1aX9Y1Xi;Y)KTh{6QZ&_9Dga0lOjE| zW5Bp?M!#=>)$4Gidu!1mX(HSZW)s=-z29Xn3m>2wAqn{5;zzZ1nmgniWG}e(7W8L= z6{N@$D})I#8MbYXN?1@QN^RDaEv3WejtB>;FgX|cwio8o;YIM&Fefw2h|8usZT7je z(^Tq*4{6Eh$#>eX z3!0>r(7CZt-rHspeiiik$jzT|nY`1Loe@)(S+OL1*Z?|s#>@ptY_>*;z>~ni^O6Nv zZSJ)4(HK|_FU8d8F*^FClY_>dFMM9m&1DYJi}%Cz%R5W29^W zTu)JwXkK2)jxaZ!5A4WYgi-!Z)0dHS#xmtJT9yZLegs?WL+uVUYL76Pb`U!K8t9aD ziJde#rySTE2RetM^|?bylk}+atwt+{rTmx&f}VkTZIr|7y{vcLkg=p<`At)(NVuoR5A-$=mF9A!oO83T+nX{Nej4))IQv{+Bb7rT>%-Iefjj2ZuA= zidT^!6>qw!l2ENp$%aXWr1>tRu|~00000NkvXXu0mjfT^Izv literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi-v9/ic_notification.png b/app/src/main/res/drawable-xxhdpi-v9/ic_notification.png new file mode 100644 index 0000000000000000000000000000000000000000..b3cd107f7866cd193cad8b7e7ad038d2b91acecc GIT binary patch literal 2054 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 T_1M#600000NkvXXu0mjfVeI*c literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/notif_icon.png b/app/src/main/res/drawable/notif_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1b89799dc6619a2d08386f6b3d8a041c80f55ece GIT binary patch literal 4847 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 YtK)94K;zXZcr^vlRMk=Wq+}ibKUMEmL;wH) literal 0 HcmV?d00001 From 4afd2295f89180311d899d6ce48d2859b1b9f610 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Tue, 27 Dec 2016 23:34:30 +0100 Subject: [PATCH 2/3] Ongoing Notification 2 --- .../PersistentNotificationPlugin.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java index aa5eaecb74..70404c9332 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java @@ -18,9 +18,11 @@ import info.nightscout.androidaps.R; import info.nightscout.androidaps.db.BgReading; import info.nightscout.androidaps.db.DatabaseHelper; import info.nightscout.androidaps.db.TempBasal; +import info.nightscout.androidaps.events.EventInitializationChanged; import info.nightscout.androidaps.events.EventNewBG; import info.nightscout.androidaps.events.EventNewBasalProfile; import info.nightscout.androidaps.events.EventPreferenceChange; +import info.nightscout.androidaps.events.EventRefreshGui; import info.nightscout.androidaps.events.EventTempBasalChange; import info.nightscout.androidaps.events.EventTreatmentChange; import info.nightscout.androidaps.interfaces.PluginBase; @@ -95,21 +97,22 @@ public class PersistentNotificationPlugin implements PluginBase{ return; } + + String line1 = ctx.getString(R.string.noprofile); NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); - if(profile == null) return; + BgReading lastBG = MainApp.getDbHelper().lastBg(); - if(lastBG == null) return; - DatabaseHelper.GlucoseStatus glucoseStatus = MainApp.getDbHelper().getGlucoseStatusData(); - String line1 = lastBG.valueToUnitsToString(profile.getUnits()); - + if(profile != null && lastBG != null) { + line1 = lastBG.valueToUnitsToString(profile.getUnits()); + } if (glucoseStatus != null) { line1 += " Δ" + deltastring(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, profile.getUnits()) + " avgΔ" + deltastring(glucoseStatus.avgdelta, glucoseStatus.avgdelta * Constants.MGDL_TO_MMOLL, profile.getUnits()); } else { - line1 += " OLD DATA "; + // line1 += " OLD DATA "; } PumpInterface pump = MainApp.getConfigBuilder(); @@ -134,7 +137,7 @@ public class PersistentNotificationPlugin implements PluginBase{ String line3 = DecimalFormatter.to2Decimal(pump.getBaseBasalRate()) + " U/h"; - if (profile.getActiveProfile() != null) + if (profile != null && profile.getActiveProfile() != null) line3 += " - " + profile.getActiveProfile(); @@ -165,7 +168,6 @@ public class PersistentNotificationPlugin implements PluginBase{ (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE); android.app.Notification notification = builder.build(); - notification.contentView.setImageViewResource(android.R.id.icon, R.mipmap.ic_launcher); mNotificationManager.notify(ONGOING_NOTIFICATION_ID, notification); } @@ -245,4 +247,14 @@ public class PersistentNotificationPlugin implements PluginBase{ updateNotification(); } + @Subscribe + public void onStatusEvent(final EventInitializationChanged ev) { + updateNotification(); + } + + @Subscribe + public void onStatusEvent(final EventRefreshGui ev) { + updateNotification(); + } + } From 6ac889cecd6e25a291b2756de22bde054a65f927 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Wed, 28 Dec 2016 00:03:08 +0100 Subject: [PATCH 3/3] ongoing notification integration --- .../info/nightscout/androidaps/MainApp.java | 2 ++ .../PersistentNotificationPlugin.java | 29 ++++--------------- app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 9 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/MainApp.java b/app/src/main/java/info/nightscout/androidaps/MainApp.java index e2e7eabd89..b647e9b6d1 100644 --- a/app/src/main/java/info/nightscout/androidaps/MainApp.java +++ b/app/src/main/java/info/nightscout/androidaps/MainApp.java @@ -39,6 +39,7 @@ import info.nightscout.androidaps.plugins.TempBasals.TempBasalsFragment; import info.nightscout.androidaps.plugins.Treatments.TreatmentsFragment; import info.nightscout.androidaps.plugins.VirtualPump.VirtualPumpFragment; import info.nightscout.androidaps.plugins.Wear.WearFragment; +import info.nightscout.androidaps.plugins.persistentnotification.PersistentNotificationPlugin; import info.nightscout.androidaps.receivers.KeepAliveReceiver; import io.fabric.sdk.android.Fabric; @@ -93,6 +94,7 @@ public class MainApp extends Application { pluginsList.add(SmsCommunicatorFragment.getPlugin()); if (Config.WEAR) pluginsList.add(WearFragment.getPlugin(this)); + pluginsList.add(new PersistentNotificationPlugin(this)); pluginsList.add(sConfigBuilder = ConfigBuilderFragment.getPlugin()); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java index 70404c9332..dffe461ead 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java @@ -59,7 +59,7 @@ public class PersistentNotificationPlugin implements PluginBase{ @Override public String getName() { - return "Persistent Notification"; + return ctx.getString(R.string.ongoingnotificaction); } @Override @@ -112,7 +112,9 @@ public class PersistentNotificationPlugin implements PluginBase{ line1 += " Δ" + deltastring(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, profile.getUnits()) + " avgΔ" + deltastring(glucoseStatus.avgdelta, glucoseStatus.avgdelta * Constants.MGDL_TO_MMOLL, profile.getUnits()); } else { - // line1 += " OLD DATA "; + line1 += " " + + ctx.getString(R.string.old_data) + + " "; } PumpInterface pump = MainApp.getConfigBuilder(); @@ -139,9 +141,7 @@ public class PersistentNotificationPlugin implements PluginBase{ if (profile != null && profile.getActiveProfile() != null) line3 += " - " + profile.getActiveProfile(); - - - + NotificationCompat.Builder builder = new NotificationCompat.Builder(ctx); builder.setOngoing(true); @@ -185,25 +185,6 @@ public class PersistentNotificationPlugin implements PluginBase{ //no visible fragment } - - private String slopeArrow(double delta) { - if (delta <= (-3.5*5)) { - return "\u21ca"; - } else if (delta <= (-2*5)) { - return "\u2193"; - } else if (delta <= (-1*5)) { - return "\u2198"; - } else if (delta <= (1*5)) { - return "\u2192"; - } else if (delta <= (2*5)) { - return "\u2197"; - } else if (delta <= (3.5*5)) { - return "\u2191"; - } else { - return "\u21c8"; - } - } - private String deltastring(double deltaMGDL, double deltaMMOL, String units) { String deltastring = ""; if (deltaMGDL >=0){ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 87b200db28..ab184438f9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -387,4 +387,6 @@ BG: Last BG: MDI + Ongoing Notification + OLD DATA