UploaderBatteryComplication -> kt
This commit is contained in:
parent
e2436fedcf
commit
60ea0421c8
2 changed files with 108 additions and 158 deletions
|
@ -1,158 +0,0 @@
|
|||
package info.nightscout.androidaps.complications;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
import android.graphics.drawable.Icon;
|
||||
import android.support.wearable.complications.ComplicationData;
|
||||
import android.support.wearable.complications.ComplicationText;
|
||||
|
||||
import androidx.annotation.DrawableRes;
|
||||
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.RawDisplayData;
|
||||
import info.nightscout.shared.logging.LTag;
|
||||
|
||||
/*
|
||||
* Created by dlvoy on 2019-11-12
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public class UploaderBatteryComplication extends BaseComplicationProviderService {
|
||||
|
||||
public ComplicationData buildComplicationData(int dataType, RawDisplayData raw, PendingIntent complicationPendingIntent) {
|
||||
|
||||
ComplicationData complicationData = null;
|
||||
|
||||
@DrawableRes int batteryIcon = R.drawable.ic_battery_unknown;
|
||||
@DrawableRes int burnInBatteryIcon = R.drawable.ic_battery_unknown_burnin;
|
||||
int level = 0;
|
||||
String levelStr = "???";
|
||||
|
||||
if (raw.getStatus().getBattery().matches("^[0-9]+$")) {
|
||||
try {
|
||||
level = Integer.parseInt(raw.getStatus().getBattery());
|
||||
level = Math.max(Math.min(level, 100), 0);
|
||||
levelStr = level + "%";
|
||||
int iconNo = (int) Math.floor(level / 10.0);
|
||||
if (level > 95) {
|
||||
iconNo = 10;
|
||||
}
|
||||
switch (iconNo) {
|
||||
case 10:
|
||||
batteryIcon = R.drawable.ic_battery_charging_wireless;
|
||||
break;
|
||||
case 9:
|
||||
batteryIcon = R.drawable.ic_battery_charging_wireless_90;
|
||||
break;
|
||||
case 8:
|
||||
batteryIcon = R.drawable.ic_battery_charging_wireless_80;
|
||||
break;
|
||||
case 7:
|
||||
batteryIcon = R.drawable.ic_battery_charging_wireless_70;
|
||||
break;
|
||||
case 6:
|
||||
batteryIcon = R.drawable.ic_battery_charging_wireless_60;
|
||||
break;
|
||||
case 5:
|
||||
batteryIcon = R.drawable.ic_battery_charging_wireless_50;
|
||||
break;
|
||||
case 4:
|
||||
batteryIcon = R.drawable.ic_battery_charging_wireless_40;
|
||||
break;
|
||||
case 3:
|
||||
batteryIcon = R.drawable.ic_battery_charging_wireless_30;
|
||||
break;
|
||||
case 2:
|
||||
batteryIcon = R.drawable.ic_battery_charging_wireless_20;
|
||||
break;
|
||||
case 1:
|
||||
batteryIcon = R.drawable.ic_battery_charging_wireless_10;
|
||||
break;
|
||||
case 0:
|
||||
batteryIcon = R.drawable.ic_battery_alert_variant_outline;
|
||||
break;
|
||||
default:
|
||||
batteryIcon = R.drawable.ic_battery_charging_wireless_outline;
|
||||
}
|
||||
|
||||
switch (iconNo) {
|
||||
case 10:
|
||||
burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_burnin;
|
||||
break;
|
||||
case 9:
|
||||
burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_90_burnin;
|
||||
break;
|
||||
case 8:
|
||||
burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_80_burnin;
|
||||
break;
|
||||
case 7:
|
||||
burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_70_burnin;
|
||||
break;
|
||||
case 6:
|
||||
burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_60_burnin;
|
||||
break;
|
||||
case 5:
|
||||
burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_50_burnin;
|
||||
break;
|
||||
case 4:
|
||||
burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_40_burnin;
|
||||
break;
|
||||
case 3:
|
||||
burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_30_burnin;
|
||||
break;
|
||||
case 2:
|
||||
burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_20_burnin;
|
||||
break;
|
||||
case 1:
|
||||
burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_10_burnin;
|
||||
break;
|
||||
case 0:
|
||||
burnInBatteryIcon = R.drawable.ic_battery_alert_variant_outline;
|
||||
break;
|
||||
default:
|
||||
burnInBatteryIcon = R.drawable.ic_battery_charging_wireless_outline;
|
||||
}
|
||||
|
||||
|
||||
} catch (NumberFormatException ex) {
|
||||
aapsLogger.error(LTag.WEAR, "Cannot parse battery level of: " + raw.getStatus().getBattery());
|
||||
}
|
||||
}
|
||||
|
||||
if (dataType == ComplicationData.TYPE_RANGED_VALUE) {
|
||||
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_RANGED_VALUE)
|
||||
.setMinValue(0)
|
||||
.setMaxValue(100)
|
||||
.setValue(level)
|
||||
.setShortText(ComplicationText.plainText(levelStr))
|
||||
.setIcon(Icon.createWithResource(this, batteryIcon))
|
||||
.setBurnInProtectionIcon(Icon.createWithResource(this, burnInBatteryIcon))
|
||||
.setTapAction(complicationPendingIntent);
|
||||
complicationData = builder.build();
|
||||
} else if (dataType == ComplicationData.TYPE_SHORT_TEXT) {
|
||||
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
|
||||
.setShortText(ComplicationText.plainText(levelStr))
|
||||
.setIcon(Icon.createWithResource(this, batteryIcon))
|
||||
.setBurnInProtectionIcon(Icon.createWithResource(this, burnInBatteryIcon))
|
||||
.setTapAction(complicationPendingIntent);
|
||||
complicationData = builder.build();
|
||||
} else if (dataType == ComplicationData.TYPE_ICON) {
|
||||
final ComplicationData.Builder builder = new ComplicationData.Builder(ComplicationData.TYPE_ICON)
|
||||
.setIcon(Icon.createWithResource(this, batteryIcon))
|
||||
.setBurnInProtectionIcon(Icon.createWithResource(this, burnInBatteryIcon))
|
||||
.setTapAction(complicationPendingIntent);
|
||||
complicationData = builder.build();
|
||||
} else {
|
||||
aapsLogger.warn(LTag.WEAR, "Unexpected complication type " + dataType);
|
||||
}
|
||||
return complicationData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getProviderCanonicalName() {
|
||||
return UploaderBatteryComplication.class.getCanonicalName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ComplicationAction getComplicationAction() {
|
||||
return ComplicationAction.STATUS;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,108 @@
|
|||
@file:Suppress("DEPRECATION")
|
||||
|
||||
package info.nightscout.androidaps.complications
|
||||
|
||||
import android.app.PendingIntent
|
||||
import android.graphics.drawable.Icon
|
||||
import android.support.wearable.complications.ComplicationData
|
||||
import android.support.wearable.complications.ComplicationText
|
||||
import androidx.annotation.DrawableRes
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.data.RawDisplayData
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import kotlin.math.floor
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
|
||||
/*
|
||||
* Created by dlvoy on 2019-11-12
|
||||
*/
|
||||
class UploaderBatteryComplication : BaseComplicationProviderService() {
|
||||
|
||||
override fun buildComplicationData(dataType: Int, raw: RawDisplayData, complicationPendingIntent: PendingIntent): ComplicationData? {
|
||||
var complicationData: ComplicationData? = null
|
||||
@DrawableRes var batteryIcon = R.drawable.ic_battery_unknown
|
||||
@DrawableRes var burnInBatteryIcon = R.drawable.ic_battery_unknown_burnin
|
||||
var level = 0
|
||||
var levelStr = "???"
|
||||
if (raw.status.battery.matches(Regex("^[0-9]+$"))) {
|
||||
try {
|
||||
level = raw.status.battery.toInt()
|
||||
level = max(min(level, 100), 0)
|
||||
levelStr = "$level%"
|
||||
var iconNo = floor(level / 10.0).toInt()
|
||||
if (level > 95) {
|
||||
iconNo = 10
|
||||
}
|
||||
batteryIcon = when (iconNo) {
|
||||
10 -> R.drawable.ic_battery_charging_wireless
|
||||
9 -> R.drawable.ic_battery_charging_wireless_90
|
||||
8 -> R.drawable.ic_battery_charging_wireless_80
|
||||
7 -> R.drawable.ic_battery_charging_wireless_70
|
||||
6 -> R.drawable.ic_battery_charging_wireless_60
|
||||
5 -> R.drawable.ic_battery_charging_wireless_50
|
||||
4 -> R.drawable.ic_battery_charging_wireless_40
|
||||
3 -> R.drawable.ic_battery_charging_wireless_30
|
||||
2 -> R.drawable.ic_battery_charging_wireless_20
|
||||
1 -> R.drawable.ic_battery_charging_wireless_10
|
||||
0 -> R.drawable.ic_battery_alert_variant_outline
|
||||
else -> R.drawable.ic_battery_charging_wireless_outline
|
||||
}
|
||||
burnInBatteryIcon = when (iconNo) {
|
||||
10 -> R.drawable.ic_battery_charging_wireless_burnin
|
||||
9 -> R.drawable.ic_battery_charging_wireless_90_burnin
|
||||
8 -> R.drawable.ic_battery_charging_wireless_80_burnin
|
||||
7 -> R.drawable.ic_battery_charging_wireless_70_burnin
|
||||
6 -> R.drawable.ic_battery_charging_wireless_60_burnin
|
||||
5 -> R.drawable.ic_battery_charging_wireless_50_burnin
|
||||
4 -> R.drawable.ic_battery_charging_wireless_40_burnin
|
||||
3 -> R.drawable.ic_battery_charging_wireless_30_burnin
|
||||
2 -> R.drawable.ic_battery_charging_wireless_20_burnin
|
||||
1 -> R.drawable.ic_battery_charging_wireless_10_burnin
|
||||
0 -> R.drawable.ic_battery_alert_variant_outline
|
||||
else -> R.drawable.ic_battery_charging_wireless_outline
|
||||
}
|
||||
} catch (ex: NumberFormatException) {
|
||||
aapsLogger.error(LTag.WEAR, "Cannot parse battery level of: " + raw.status.battery)
|
||||
}
|
||||
}
|
||||
when (dataType) {
|
||||
ComplicationData.TYPE_RANGED_VALUE -> {
|
||||
val builder = ComplicationData.Builder(ComplicationData.TYPE_RANGED_VALUE)
|
||||
.setMinValue(0f)
|
||||
.setMaxValue(100f)
|
||||
.setValue(level.toFloat())
|
||||
.setShortText(ComplicationText.plainText(levelStr))
|
||||
.setIcon(Icon.createWithResource(this, batteryIcon))
|
||||
.setBurnInProtectionIcon(Icon.createWithResource(this, burnInBatteryIcon))
|
||||
.setTapAction(complicationPendingIntent)
|
||||
complicationData = builder.build()
|
||||
}
|
||||
|
||||
ComplicationData.TYPE_SHORT_TEXT -> {
|
||||
val builder = ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
|
||||
.setShortText(ComplicationText.plainText(levelStr))
|
||||
.setIcon(Icon.createWithResource(this, batteryIcon))
|
||||
.setBurnInProtectionIcon(Icon.createWithResource(this, burnInBatteryIcon))
|
||||
.setTapAction(complicationPendingIntent)
|
||||
complicationData = builder.build()
|
||||
}
|
||||
|
||||
ComplicationData.TYPE_ICON -> {
|
||||
val builder = ComplicationData.Builder(ComplicationData.TYPE_ICON)
|
||||
.setIcon(Icon.createWithResource(this, batteryIcon))
|
||||
.setBurnInProtectionIcon(Icon.createWithResource(this, burnInBatteryIcon))
|
||||
.setTapAction(complicationPendingIntent)
|
||||
complicationData = builder.build()
|
||||
}
|
||||
|
||||
else -> {
|
||||
aapsLogger.warn(LTag.WEAR, "Unexpected complication type $dataType")
|
||||
}
|
||||
}
|
||||
return complicationData
|
||||
}
|
||||
|
||||
override fun getProviderCanonicalName(): String = UploaderBatteryComplication::class.java.canonicalName!!
|
||||
override fun getComplicationAction(): ComplicationAction = ComplicationAction.STATUS
|
||||
}
|
Loading…
Reference in a new issue