diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e0e2a6b05b..861ee368ca 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" package="info.nightscout.androidaps"> + diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopPlugin.java index 0c27aeac44..6b075a1b0f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/LoopPlugin.java @@ -7,7 +7,6 @@ import android.app.PendingIntent; import android.app.TaskStackBuilder; import android.content.Context; import android.content.Intent; -import android.os.Build; import android.os.SystemClock; import androidx.core.app.NotificationCompat; @@ -185,12 +184,12 @@ public class LoopPlugin extends PluginBase implements LoopInterface { .observeOn(Schedulers.io()) .subscribe(event -> invoke("EventTempTargetChange", true), fabricPrivacy::logException) ); - /** - * This method is triggered once autosens calculation has completed, so the LoopPlugin - * has current data to work with. However, autosens calculation can be triggered by multiple - * sources and currently only a new BG should trigger a loop run. Hence we return early if - * the event causing the calculation is not EventNewBg. - *

+ /* + This method is triggered once autosens calculation has completed, so the LoopPlugin + has current data to work with. However, autosens calculation can be triggered by multiple + sources and currently only a new BG should trigger a loop run. Hence we return early if + the event causing the calculation is not EventNewBg. +

*/ disposable.add(rxBus .toObservable(EventAutosensCalculationFinished.class) @@ -212,15 +211,12 @@ public class LoopPlugin extends PluginBase implements LoopInterface { } private void createNotificationChannel() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - - NotificationManager mNotificationManager = - (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - @SuppressLint("WrongConstant") NotificationChannel channel = new NotificationChannel(CHANNEL_ID, - CHANNEL_ID, - NotificationManager.IMPORTANCE_HIGH); - mNotificationManager.createNotificationChannel(channel); - } + NotificationManager mNotificationManager = + (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + @SuppressLint("WrongConstant") NotificationChannel channel = new NotificationChannel(CHANNEL_ID, + CHANNEL_ID, + NotificationManager.IMPORTANCE_HIGH); + mNotificationManager.createNotificationChannel(channel); } @Override @@ -240,10 +236,6 @@ public class LoopPlugin extends PluginBase implements LoopInterface { } } - public long suspendedTo() { - return loopSuspendedTill; - } - public void suspendTo(long endTime) { loopSuspendedTill = endTime; isSuperBolus = false; @@ -341,8 +333,9 @@ public class LoopPlugin extends PluginBase implements LoopInterface { } return isDisconnected; } + public boolean treatmentTimethreshold(int duartionMinutes) { - long threshold = System.currentTimeMillis() + (duartionMinutes*60*1000); + long threshold = System.currentTimeMillis() + (duartionMinutes * 60 * 1000); boolean bool = false; if (treatmentsPlugin.getLastBolusTime() > threshold || treatmentsPlugin.getLastCarbTime() > threshold) bool = true; @@ -414,7 +407,7 @@ public class LoopPlugin extends PluginBase implements LoopInterface { // safety check for multiple SMBs long lastBolusTime = treatmentsPlugin.getLastBolusTime(); if (lastBolusTime != 0 && lastBolusTime + T.mins(3).msecs() > System.currentTimeMillis()) { - getAapsLogger().debug(LTag.APS, "SMB requsted but still in 3 min interval"); + getAapsLogger().debug(LTag.APS, "SMB requested but still in 3 min interval"); resultAfterConstraints.smb = 0; } @@ -456,31 +449,31 @@ public class LoopPlugin extends PluginBase implements LoopInterface { && resultAfterConstraints.carbsReq >= sp.getInt(R.string.key_smb_enable_carbs_suggestions_threshold, 0) && carbsSuggestionsSuspendedUntil < System.currentTimeMillis() && !treatmentTimethreshold(-15)) { - if (sp.getBoolean(R.string.key_enable_carbs_required_alert_local,true) && !sp.getBoolean(R.string.key_raise_notifications_as_android_notifications, false)) { + if (sp.getBoolean(R.string.key_enable_carbs_required_alert_local, true) && !sp.getBoolean(R.string.key_raise_notifications_as_android_notifications, false)) { Notification carbreqlocal = new Notification(Notification.CARBS_REQUIRED, resultAfterConstraints.getCarbsRequiredText(), Notification.NORMAL); rxBus.send(new EventNewNotification(carbreqlocal)); } if (sp.getBoolean(R.string.key_ns_create_announcements_from_carbs_req, false)) { nsUpload.uploadError(resultAfterConstraints.getCarbsRequiredText()); } - if (sp.getBoolean(R.string.key_enable_carbs_required_alert_local,true) && sp.getBoolean(R.string.key_raise_notifications_as_android_notifications, false)){ + if (sp.getBoolean(R.string.key_enable_carbs_required_alert_local, true) && sp.getBoolean(R.string.key_raise_notifications_as_android_notifications, false)) { Intent intentAction5m = new Intent(context, CarbSuggestionReceiver.class); intentAction5m.putExtra("ignoreDuration", 5); PendingIntent pendingIntent5m = PendingIntent.getBroadcast(context, 1, intentAction5m, PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Action actionIgnore5m = new - NotificationCompat.Action(R.drawable.ic_notif_aaps, resourceHelper.gs(R.string.ignore5m,"Ignore 5m"), pendingIntent5m); + NotificationCompat.Action(R.drawable.ic_notif_aaps, resourceHelper.gs(R.string.ignore5m, "Ignore 5m"), pendingIntent5m); Intent intentAction15m = new Intent(context, CarbSuggestionReceiver.class); intentAction15m.putExtra("ignoreDuration", 15); PendingIntent pendingIntent15m = PendingIntent.getBroadcast(context, 1, intentAction15m, PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Action actionIgnore15m = new - NotificationCompat.Action(R.drawable.ic_notif_aaps, resourceHelper.gs(R.string.ignore15m,"Ignore 15m"), pendingIntent15m); + NotificationCompat.Action(R.drawable.ic_notif_aaps, resourceHelper.gs(R.string.ignore15m, "Ignore 15m"), pendingIntent15m); Intent intentAction30m = new Intent(context, CarbSuggestionReceiver.class); intentAction30m.putExtra("ignoreDuration", 30); PendingIntent pendingIntent30m = PendingIntent.getBroadcast(context, 1, intentAction30m, PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Action actionIgnore30m = new - NotificationCompat.Action(R.drawable.ic_notif_aaps, resourceHelper.gs(R.string.ignore30m,"Ignore 30m"), pendingIntent30m); + NotificationCompat.Action(R.drawable.ic_notif_aaps, resourceHelper.gs(R.string.ignore30m, "Ignore 30m"), pendingIntent30m); NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID); builder.setSmallIcon(R.drawable.notif_icon) @@ -511,7 +504,7 @@ public class LoopPlugin extends PluginBase implements LoopInterface { } else { //If carbs were required previously, but are no longer needed, dismiss notifications - if ( prevCarbsreq > 0 ) { + if (prevCarbsreq > 0) { dismissSuggestion(); rxBus.send(new EventDismissNotification(Notification.CARBS_REQUIRED)); } @@ -591,8 +584,8 @@ public class LoopPlugin extends PluginBase implements LoopInterface { } } - public void disableCarbSuggestions(int duartionMinutes) { - carbsSuggestionsSuspendedUntil = System.currentTimeMillis() + (duartionMinutes*60*1000); + public void disableCarbSuggestions(int durationMinutes) { + carbsSuggestionsSuspendedUntil = System.currentTimeMillis() + (durationMinutes * 60 * 1000); dismissSuggestion(); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/openhumans/OpenHumansUploader.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/openhumans/OpenHumansUploader.kt index af530665f0..eefaa2963e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/openhumans/OpenHumansUploader.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/openhumans/OpenHumansUploader.kt @@ -85,6 +85,7 @@ class OpenHumansUploader @Inject constructor( } private val openHumansAPI = OpenHumansAPI(OPEN_HUMANS_URL, CLIENT_ID, CLIENT_SECRET, REDIRECT_URL) + @Suppress("PrivatePropertyName") private val FILE_NAME_DATE_FORMAT = SimpleDateFormat("yyyyMMdd'T'HHmmss", Locale.US).apply { timeZone = TimeZone.getTimeZone("UTC") } private var isSetup @@ -126,12 +127,12 @@ class OpenHumansUploader @Inject constructor( private val appId: UUID get() { val id = sp.getStringOrNull("openhumans_appid", null) - if (id == null) { + return if (id == null) { val generated = UUID.randomUUID() sp.putString("openhumans_appid", generated.toString()) - return generated + generated } else { - return UUID.fromString(id) + UUID.fromString(id) } } @@ -140,7 +141,7 @@ class OpenHumansUploader @Inject constructor( private val wakeLock = (context.getSystemService(Context.POWER_SERVICE) as PowerManager) .newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "AndroidAPS::OpenHumans") - val preferenceChangeDisposable = CompositeDisposable() + private val preferenceChangeDisposable = CompositeDisposable() override fun onStart() { super.onStart() @@ -453,7 +454,8 @@ class OpenHumansUploader @Inject constructor( aapsLogger.error(LTag.OHUPLOADER, "Segmental upload exceptional", it) } - fun uploadData(maxEntries: Long?): Completable = gatherData(maxEntries) + @Suppress("SameParameterValue") + private fun uploadData(maxEntries: Long?): Completable = gatherData(maxEntries) .flatMap { data -> refreshAccessTokensIfNeeded().map { accessToken -> accessToken to data } } .flatMap { uploadFile(it.first, it.second).andThen(Single.just(it.second)) } .flatMapCompletable { @@ -616,14 +618,12 @@ class OpenHumansUploader @Inject constructor( } private fun setupNotificationChannel() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - val notificationManagerCompat = NotificationManagerCompat.from(context) - notificationManagerCompat.createNotificationChannel(NotificationChannel( - NOTIFICATION_CHANNEL, - resourceHelper.gs(R.string.open_humans), - NotificationManager.IMPORTANCE_DEFAULT - )) - } + val notificationManagerCompat = NotificationManagerCompat.from(context) + notificationManagerCompat.createNotificationChannel(NotificationChannel( + NOTIFICATION_CHANNEL, + resourceHelper.gs(R.string.open_humans), + NotificationManager.IMPORTANCE_DEFAULT + )) } private class UploadData( @@ -633,6 +633,7 @@ class OpenHumansUploader @Inject constructor( val highestQueueId: Long? ) + @Suppress("PrivatePropertyName") private val HEX_DIGITS = "0123456789ABCDEF".toCharArray() private fun ByteArray.toHexString(): String { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationStore.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationStore.kt index 35fd71c6e8..9d23950e53 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationStore.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/NotificationStore.kt @@ -8,7 +8,6 @@ import android.content.Context import android.content.Intent import android.media.AudioManager import android.media.RingtoneManager -import android.os.Build import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -132,14 +131,12 @@ class NotificationStore @Inject constructor( } fun createNotificationChannel() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - usesChannels = true - val mNotificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager - @SuppressLint("WrongConstant") val channel = NotificationChannel(CHANNEL_ID, - CHANNEL_ID, - NotificationManager.IMPORTANCE_HIGH) - mNotificationManager.createNotificationChannel(channel) - } + usesChannels = true + val mNotificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + @SuppressLint("WrongConstant") val channel = NotificationChannel(CHANNEL_ID, + CHANNEL_ID, + NotificationManager.IMPORTANCE_HIGH) + mNotificationManager.createNotificationChannel(channel) } @Synchronized @@ -162,16 +159,6 @@ class NotificationStore @Inject constructor( return clone } - /* - private fun unSnooze() { - if (sp.getBoolean(R.string.key_nsalarm_staledata, false)) { - val notification = Notification(Notification.NSALARM, resourceHelper.gs(R.string.nsalarm_staledata), Notification.URGENT) - sp.putLong(R.string.key_snoozedTo, System.currentTimeMillis()) - add(notification) - aapsLogger.debug(LTag.NOTIFICATION, "Snoozed to current time and added back notification!") - } - } - */ inner class NotificationRecyclerViewAdapter internal constructor(private val notificationsList: List) : RecyclerView.Adapter() { override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): NotificationsViewHolder { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.kt b/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.kt index 20bb7a010a..385247ce43 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/persistentNotification/PersistentNotificationPlugin.kt @@ -5,7 +5,6 @@ import android.app.NotificationManager import android.app.PendingIntent import android.content.Context import android.content.Intent -import android.os.Build import androidx.core.app.NotificationCompat import androidx.core.app.RemoteInput import androidx.core.app.TaskStackBuilder @@ -106,11 +105,9 @@ class PersistentNotificationPlugin @Inject constructor( } private fun createNotificationChannel() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - val mNotificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager - val channel = NotificationChannel(notificationHolder.channelID, notificationHolder.channelID as CharSequence, NotificationManager.IMPORTANCE_HIGH) - mNotificationManager.createNotificationChannel(channel) - } + val mNotificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + val channel = NotificationChannel(notificationHolder.channelID, notificationHolder.channelID as CharSequence, NotificationManager.IMPORTANCE_HIGH) + mNotificationManager.createNotificationChannel(channel) } override fun onStop() { @@ -121,10 +118,7 @@ class PersistentNotificationPlugin @Inject constructor( private fun triggerNotificationUpdate() { updateNotification() - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) - context.startForegroundService(Intent(context, DummyService::class.java)) - else - context.startService(Intent(context, DummyService::class.java)) + context.startForegroundService(Intent(context, DummyService::class.java)) } private fun updateNotification() { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightPlugin.java index c02404ff69..2459c7a4fa 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightPlugin.java @@ -6,7 +6,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; -import android.os.Build; import android.os.Handler; import android.os.IBinder; import android.os.Looper; @@ -57,7 +56,6 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper; import info.nightscout.androidaps.plugins.common.ManufacturerType; import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction; import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType; -import info.nightscout.androidaps.queue.commands.CustomCommand; import info.nightscout.androidaps.plugins.general.nsclient.NSUpload; import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue; import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification; @@ -135,6 +133,7 @@ import info.nightscout.androidaps.plugins.pump.insight.exceptions.app_layer_erro import info.nightscout.androidaps.plugins.pump.insight.utils.ExceptionTranslator; import info.nightscout.androidaps.plugins.pump.insight.utils.ParameterBlockUtil; import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin; +import info.nightscout.androidaps.queue.commands.CustomCommand; import info.nightscout.androidaps.utils.DateUtil; import info.nightscout.androidaps.utils.TimeChangeType; import info.nightscout.androidaps.utils.resources.ResourceHelper; @@ -294,12 +293,10 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface, } private void createNotificationChannel() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - NotificationChannel channel = new NotificationChannel(ALERT_CHANNEL_ID, resourceHelper.gs(R.string.insight_alert_notification_channel), NotificationManager.IMPORTANCE_HIGH); - channel.setSound(null, null); - notificationManager.createNotificationChannel(channel); - } + NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + NotificationChannel channel = new NotificationChannel(ALERT_CHANNEL_ID, resourceHelper.gs(R.string.insight_alert_notification_channel), NotificationManager.IMPORTANCE_HIGH); + channel.setSound(null, null); + notificationManager.createNotificationChannel(channel); } @Override @@ -600,7 +597,7 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface, bolusMessage.setDuration(0); bolusMessage.setExtendedAmount(0); bolusMessage.setImmediateAmount(insulin); - bolusMessage.setVibration(sp.getBoolean(detailedBolusInfo.isSMB ? R.string.key_disable_vibration_auto : R.string.key_disable_vibration ,false)); + bolusMessage.setVibration(sp.getBoolean(detailedBolusInfo.isSMB ? R.string.key_disable_vibration_auto : R.string.key_disable_vibration, false)); bolusID = connectionService.requestMessage(bolusMessage).await().getBolusId(); bolusCancelled = false; } @@ -724,8 +721,8 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface, PumpEnactResult cancelTBRResult = cancelTempBasalOnly(); if (cancelTBRResult.success) { PumpEnactResult ebResult = setExtendedBolusOnly((absoluteRate - getBaseBasalRate()) / 60D - * ((double) durationInMinutes), durationInMinutes, - sp.getBoolean(R.string.key_disable_vibration_auto,false)); + * ((double) durationInMinutes), durationInMinutes, + sp.getBoolean(R.string.key_disable_vibration_auto, false)); if (ebResult.success) { result.success = true; result.enacted = true; @@ -803,7 +800,8 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface, @NonNull @Override public PumpEnactResult setExtendedBolus(Double insulin, Integer durationInMinutes) { PumpEnactResult result = cancelExtendedBolusOnly(); - if (result.success) result = setExtendedBolusOnly(insulin, durationInMinutes, sp.getBoolean(R.string.key_disable_vibration,false)); + if (result.success) + result = setExtendedBolusOnly(insulin, durationInMinutes, sp.getBoolean(R.string.key_disable_vibration, false)); try { fetchStatus(); readHistory(); diff --git a/app/src/main/java/info/nightscout/androidaps/receivers/AutoStartReceiver.kt b/app/src/main/java/info/nightscout/androidaps/receivers/AutoStartReceiver.kt index 7b2eb03f96..1260299f09 100644 --- a/app/src/main/java/info/nightscout/androidaps/receivers/AutoStartReceiver.kt +++ b/app/src/main/java/info/nightscout/androidaps/receivers/AutoStartReceiver.kt @@ -3,16 +3,12 @@ package info.nightscout.androidaps.receivers import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import android.os.Build import info.nightscout.androidaps.plugins.general.persistentNotification.DummyService class AutoStartReceiver : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { - if (intent.action == Intent.ACTION_BOOT_COMPLETED) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) - context.startForegroundService(Intent(context, DummyService::class.java)) - else - context.startService(Intent(context, DummyService::class.java)) - } + if (intent.action == Intent.ACTION_BOOT_COMPLETED) + context.startForegroundService(Intent(context, DummyService::class.java)) } } \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/utils/AndroidPermission.kt b/app/src/main/java/info/nightscout/androidaps/utils/AndroidPermission.kt index b2d294da1a..a2afdb1c19 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/AndroidPermission.kt +++ b/app/src/main/java/info/nightscout/androidaps/utils/AndroidPermission.kt @@ -35,6 +35,7 @@ class AndroidPermission @Inject constructor( ) { companion object { + const val CASE_STORAGE = 0x1 const val CASE_SMS = 0x2 const val CASE_LOCATION = 0x3 @@ -103,13 +104,11 @@ class AndroidPermission @Inject constructor( rxBus.send(EventNewNotification(notification)) } else rxBus.send(EventDismissNotification(Notification.PERMISSION_SMS)) // Following is a bug in Android 8 - if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O) { - if (permissionNotGranted(activity, Manifest.permission.READ_PHONE_STATE)) { - val notification = NotificationWithAction(injector, Notification.PERMISSION_PHONESTATE, resourceHelper.gs(R.string.smscommunicator_missingphonestatepermission), Notification.URGENT) - notification.action(R.string.request, Runnable { askForPermission(activity, arrayOf(Manifest.permission.READ_PHONE_STATE), CASE_PHONE_STATE) }) - rxBus.send(EventNewNotification(notification)) - } else rxBus.send(EventDismissNotification(Notification.PERMISSION_PHONESTATE)) - } + if (permissionNotGranted(activity, Manifest.permission.READ_PHONE_STATE)) { + val notification = NotificationWithAction(injector, Notification.PERMISSION_PHONESTATE, resourceHelper.gs(R.string.smscommunicator_missingphonestatepermission), Notification.URGENT) + notification.action(R.string.request, Runnable { askForPermission(activity, arrayOf(Manifest.permission.READ_PHONE_STATE), CASE_PHONE_STATE) }) + rxBus.send(EventNewNotification(notification)) + } else rxBus.send(EventDismissNotification(Notification.PERMISSION_PHONESTATE)) } } diff --git a/core/src/main/java/info/nightscout/androidaps/services/AlarmSoundServiceHelper.kt b/core/src/main/java/info/nightscout/androidaps/services/AlarmSoundServiceHelper.kt index 243dcb5872..a01106c5b0 100644 --- a/core/src/main/java/info/nightscout/androidaps/services/AlarmSoundServiceHelper.kt +++ b/core/src/main/java/info/nightscout/androidaps/services/AlarmSoundServiceHelper.kt @@ -6,6 +6,7 @@ import android.content.Intent import android.content.ServiceConnection import android.os.Build import android.os.IBinder +import androidx.annotation.RequiresApi import info.nightscout.androidaps.interfaces.NotificationHolderInterface import javax.inject.Inject import javax.inject.Singleton @@ -20,6 +21,7 @@ import javax.inject.Singleton Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{e317f7e u0 info.nightscout.nsclient/info.nightscout.androidaps.services.AlarmSoundService} */ +@RequiresApi(Build.VERSION_CODES.O) @Singleton class AlarmSoundServiceHelper @Inject constructor( private val notificationHolder: NotificationHolderInterface @@ -33,10 +35,7 @@ class AlarmSoundServiceHelper @Inject constructor( val alarmSoundService: AlarmSoundService = binder.getService() - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) - context.startForegroundService(getServiceIntent(context, sound)) - else - context.startService(getServiceIntent(context, sound)) + context.startForegroundService(getServiceIntent(context, sound)) // This is the key: Without waiting Android Framework to call this method // inside Service.onCreate(), immediately call here to post the notification. @@ -47,7 +46,6 @@ class AlarmSoundServiceHelper @Inject constructor( } override fun onServiceDisconnected(name: ComponentName?) { - TODO("Not yet implemented") } } @@ -58,10 +56,7 @@ class AlarmSoundServiceHelper @Inject constructor( // Just call startForegroundService instead since we cannot bind a service to a // broadcast receiver context. The service also have to call startForeground in // this case. - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) - context.startForegroundService(getServiceIntent(context, sound)) - else - context.startService(getServiceIntent(context, sound)) + context.startForegroundService(getServiceIntent(context, sound)) } } diff --git a/core/src/main/java/info/nightscout/androidaps/utils/protection/PasswordCheck.kt b/core/src/main/java/info/nightscout/androidaps/utils/protection/PasswordCheck.kt index 79e270f012..1efe3a9ff6 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/protection/PasswordCheck.kt +++ b/core/src/main/java/info/nightscout/androidaps/utils/protection/PasswordCheck.kt @@ -7,6 +7,7 @@ import android.view.LayoutInflater import android.view.View import android.widget.EditText import android.widget.TextView +import androidx.annotation.RequiresApi import androidx.annotation.StringRes import info.nightscout.androidaps.core.R import info.nightscout.androidaps.utils.CryptoUtil @@ -19,6 +20,7 @@ import javax.inject.Singleton // since androidx.autofill.HintConstants are not available const val AUTOFILL_HINT_NEW_PASSWORD = "newPassword" +@RequiresApi(Build.VERSION_CODES.O) @Singleton class PasswordCheck @Inject constructor( val sp: SP, @@ -45,11 +47,9 @@ class PasswordCheck @Inject constructor( userInput2.visibility = View.GONE - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - val autoFillHintPasswordKind = context.getString(preference) - userInput.setAutofillHints(View.AUTOFILL_HINT_PASSWORD, "aaps_${autoFillHintPasswordKind}") - userInput.importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_YES - } + val autoFillHintPasswordKind = context.getString(preference) + userInput.setAutofillHints(View.AUTOFILL_HINT_PASSWORD, "aaps_${autoFillHintPasswordKind}") + userInput.importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_YES alertDialogBuilder .setCancelable(false) @@ -80,11 +80,9 @@ class PasswordCheck @Inject constructor( val userInput = promptsView.findViewById(R.id.password_prompt_pass) as EditText val userInput2 = promptsView.findViewById(R.id.password_prompt_pass_confirm) as EditText - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - val autoFillHintPasswordKind = context.getString(preference) - userInput.setAutofillHints(AUTOFILL_HINT_NEW_PASSWORD, "aaps_${autoFillHintPasswordKind}") - userInput.importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_YES - } + val autoFillHintPasswordKind = context.getString(preference) + userInput.setAutofillHints(AUTOFILL_HINT_NEW_PASSWORD, "aaps_${autoFillHintPasswordKind}") + userInput.importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_YES alertDialogBuilder .setCancelable(false) @@ -145,11 +143,9 @@ class PasswordCheck @Inject constructor( userInput2.visibility = View.GONE - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - val autoFillHintPasswordKind = context.getString(preference) - userInput.setAutofillHints(View.AUTOFILL_HINT_PASSWORD, "aaps_${autoFillHintPasswordKind}") - userInput.importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_YES - } + val autoFillHintPasswordKind = context.getString(preference) + userInput.setAutofillHints(View.AUTOFILL_HINT_PASSWORD, "aaps_${autoFillHintPasswordKind}") + userInput.importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_YES alertDialogBuilder .setCancelable(false)