fast >>>Loading ...<<< notification on app start
This commit is contained in:
parent
1eff4697fa
commit
4c7b8ef210
4 changed files with 44 additions and 25 deletions
|
@ -31,7 +31,7 @@ public class DummyService extends Service {
|
|||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
super.onStartCommand(intent, flags, startId);
|
||||
startForeground(PersistentNotificationPlugin.ONGOING_NOTIFICATION_ID, PersistentNotificationPlugin.getPlugin().updateNotification());
|
||||
startForeground(PersistentNotificationPlugin.ONGOING_NOTIFICATION_ID, PersistentNotificationPlugin.getPlugin().getLastNotification());
|
||||
return START_STICKY;
|
||||
}
|
||||
|
||||
|
@ -48,8 +48,7 @@ public class DummyService extends Service {
|
|||
super.onCreate();
|
||||
// TODO: I guess this was moved here in order to adhere to the 5 seconds rule to call "startForeground" after a Service was called as Foreground service?
|
||||
// As onCreate() is not called every time a service is started, copied to onStartCommand().
|
||||
Notification notification = PersistentNotificationPlugin.getPlugin().updateNotification();
|
||||
startForeground(PersistentNotificationPlugin.ONGOING_NOTIFICATION_ID, notification);
|
||||
startForeground(PersistentNotificationPlugin.ONGOING_NOTIFICATION_ID, PersistentNotificationPlugin.getPlugin().getLastNotification());
|
||||
MainApp.bus().register(this);
|
||||
}
|
||||
|
||||
|
|
|
@ -89,10 +89,10 @@ public class PersistentNotificationPlugin extends PluginBase {
|
|||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
createNotificationChannel(); // make sure channels exist before triggering updates through the bus
|
||||
MainApp.bus().register(this);
|
||||
triggerNotificationUpdate();
|
||||
super.onStart();
|
||||
triggerNotificationUpdate(true);
|
||||
}
|
||||
|
||||
private void createNotificationChannel() {
|
||||
|
@ -114,21 +114,23 @@ public class PersistentNotificationPlugin extends PluginBase {
|
|||
super.onStop();
|
||||
}
|
||||
|
||||
private void triggerNotificationUpdate() {
|
||||
private void triggerNotificationUpdate(boolean boot) {
|
||||
updateNotification(boot);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
|
||||
MainApp.instance().startForegroundService(new Intent(MainApp.instance(), DummyService.class));
|
||||
else
|
||||
MainApp.instance().startService(new Intent(MainApp.instance(), DummyService.class));
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public Notification updateNotification() {
|
||||
String line1 = null;
|
||||
private void updateNotification(boolean boot) {
|
||||
String line1;
|
||||
String line2 = null;
|
||||
String line3 = null;
|
||||
NotificationCompat.CarExtender.UnreadConversation.Builder unreadConversationBuilder = null;
|
||||
|
||||
if (ConfigBuilderPlugin.getPlugin().getActiveProfileInterface() != null && ProfileFunctions.getInstance().isProfileValid("Notification")) {
|
||||
if (boot) {
|
||||
line1 = MainApp.gs(R.string.loading);
|
||||
} else if (ConfigBuilderPlugin.getPlugin().getActiveProfileInterface() != null && ProfileFunctions.getInstance().isProfileValid("Notification")) {
|
||||
String line1_aa;
|
||||
String units = ProfileFunctions.getInstance().getProfileUnits();
|
||||
|
||||
|
@ -214,6 +216,8 @@ public class PersistentNotificationPlugin extends PluginBase {
|
|||
/// Add dot to produce a "more natural sounding result"
|
||||
unreadConversationBuilder.addMessage(line3_aa);
|
||||
/// End Android Auto
|
||||
} else {
|
||||
line1 = MainApp.gs(R.string.noprofileset);
|
||||
}
|
||||
|
||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(MainApp.instance(), CHANNEL_ID);
|
||||
|
@ -223,9 +227,9 @@ public class PersistentNotificationPlugin extends PluginBase {
|
|||
builder.setSmallIcon(MainApp.getNotificationIcon());
|
||||
Bitmap largeIcon = BitmapFactory.decodeResource(MainApp.instance().getResources(), MainApp.getIcon());
|
||||
builder.setLargeIcon(largeIcon);
|
||||
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));
|
||||
if (line1 != null) builder.setContentTitle(line1);
|
||||
if (line2 != null) builder.setContentText(line2);
|
||||
if (line3 != null) builder.setSubText(line3);
|
||||
/// Android Auto
|
||||
if (unreadConversationBuilder != null) {
|
||||
builder.extend(new NotificationCompat.CarExtender()
|
||||
|
@ -251,7 +255,6 @@ public class PersistentNotificationPlugin extends PluginBase {
|
|||
android.app.Notification notification = builder.build();
|
||||
mNotificationManager.notify(ONGOING_NOTIFICATION_ID, notification);
|
||||
this.notification = notification;
|
||||
return notification;
|
||||
}
|
||||
|
||||
private String deltastring(double deltaMGDL, double deltaMMOL, String units) {
|
||||
|
@ -278,48 +281,50 @@ public class PersistentNotificationPlugin extends PluginBase {
|
|||
|
||||
public Notification getLastNotification() {
|
||||
if (notification != null) return notification;
|
||||
else return new Notification();
|
||||
else {
|
||||
throw new IllegalStateException("Notification is null");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(final EventPreferenceChange ev) {
|
||||
triggerNotificationUpdate();
|
||||
triggerNotificationUpdate(false);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(final EventTreatmentChange ev) {
|
||||
triggerNotificationUpdate();
|
||||
triggerNotificationUpdate(false);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(final EventTempBasalChange ev) {
|
||||
triggerNotificationUpdate();
|
||||
triggerNotificationUpdate(false);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(final EventExtendedBolusChange ev) {
|
||||
triggerNotificationUpdate();
|
||||
triggerNotificationUpdate(false);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(final EventAutosensCalculationFinished ev) {
|
||||
triggerNotificationUpdate();
|
||||
triggerNotificationUpdate(false);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(final EventNewBasalProfile ev) {
|
||||
triggerNotificationUpdate();
|
||||
triggerNotificationUpdate(false);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(final EventInitializationChanged ev) {
|
||||
triggerNotificationUpdate();
|
||||
triggerNotificationUpdate(false);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(final EventRefreshOverview ev) {
|
||||
triggerNotificationUpdate();
|
||||
triggerNotificationUpdate(false);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -11,10 +11,14 @@ import android.os.IBinder;
|
|||
|
||||
import androidx.core.app.ActivityCompat;
|
||||
|
||||
import com.squareup.otto.Subscribe;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.events.EventAppExit;
|
||||
import info.nightscout.androidaps.events.EventLocationChange;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
||||
|
@ -80,14 +84,14 @@ public class LocationService extends Service {
|
|||
super.onStartCommand(intent, flags, startId);
|
||||
if (L.isEnabled(L.LOCATION))
|
||||
log.debug("onStartCommand");
|
||||
startForeground(PersistentNotificationPlugin.ONGOING_NOTIFICATION_ID, PersistentNotificationPlugin.getPlugin().updateNotification());
|
||||
startForeground(PersistentNotificationPlugin.ONGOING_NOTIFICATION_ID, PersistentNotificationPlugin.getPlugin().getLastNotification());
|
||||
return START_STICKY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
startForeground(PersistentNotificationPlugin.ONGOING_NOTIFICATION_ID, PersistentNotificationPlugin.getPlugin().updateNotification());
|
||||
startForeground(PersistentNotificationPlugin.ONGOING_NOTIFICATION_ID, PersistentNotificationPlugin.getPlugin().getLastNotification());
|
||||
|
||||
if (L.isEnabled(L.LOCATION))
|
||||
log.debug("onCreate");
|
||||
|
@ -121,6 +125,7 @@ public class LocationService extends Service {
|
|||
} catch (IllegalArgumentException ex) {
|
||||
log.error("network provider does not exist, " + ex.getMessage());
|
||||
}
|
||||
MainApp.bus().register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -138,6 +143,15 @@ public class LocationService extends Service {
|
|||
log.error("fail to remove location listener, ignore", ex);
|
||||
}
|
||||
}
|
||||
MainApp.bus().unregister(this);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(EventAppExit event) {
|
||||
if (L.isEnabled(L.CORE))
|
||||
log.debug("EventAppExit received");
|
||||
|
||||
stopSelf();
|
||||
}
|
||||
|
||||
private void initializeLocationManager() {
|
||||
|
|
|
@ -1668,6 +1668,7 @@
|
|||
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Bolus constraint applied: %2$.2fU to %3$.2fU</font>]]></string>
|
||||
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Slow carbs absorption detected: %2$d%% of time. Double check your calculation. COB can be really off !!!!!</font>]]></string>
|
||||
<string name="reservoirvalue">%1$.0f / %2$d U</string>
|
||||
<string name="loading">Loading ...</string>
|
||||
|
||||
<plurals name="objective_days">
|
||||
<item quantity="one">%1$d day</item>
|
||||
|
|
Loading…
Reference in a new issue