Skip to content

Commit 4e9a0ee

Browse files
authored
Merge pull request #4014 from Navid200/Navid_2025_05_20
Override Silent Mode to reduce dependence on notification channels
2 parents 048bcc2 + 0842dab commit 4e9a0ee

File tree

6 files changed

+48
-2
lines changed

6 files changed

+48
-2
lines changed

app/src/main/java/com/eveningoutpost/dexdrip/MissedReadingActivity.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public class MissedReadingActivity extends ActivityWithMenu {
3535
private CheckBox checkboxEnableAlert;
3636
private CheckBox checkboxAllDay;
3737
private CheckBox checkboxEnableReraise;
38+
private CheckBox checkboxOverrideSilent;
3839
private String audioPath; // Local representation of the path to the sound file
3940
private EditText alertMp3File; // Sound file title
4041

@@ -74,6 +75,7 @@ protected void onCreate(Bundle savedInstanceState) {
7475
buttonalertMp3 = (Button)findViewById(R.id.Button_mra_mp3_file);
7576
checkboxAllDay = (CheckBox) findViewById(R.id.missed_reading_all_day);
7677
checkboxEnableAlert = (CheckBox) findViewById(R.id.missed_reading_enable_alert);
78+
checkboxOverrideSilent = (CheckBox) findViewById(R.id.bg_missed_alerts_override_silent);
7779
checkboxEnableReraise = (CheckBox) findViewById(R.id.missed_reading_enable_alerts_reraise);
7880
/** xDrip used to use the other alerts sound file for the missed readings alert.
7981
* To avoid causing an unexpected behavior for a previous user of xDrip, the missed reading alert
@@ -104,11 +106,13 @@ protected void onCreate(Bundle savedInstanceState) {
104106
boolean enableAlert = prefs.getBoolean("bg_missed_alerts",false);
105107
boolean allDay = prefs.getBoolean("missed_readings_all_day",true);
106108
boolean enableReraise = prefs.getBoolean("bg_missed_alerts_enable_alerts_reraise",false);
109+
boolean overrideSilentMode = prefs.getBoolean("bg_missed_alerts_override_silent", false);
107110
audioPath = Pref.getString("bg_missed_alerts_sound", null);
108111

109112
checkboxAllDay.setChecked(allDay);
110113
checkboxEnableAlert.setChecked(enableAlert);
111114
checkboxEnableReraise.setChecked(enableReraise);
115+
checkboxOverrideSilent.setChecked(overrideSilentMode);
112116

113117
startHour = AlertType.time2Hours(startMinutes);
114118
startMinute = AlertType.time2Minutes(startMinutes);
@@ -142,6 +146,7 @@ public void onDestroy() {
142146
prefs.edit().putBoolean("bg_missed_alerts", checkboxEnableAlert.isChecked()).apply();
143147
prefs.edit().putBoolean("missed_readings_all_day", checkboxAllDay.isChecked()).apply();
144148
prefs.edit().putBoolean("bg_missed_alerts_enable_alerts_reraise", checkboxEnableReraise.isChecked()).apply();
149+
prefs.edit().putBoolean("bg_missed_alerts_override_silent", checkboxOverrideSilent.isChecked()).apply();
145150

146151
MissedReadingService.delayedLaunch();
147152
// context.startService(new Intent(context, MissedReadingService.class));
@@ -157,6 +162,7 @@ void EnableControls(boolean enabled) {
157162
timeInstructions.setEnabled(enabled);
158163
checkboxAllDay.setEnabled(enabled);
159164
checkboxEnableReraise.setEnabled(enabled);
165+
checkboxOverrideSilent.setEnabled(enabled);
160166
bgMissedMinutes.setEnabled(enabled);
161167
bgMissedSnoozeMin.setEnabled(enabled);
162168
bgMissedReraiseSec.setEnabled(enabled);
@@ -211,6 +217,13 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
211217
}
212218
});
213219

220+
checkboxOverrideSilent.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
221+
// @Override
222+
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
223+
enableAllControls();
224+
}
225+
});
226+
214227

215228
View.OnClickListener startTimeListener = new View.OnClickListener() {
216229

app/src/main/java/com/eveningoutpost/dexdrip/utilitymodels/IdempotentMigrations.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public void performAll() {
6565
CompatibleApps.notifyAboutCompatibleApps();
6666
legacySettingsMoveLanguageFromNoToNb();
6767
prefSettingRangeVerification();
68+
inheritPrefSettingsAfterUpdate();
6869

6970
}
7071

@@ -181,4 +182,15 @@ private static void prefSettingRangeVerification() {
181182
Preferences.applyPrefSettingRange("forecast_low_threshold", "70", MIN_GLUCOSE_INPUT, MAX_GLUCOSE_INPUT);
182183
}
183184

185+
// Set new settings such that a version update does not cause a surprise
186+
private static void inheritPrefSettingsAfterUpdate() {
187+
if (!Pref.getBooleanDefaultFalse("has_been_explicitly_set_persistent_high_alert_override_silent")) { // If override silent mode has never been explicitly set for the Persistent High alert
188+
Pref.setBoolean("persistent_high_alert_override_silent", Pref.getBooleanDefaultFalse("other_alerts_override_silent")); // Inherit Persistent High override silent mode from other alerts
189+
Pref.setBoolean("bg_predict_alert_override_silent", Pref.getBooleanDefaultFalse("other_alerts_override_silent")); // Inherit Forecasted Low override silent mode from other alerts
190+
Pref.setBoolean("bg_missed_alerts_override_silent", Pref.getBooleanDefaultFalse("other_alerts_override_silent")); // Inherit Missed Reading override silent mode from other alerts
191+
Pref.setBoolean("has_been_explicitly_set_persistent_high_alert_override_silent", true); // Set this setting so that we never inherit again.
192+
}
193+
//
194+
}
195+
184196
}

app/src/main/java/com/eveningoutpost/dexdrip/utilitymodels/Notifications.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -969,6 +969,7 @@ private static void OtherAlert(Context context, String type, String title, Strin
969969
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
970970
String otherAlertsSound = prefs.getString(type+"_sound",prefs.getString("other_alerts_sound", "content://settings/system/notification_sound"));
971971
Boolean otherAlertsOverrideSilent = prefs.getBoolean("other_alerts_override_silent", false);
972+
Boolean extraAlertsOverrideSilent = prefs.getBoolean(type+"_override_silent", otherAlertsOverrideSilent); // Inherit from other alerts if the alert itself does not have a dedicated setting
972973

973974
Log.d(TAG,"OtherAlert called " + type + " " + message + " reraiseSec = " + reraiseSec);
974975
UserNotification userNotification = UserNotification.GetNotificationByType(type); //"bg_unclear_readings_alert"
@@ -1008,10 +1009,11 @@ private static void OtherAlert(Context context, String type, String title, Strin
10081009
mBuilder.setVibrate(vibratePattern);
10091010
mBuilder.setLights(0xff00ff00, 300, 1000);
10101011
if (AlertPlayer.notSilencedDueToCall()) {
1011-
if (otherAlertsOverrideSilent && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
1012+
if (extraAlertsOverrideSilent) {
10121013
mBuilder.setSound(Uri.parse(otherAlertsSound), AudioAttributes.USAGE_ALARM);
10131014
} else {
10141015
mBuilder.setSound(Uri.parse(otherAlertsSound));
1016+
Log.ueh(TAG, "No " + type + " in silent mode");
10151017
}
10161018
}
10171019
NotificationManager mNotifyMgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

app/src/main/res/layout/activity_missed_readings.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,17 @@
303303
android:text="@string/choose_file"
304304
android:textAllCaps="false" />
305305

306+
<CheckBox
307+
android:id="@+id/bg_missed_alerts_override_silent"
308+
android:layout_width="wrap_content"
309+
android:layout_height="wrap_content"
310+
android:text="@string/override_silent_mode"
311+
android:textSize="15sp"
312+
android:padding="5dp"
313+
android:layout_gravity="left"
314+
android:layout_marginLeft="10dp"
315+
android:gravity="left" />
316+
306317
</LinearLayout>
307318

308319
</LinearLayout>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -807,7 +807,7 @@
807807
<string name="calibrations_request_time_time_difference">How many hours between calibration requests</string>
808808
<string name="hours_between_calibrations">Hours between calibrations</string>
809809
<string name="calibrations_sound">Set sound used for calibration requests.</string>
810-
<string name="override_silent_mode">Override Silent mode</string>
810+
<string name="override_silent_mode">Override Silent Mode</string>
811811
<string name="even_when_charging">Even when charging</string>
812812
<string name="no_calibration_requests_charging">Uncheck to not ask for calibrations when phone is charging</string>
813813
<string name="keep_alert_no_calibration">Keep alerting if no calibration is performed</string>

app/src/main/res/xml/pref_notifications.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,10 @@
343343
android:showSilent="true"
344344
android:summary="@string/choose_sound_used_for_persistent_high_alarm"
345345
android:title="@string/persistent_high_sound" />
346+
<CheckBoxPreference
347+
android:defaultValue="false"
348+
android:key="persistent_high_alert_override_silent"
349+
android:title="@string/override_silent_mode" />
346350
</PreferenceScreen>
347351
<PreferenceScreen
348352
android:key="@string/forecasted_low_alert"
@@ -388,6 +392,10 @@
388392
android:showSilent="true"
389393
android:summary="@string/choose_sound_used_for_predicted_low_alarm"
390394
android:title="@string/predicted_low_sound" />
395+
<CheckBoxPreference
396+
android:defaultValue="false"
397+
android:key="bg_predict_alert_override_silent"
398+
android:title="@string/override_silent_mode" />
391399
</PreferenceScreen>
392400
<PreferenceScreen
393401
android:key="@string/title_sens_expiry"

0 commit comments

Comments
 (0)