34 lines
1.5 KiB
Kotlin
34 lines
1.5 KiB
Kotlin
|
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 }
|
||
|
}
|
||
|
}
|