use common data container

This commit is contained in:
AdrianLxM 2020-01-06 20:34:14 +01:00
parent 044c509027
commit e0c8f9dc26
5 changed files with 31 additions and 17 deletions

View file

@ -128,9 +128,9 @@ public class MainApp extends DaggerApplication {
public static boolean devBranch; public static boolean devBranch;
public static boolean engineeringMode; public static boolean engineeringMode;
private String CHANNEL_ID = "AndroidAPS-Ongoing"; private String CHANNEL_ID = "AndroidAPS-Ongoing"; // TODO: move to OngoingNotificationProvider (and dagger)
private int ONGOING_NOTIFICATION_ID = 4711; private int ONGOING_NOTIFICATION_ID = 4711; // TODO: move to OngoingNotificationProvider (and dagger)
private Notification notification; private Notification notification; // TODO: move to OngoingNotificationProvider (and dagger)
@Inject AAPSLogger aapsLogger; @Inject AAPSLogger aapsLogger;
@Inject ActivityMonitor activityMonitor; @Inject ActivityMonitor activityMonitor;

View file

@ -20,6 +20,7 @@ import info.nightscout.androidaps.plugins.general.automation.events.EventTrigger
import info.nightscout.androidaps.plugins.general.automation.events.EventTriggerRemove import info.nightscout.androidaps.plugins.general.automation.events.EventTriggerRemove
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.services.LastLocationDataContainer
import info.nightscout.androidaps.services.LocationService import info.nightscout.androidaps.services.LocationService
import info.nightscout.androidaps.utils.resources.ResourceHelper import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP import info.nightscout.androidaps.utils.sharedPreferences.SP
@ -34,7 +35,7 @@ abstract class Trigger(val mainApp: MainApp) {
@Inject lateinit var resourceHelper: ResourceHelper @Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var profileFunction: ProfileFunction @Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var sp: SP @Inject lateinit var sp: SP
@Inject lateinit var locationService: LocationService @Inject lateinit var locationDataContainer: LastLocationDataContainer
@Inject lateinit var treatmentsPlugin: TreatmentsPlugin @Inject lateinit var treatmentsPlugin: TreatmentsPlugin
@Inject lateinit var configBuilderPlugin: ConfigBuilderPlugin @Inject lateinit var configBuilderPlugin: ConfigBuilderPlugin
@Inject lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin @Inject lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin

View file

@ -20,10 +20,9 @@ class TriggerLocation(mainApp: MainApp) : Trigger(mainApp) {
var lastMode = InputLocationMode.Mode.INSIDE var lastMode = InputLocationMode.Mode.INSIDE
private val buttonAction = Runnable { private val buttonAction = Runnable {
val location = locationService.lastLocation locationDataContainer.lastLocation?.let {
if (location != null) { latitude.value = it.latitude
latitude.value = location.latitude longitude.value = it.longitude
longitude.value = location.longitude
aapsLogger.debug(LTag.AUTOMATION, String.format("Grabbed location: %f %f", latitude.value, longitude.value)) aapsLogger.debug(LTag.AUTOMATION, String.format("Grabbed location: %f %f", latitude.value, longitude.value))
} }
} }
@ -39,7 +38,7 @@ class TriggerLocation(mainApp: MainApp) : Trigger(mainApp) {
} }
@Synchronized override fun shouldRun(): Boolean { @Synchronized override fun shouldRun(): Boolean {
val location: Location = locationService.lastLocation ?: return false val location: Location = locationDataContainer.lastLocation ?: return false
val a = Location("Trigger") val a = Location("Trigger")
a.latitude = latitude.value a.latitude = latitude.value
a.longitude = longitude.value a.longitude = longitude.value
@ -98,7 +97,7 @@ class TriggerLocation(mainApp: MainApp) : Trigger(mainApp) {
.add(LabelWithElement(mainApp, resourceHelper.gs(R.string.longitude_short), "", longitude)) .add(LabelWithElement(mainApp, resourceHelper.gs(R.string.longitude_short), "", longitude))
.add(LabelWithElement(mainApp, resourceHelper.gs(R.string.distance_short), "", distance)) .add(LabelWithElement(mainApp, resourceHelper.gs(R.string.distance_short), "", distance))
.add(LabelWithElement(mainApp, resourceHelper.gs(R.string.location_mode), "", modeSelected)) .add(LabelWithElement(mainApp, resourceHelper.gs(R.string.location_mode), "", modeSelected))
.add(InputButton(mainApp, resourceHelper.gs(R.string.currentlocation), buttonAction), locationService.lastLocation != null) .add(InputButton(mainApp, resourceHelper.gs(R.string.currentlocation), buttonAction), locationDataContainer.lastLocation != null)
.build(root) .build(root)
} }

View file

@ -0,0 +1,14 @@
package info.nightscout.androidaps.services
import android.location.Location
import javax.inject.Inject
import javax.inject.Singleton
/**
* Created by adrian on 2020-01-06.
*/
@Singleton
class LastLocationDataContainer @Inject constructor() {
var lastLocation: Location? = null
}

View file

@ -26,12 +26,14 @@ import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import javax.inject.Inject import javax.inject.Inject
class LocationService @Inject constructor(): DaggerService() { class LocationService : DaggerService() {
@Inject lateinit var aapsLogger: AAPSLogger @Inject lateinit var aapsLogger: AAPSLogger
@Inject lateinit var rxBus: RxBusWrapper @Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var sp: SP @Inject lateinit var sp: SP
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var mainApp: MainApp @Inject lateinit var mainApp: MainApp
@Inject lateinit var lastLocationDataContainer: LastLocationDataContainer
private val disposable = CompositeDisposable() private val disposable = CompositeDisposable()
private var locationManager: LocationManager? = null private var locationManager: LocationManager? = null
@ -40,8 +42,6 @@ class LocationService @Inject constructor(): DaggerService() {
private val LOCATION_INTERVAL_ACTIVE = T.mins(5).msecs() private val LOCATION_INTERVAL_ACTIVE = T.mins(5).msecs()
private val LOCATION_INTERVAL_PASSIVE = T.mins(1).msecs() // this doesn't cost more power private val LOCATION_INTERVAL_PASSIVE = T.mins(1).msecs() // this doesn't cost more power
var lastLocation: Location? = null
companion object { companion object {
private const val LOCATION_DISTANCE = 10f private const val LOCATION_DISTANCE = 10f
} }
@ -54,7 +54,7 @@ class LocationService @Inject constructor(): DaggerService() {
override fun onLocationChanged(location: Location) { override fun onLocationChanged(location: Location) {
aapsLogger.debug(LTag.LOCATION, "onLocationChanged: $location") aapsLogger.debug(LTag.LOCATION, "onLocationChanged: $location")
lastLocation = location lastLocationDataContainer.lastLocation = location
rxBus.send(EventLocationChange(location)) rxBus.send(EventLocationChange(location))
} }
@ -73,17 +73,17 @@ class LocationService @Inject constructor(): DaggerService() {
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int { override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
super.onStartCommand(intent, flags, startId) super.onStartCommand(intent, flags, startId)
startForeground(mainApp.notificationId(), mainApp.getNotification()) startForeground(mainApp.notificationId(), mainApp.notification)
return Service.START_STICKY return Service.START_STICKY
} }
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
startForeground(mainApp.notificationId(), mainApp.getNotification()) startForeground(mainApp.notificationId(), mainApp.notification)
// Get last location once until we get regular update // Get last location once until we get regular update
LocationServices.getFusedLocationProviderClient(this).lastLocation.addOnSuccessListener { LocationServices.getFusedLocationProviderClient(this).lastLocation.addOnSuccessListener {
lastLocation = it lastLocationDataContainer.lastLocation = it
} }
initializeLocationManager() initializeLocationManager()