package info.nightscout.androidaps.receivers import android.content.Context import android.content.Intent import android.content.IntentFilter import android.os.BatteryManager import dagger.android.DaggerBroadcastReceiver import info.nightscout.androidaps.events.EventChargingState import info.nightscout.androidaps.logging.AAPSLogger import info.nightscout.androidaps.logging.LTag import info.nightscout.androidaps.plugins.bus.RxBusWrapper import javax.inject.Inject class ChargingStateReceiver : DaggerBroadcastReceiver() { @Inject lateinit var aapsLogger: AAPSLogger @Inject lateinit var rxBus: RxBusWrapper @Inject lateinit var receiverStatusStore: ReceiverStatusStore override fun onReceive(context: Context, intent: Intent) { super.onReceive(context, intent) rxBus.send(grabChargingState(context)) aapsLogger.debug(LTag.CORE, receiverStatusStore.lastChargingEvent!!.toString()) } private fun grabChargingState(context: Context): EventChargingState { val batteryStatus: Intent? = IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { iFilter -> context.registerReceiver(null, iFilter) } val status: Int = batteryStatus?.getIntExtra(BatteryManager.EXTRA_STATUS, -1) ?: -1 val isCharging: Boolean = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL return EventChargingState(isCharging).also { receiverStatusStore.lastChargingEvent = it } } }