11package cn.entertech.ble.util
22
3- import com.orhanobut.logger.Logger
3+ import kotlin.math.exp
4+ import kotlin.math.max
5+ import kotlin.math.min
6+ import kotlin.math.pow
47
58/* *
69 * Created by EnterTech on 2018/2/8.
@@ -9,18 +12,29 @@ object BatteryUtil {
912
1013 fun getMinutesLeft (byte : Byte ): NapBattery {
1114 ((byte / 100.0 ) * (4.1 - 3.1 ) + 3.1 ).let {
12- val minutes = - 12050 * Math .pow(it, 4.0 ) + 137175 * Math .pow(it, 3.0 ) - 517145 * Math .pow(it, 2.0 ) + 644850 * it + 5034
13- // val minutes = 229607.31 * Math.pow(it, 4.0) - 3581456.13 * Math.pow(it, 3.0) + 20922054.15 * Math.pow(it, 2.0) - 54241619.24* it + 52651001.51
14- val percent = (minutes * 100 / (81 * 60 )).toInt()
15+ var a1 = 99.84
16+ var b1 = 4.244
17+ var c1 = 0.3781
18+ var a2 = 21.38
19+ var b2 = 3.953
20+ var c2 = 0.1685
21+ var a3 = 15.21
22+ var b3 = 3.813
23+ var c3 = 0.09208
24+ var q1 = a1 * exp(- ((it - b1) / c1).pow(2.0 ))
25+ var q2 = a2 * exp(- ((it - b2) / c2).pow(2.0 ))
26+ var q3 = a3 * exp(- ((it - b3) / c3).pow(2.0 ))
27+ var percent = (q1 + q2 + q3).toInt()
28+ percent = max(min(percent, 100 ), 0 )
29+ var minutes = 4.52 * percent
1530 val hours = (minutes / 60 ).toInt()
1631 val minutesLast = (minutes % 60 ).toInt()
17-
1832 return NapBattery (hours, minutesLast, percent)
1933 }
2034 }
2135}
2236
23- data class NapBattery (val hours : Int , val minutes : Int , val percent : Int ){
37+ data class NapBattery (val hours : Int , val minutes : Int , val percent : Int ) {
2438 override fun toString (): String {
2539 return " NapBattery(hours=$hours , minutes=$minutes , percent=$percent )"
2640 }
0 commit comments