1+ package id.psw.floatstat
2+
3+ import android.content.BroadcastReceiver
4+ import android.content.Context
5+ import android.content.Intent
6+ import android.graphics.Color
7+ import android.os.BatteryManager
8+ import id.psw.floatstat.providers.BatteryStateData
9+
10+ class BatteryStateReceiver : BroadcastReceiver () {
11+ override fun onReceive (context : Context ? , intent : Intent ? ) {
12+ if (intent != null ){
13+ val level = intent.getIntExtra(BatteryManager .EXTRA_LEVEL , 0 ).toFloat()
14+ val scale = intent.getIntExtra(BatteryManager .EXTRA_SCALE , 0 ).toFloat()
15+ BatteryStateData .power = level / scale
16+ BatteryStateData .isCharging = intent.getIntExtra(
17+ BatteryManager .EXTRA_STATUS , - 1 ) == BatteryManager .BATTERY_STATUS_CHARGING
18+ BatteryStateData .temperature = intent.getIntExtra(
19+ BatteryManager .EXTRA_TEMPERATURE , - 1 )
20+
21+ BatteryStateData .percIcon = when {
22+ BatteryStateData .power < 0.15 -> InternalStatProviderService .IC_BATTERY_LOW
23+ BatteryStateData .isCharging -> InternalStatProviderService .IC_BATTERY_CHARGE
24+ else -> InternalStatProviderService .IC_BATTERY_LEVEL
25+ }
26+
27+ BatteryStateData .percColor = if (BatteryStateData .isCharging) Color .YELLOW else when (BatteryStateData .power){
28+ in 0.25f .. 0.3f -> Color .YELLOW
29+ in 0.15f .. 0.25f -> Color .rgb(255 ,128 ,0 )
30+ in 0.0f .. 0.15f -> Color .RED
31+ Float .NaN , Float .NEGATIVE_INFINITY , Float .POSITIVE_INFINITY -> Color .DKGRAY
32+ else -> Color .WHITE
33+ }
34+ val nrmTemp = BatteryStateData .temperature / 10.0f
35+ if (context is InternalStatProviderService ){
36+ BatteryStateData .tempColor = context.tempColor(nrmTemp)
37+ }
38+ }
39+ }
40+ }
0 commit comments