diff --git a/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java b/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java index 5be35edfe6a0a28c34a650c6627c3c4e7addefbe..c11b1a4c295df7ed346c3129ded40052907797a7 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java +++ b/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java @@ -90,6 +90,8 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc private Realm mRealm; private StatusMessageReceiver statusMessageReceiver = new StatusMessageReceiver(); private MedtronicCnlAlarmReceiver medtronicCnlAlarmReceiver = new MedtronicCnlAlarmReceiver(); + public static long pollInterval = 0; + public static long lowBatteryPollInterval = 0; public static void setActivePumpMac(long pumpMac) { activePumpMac = pumpMac; @@ -416,6 +418,10 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc } } else if (key.equals("mmolxl")) { refreshDisplay(); + } else if (key.equals("pollInterval")) { + String test = sharedPreferences.getString("pollInterval", "5 min"); + } else if (key.equals("lowBatPollInterval")) { + MainActivity.lowBatteryPollInterval = sharedPreferences.getLong("lowBatPollInterval", MedtronicCnlIntentService.LOW_BATTERY_POLL_PERIOD_MS); } } @@ -687,12 +693,12 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc if (pumpStatusData.getBatteryPercentage() > 25) { // poll every 5 min - nextPoll += MedtronicCnlIntentService.POLL_PERIOD_MS; + nextPoll += MainActivity.pollInterval; } else { // if pump battery seems to be empty reduce polling to save battery (every 15 min) //TODO configurable??? //TODO add message & document it - nextPoll += MedtronicCnlIntentService.LOW_BATTERY_POLL_PERIOD_MS; + nextPoll += MainActivity.lowBatteryPollInterval; } startCgmService(nextPoll); @@ -719,7 +725,6 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc // TODO - handle isOffline in NightscoutUploadIntentService? uploadCgmData(); - refreshDisplay(); } } diff --git a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlAlarmReceiver.java b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlAlarmReceiver.java index 49e648c68cc37df7ca643e632c9c76b1457b32f0..1da9df6ec3619cb2a86f80c8b1acc8cb21eca0a3 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlAlarmReceiver.java +++ b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlAlarmReceiver.java @@ -1,15 +1,20 @@ package info.nightscout.android.medtronic.service; +import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Build; +import android.preference.PreferenceManager; import android.support.v4.content.WakefulBroadcastReceiver; import android.util.Log; import java.util.Date; +import info.nightscout.android.medtronic.MainActivity; + /** * Created by lgoedhart on 14/07/2016. */ @@ -20,6 +25,10 @@ public class MedtronicCnlAlarmReceiver extends WakefulBroadcastReceiver { private static PendingIntent pendingIntent = null; private static AlarmManager alarmManager = null; + public MedtronicCnlAlarmReceiver() { + super(); + } + @Override public void onReceive(final Context context, Intent intent) { // Start the IntentService @@ -64,7 +73,7 @@ public class MedtronicCnlAlarmReceiver extends WakefulBroadcastReceiver { // restarting the alarm after MedtronicCnlIntentService.POLL_PERIOD_MS from now public void restartAlarm() { - setAlarm(System.currentTimeMillis() + MedtronicCnlIntentService.POLL_PERIOD_MS + MedtronicCnlIntentService.POLL_GRACE_PERIOD_MS); + setAlarm(System.currentTimeMillis() + MainActivity.pollInterval + MedtronicCnlIntentService.POLL_GRACE_PERIOD_MS); } // Cancel the alarm. diff --git a/app/src/main/res/drawable/battery_0.png b/app/src/main/res/drawable/battery_0.png new file mode 100644 index 0000000000000000000000000000000000000000..16377a564141df832f1bbe472c42ab450173e2a5 Binary files /dev/null and b/app/src/main/res/drawable/battery_0.png differ diff --git a/app/src/main/res/drawable/battery_100.png b/app/src/main/res/drawable/battery_100.png new file mode 100644 index 0000000000000000000000000000000000000000..c8bbc2397dfe7ee2b820b1da644276b9ffbb9cd2 Binary files /dev/null and b/app/src/main/res/drawable/battery_100.png differ diff --git a/app/src/main/res/drawable/battery_25.png b/app/src/main/res/drawable/battery_25.png new file mode 100644 index 0000000000000000000000000000000000000000..92de235a7724a7563dee6021a2822350457dbf0e Binary files /dev/null and b/app/src/main/res/drawable/battery_25.png differ diff --git a/app/src/main/res/drawable/battery_50.png b/app/src/main/res/drawable/battery_50.png new file mode 100644 index 0000000000000000000000000000000000000000..fb037d0011c8cf75f73a0349d8c8e82cb4d613b9 Binary files /dev/null and b/app/src/main/res/drawable/battery_50.png differ diff --git a/app/src/main/res/drawable/battery_75.png b/app/src/main/res/drawable/battery_75.png new file mode 100644 index 0000000000000000000000000000000000000000..f3898daa77f4d66f34cfc452e3f6fb640b537c24 Binary files /dev/null and b/app/src/main/res/drawable/battery_75.png differ diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index 081fb6a44c72e3bf346d38669e5a31de5c89f9c5..04088a880bf29ac40b795fff5b38fcbd175894a2 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -4,6 +4,7 @@ <item android:id="@+id/status_battery" + android:icon="@drawable/battery_unknown" android:orderInCategory="99" app:showAsAction="always" android:title="@string/menu_name_battery_status"/> diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml new file mode 100644 index 0000000000000000000000000000000000000000..d84a02f6bb920f7d4afe27e28ed60ab9cba5f38b --- /dev/null +++ b/app/src/main/res/values/arrays.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string-array name="poll_interval"> + <item>5 min</item> + <item>10 min</item> + <item>12 min</item> + <item>15 min</item> + <item>20 min</item> + <item>30 min</item> + <item>60 min</item> + <!--item>off</item--> + </string-array> + + <string-array name="poll_interval_millis"> + <item>300000</item> + <item>600000</item> + <item>720000</item> + <item>900000</item> + <item>1200000</item> + <item>1800000</item> + <item>3600000</item> + <!--item>0</item--> + </string-array> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7045ebb5bf07e743c80a57420796b46290abf78a..65beeaa82185934f50c924838a501d2f4e794365 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -50,5 +50,8 @@ <string name="dummy_button">Dummy Button</string> <string name="dummy_content">DUMMY\nCONTENT</string> <string name="menu_name_status">Status</string> - <string name="menu_name_battery_status"></string> + <string name="menu_name_battery_status">unknown</string> + + <string name="preferences_poll_interval">poll interval</string> + <string name="preferences_low_battery_poll_interval">poll interval on low pump battery</string> </resources> diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 9e6793c85ec60101ef37b053d3af5d9caefd74b1..c42c9a0faab8db5a821d966e873dd0e1e477c320 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -18,6 +18,20 @@ android:switchTextOff="1" android:switchTextOn="2" android:title="Decimals"/> + <ListPreference + android:key="pollInterval" + android:defaultValue="300000" + android:title="@string/preferences_poll_interval" + android:summary="%s" + android:entries="@array/poll_interval" + android:entryValues="@array/poll_interval_millis"/> + <ListPreference + android:key="lowBatPollInterval" + android:defaultValue="900000" + android:title="@string/preferences_low_battery_poll_interval" + android:summary="%s" + android:entries="@array/poll_interval" + android:entryValues="@array/poll_interval_millis"/> </PreferenceCategory> <PreferenceCategory android:title="Sharing"> <CheckBoxPreference